diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 412eeda..0000000 --- a/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..b1734a4 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,66 @@ +name: Deploy Astro site to Pages + +on: + push: + branches: ["main"] + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install pnpm + run: npm install -g pnpm + + - name: Install Dependencies + run: pnpm install + + - name: Add Sharp + run: pnpm add sharp + + - name: Build Astro + run: pnpm build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./dist + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + - name: Clear build artifacts + uses: geekyeggo/delete-artifact@v5 + with: + name: github-pages diff --git a/.gitignore b/.gitignore index 2aa50cf..16d54bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,216 +1,24 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -logos/ -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf +# build output +dist/ +# generated types +.astro/ -############# -## Windows detritus -############# +# dependencies +node_modules/ -# Windows image file caches -Thumbs.db -ehthumbs.db +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* -# Folder config file -Desktop.ini -# Recycle Bin used on file shares -$RECYCLE.BIN/ +# environment variables +.env +.env.production -# Mac crap +# macOS-specific files .DS_Store - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg +# jetbrains setting folder +.idea/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ae00c58..0000000 --- a/.gitmodules +++ /dev/null @@ -1,25 +0,0 @@ -[submodule "vendor/jquery"] - path = vendor/jquery - url = https://github.com/jquery/jquery-dist -[submodule "vendor/bootstrap"] - path = vendor/bootstrap - url = https://github.com/twbs/bootstrap - branch = main -[submodule "vendor/awesomplete"] - path = vendor/awesomplete - url = https://github.com/LeaVerou/awesomplete - branch = gh-pages -[submodule "vendor/lazyload"] - path = vendor/lazyload - url = https://github.com/verlok/lazyload -[submodule "vendor/bootstrap-social"] - path = vendor/bootstrap-social - url = https://github.com/lipis/bootstrap-social - branch = gh-pages -[submodule "vendor/baguetteBox.js"] - path = vendor/baguetteBox.js - url = https://github.com/feimosi/baguetteBox.js -[submodule "vendor/github-buttons"] - path = vendor/github-buttons - url = https://github.com/ntkme/github-buttons - branch = main diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..22a1505 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode"], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d642209 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4bb53b7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svg.preview.background": "editor" +} \ No newline at end of file diff --git a/CNAME b/CNAME deleted file mode 100644 index b30827a..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -fusionfix.io \ No newline at end of file diff --git a/.nojekyll b/README.md similarity index 100% rename from .nojekyll rename to README.md diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..3f12f25 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,26 @@ +import { defineConfig } from "astro/config"; +import tailwindcss from "@tailwindcss/vite"; +import icon from "astro-icon"; + +import svelte from "@astrojs/svelte"; + +// https://astro.build/config +export default defineConfig({ + site: "https://fusionfix.io", + base: "/", + + prefetch: { + defaultStrategy: "load", + prefetchAll: true, + }, + + image: { + remotePatterns: [{ protocol: "https" }], + }, + + vite: { + plugins: [tailwindcss()], + }, + + integrations: [icon(), svelte()], +}); \ No newline at end of file diff --git a/card.txt b/card.txt deleted file mode 100644 index cb6be7b..0000000 --- a/card.txt +++ /dev/null @@ -1,71 +0,0 @@ -
-
-
- - -
-
- -
-
-
-

Supported exe version: - Any -
- - Installation: - -

- - - - - - - - - - - - -
-
-
    -
  1. list1
  2. -
  3. list2
  4. -
-

descr cont.

-
-
-
-
- - Download - - -
-
-
- -
-
-
-
\ No newline at end of file diff --git a/components.json b/components.json new file mode 100644 index 0000000..0de72e2 --- /dev/null +++ b/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "tailwind": { + "css": "src/styles/shadcn-svelte.css", + "baseColor": "neutral" + }, + "aliases": { + "components": "@/components", + "utils": "@/utils", + "ui": "@/components/shadcn-svelte", + "hooks": "@/hooks", + "lib": "@/" + }, + "typescript": true, + "registry": "https://shadcn-svelte.com/registry" +} diff --git a/content/gol/bully/index.md b/content/gol/bully/index.md new file mode 100644 index 0000000..65b9966 --- /dev/null +++ b/content/gol/bully/index.md @@ -0,0 +1,5 @@ +--- +id: bully +name: Bully +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/BULLY/bullywd.json +--- diff --git a/content/gol/ctw/index.md b/content/gol/ctw/index.md new file mode 100644 index 0000000..0639349 --- /dev/null +++ b/content/gol/ctw/index.md @@ -0,0 +1,5 @@ +--- +id: ctw +name: GTA Chinatown Wars +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTACTW/gtactwwd.json +--- diff --git a/content/gol/gta1/index.md b/content/gol/gta1/index.md new file mode 100644 index 0000000..a8545b2 --- /dev/null +++ b/content/gol/gta1/index.md @@ -0,0 +1,5 @@ +--- +id: gta1 +name: Grand Theft Auto 1 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTA1/gta1wd.json +--- diff --git a/content/gol/gta2/index.md b/content/gol/gta2/index.md new file mode 100644 index 0000000..84b1910 --- /dev/null +++ b/content/gol/gta2/index.md @@ -0,0 +1,5 @@ +--- +id: gta2 +name: Grand Theft Auto 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTA2/gta2wd.json +--- diff --git a/content/gol/gta3/index.md b/content/gol/gta3/index.md new file mode 100644 index 0000000..f9b3fb4 --- /dev/null +++ b/content/gol/gta3/index.md @@ -0,0 +1,5 @@ +--- +id: gta3 +name: Grand Theft Auto III +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAIII/gta3wd.json +--- diff --git a/content/gol/gtaadv/index.md b/content/gol/gtaadv/index.md new file mode 100644 index 0000000..e5b4984 --- /dev/null +++ b/content/gol/gtaadv/index.md @@ -0,0 +1,5 @@ +--- +id: gtaadv +name: GTA Advance +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAADVANCE/gtaadvancewd.json +--- diff --git a/content/gol/gtaiv/index.md b/content/gol/gtaiv/index.md new file mode 100644 index 0000000..5542d0f --- /dev/null +++ b/content/gol/gtaiv/index.md @@ -0,0 +1,5 @@ +--- +id: gtaiv +name: Grand Theft Auto IV +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAIV/gtaivwd.json +--- diff --git a/content/gol/gtalcs/index.md b/content/gol/gtalcs/index.md new file mode 100644 index 0000000..14232cf --- /dev/null +++ b/content/gol/gtalcs/index.md @@ -0,0 +1,5 @@ +--- +id: gtalcs +name: GTA Liberty City Stories +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTALCS/gtalcswd.json +--- diff --git a/content/gol/gtasa/index.md b/content/gol/gtasa/index.md new file mode 100644 index 0000000..3191b86 --- /dev/null +++ b/content/gol/gtasa/index.md @@ -0,0 +1,5 @@ +--- +id: gtasa +name: GTA San Andreas +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTASA/gtasawd.json +--- diff --git a/content/gol/gtav/index.md b/content/gol/gtav/index.md new file mode 100644 index 0000000..b7ed28d --- /dev/null +++ b/content/gol/gtav/index.md @@ -0,0 +1,5 @@ +--- +id: gtav +name: Grand Theft Auto V +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAV/gtavwd.json +--- diff --git a/content/gol/gtavc/index.md b/content/gol/gtavc/index.md new file mode 100644 index 0000000..66ed136 --- /dev/null +++ b/content/gol/gtavc/index.md @@ -0,0 +1,5 @@ +--- +id: gtavc +name: GTA Vice City +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAVC/gtavcwd.json +--- diff --git a/content/gol/gtavcde/index.md b/content/gol/gtavcde/index.md new file mode 100644 index 0000000..90bf3c9 --- /dev/null +++ b/content/gol/gtavcde/index.md @@ -0,0 +1,5 @@ +--- +id: gtavcde +name: GTA Vice City Definitive Edition +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAVCDE/gtavcdewd.json +--- diff --git a/content/gol/gtavcs/index.md b/content/gol/gtavcs/index.md new file mode 100644 index 0000000..ce8cd4d --- /dev/null +++ b/content/gol/gtavcs/index.md @@ -0,0 +1,5 @@ +--- +id: gtavcs +name: GTA Vice City Stories +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAVCS/gtavcswd.json +--- diff --git a/content/gol/gtavi/index.md b/content/gol/gtavi/index.md new file mode 100644 index 0000000..6ba23a7 --- /dev/null +++ b/content/gol/gtavi/index.md @@ -0,0 +1,5 @@ +--- +id: gtavi +name: Grand Theft Auto VI +url: https://fusionfix.io/misc/gtavi.json +--- diff --git a/content/gol/lanoire/index.md b/content/gol/lanoire/index.md new file mode 100644 index 0000000..1435820 --- /dev/null +++ b/content/gol/lanoire/index.md @@ -0,0 +1,5 @@ +--- +id: lanoire +name: L.A. Noire +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/LANOIRE/lanoirewd.json +--- diff --git a/content/gol/mafia/index.md b/content/gol/mafia/index.md new file mode 100644 index 0000000..e493093 --- /dev/null +++ b/content/gol/mafia/index.md @@ -0,0 +1,5 @@ +--- +id: mafia +name: Mafia +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MAFIA/mafiawd.json +--- diff --git a/content/gol/mafia2/index.md b/content/gol/mafia2/index.md new file mode 100644 index 0000000..d298f58 --- /dev/null +++ b/content/gol/mafia2/index.md @@ -0,0 +1,5 @@ +--- +id: mafia2 +name: Mafia II +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MAFIA2/mafia2wd.json +--- diff --git a/content/gol/mafia3/index.md b/content/gol/mafia3/index.md new file mode 100644 index 0000000..d7cfacc --- /dev/null +++ b/content/gol/mafia3/index.md @@ -0,0 +1,5 @@ +--- +id: mafia3 +name: Mafia III +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MAFIA3/mafia3wd.json +--- diff --git a/content/gol/mafiade/index.md b/content/gol/mafiade/index.md new file mode 100644 index 0000000..bbbe817 --- /dev/null +++ b/content/gol/mafiade/index.md @@ -0,0 +1,5 @@ +--- +id: mafiade +name: Mafia Definitive Edition +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MAFIADE/mafiadewd.json +--- diff --git a/content/gol/manhunt/index.md b/content/gol/manhunt/index.md new file mode 100644 index 0000000..a632a19 --- /dev/null +++ b/content/gol/manhunt/index.md @@ -0,0 +1,5 @@ +--- +id: manhunt +name: Manhunt +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MANHUNT/manhuntwd.json +--- diff --git a/content/gol/manhunt2/index.md b/content/gol/manhunt2/index.md new file mode 100644 index 0000000..499e640 --- /dev/null +++ b/content/gol/manhunt2/index.md @@ -0,0 +1,5 @@ +--- +id: manhunt2 +name: Manhunt 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MANHUNT2/manhunt2wd.json +--- diff --git a/content/gol/maxpayne3/index.md b/content/gol/maxpayne3/index.md new file mode 100644 index 0000000..ce7d64d --- /dev/null +++ b/content/gol/maxpayne3/index.md @@ -0,0 +1,5 @@ +--- +id: maxpayne3 +name: Max Payne 3 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MAXPAYNE3/maxpayne3wdalt.json +--- diff --git a/content/gol/mcla/index.md b/content/gol/mcla/index.md new file mode 100644 index 0000000..686ed42 --- /dev/null +++ b/content/gol/mcla/index.md @@ -0,0 +1,5 @@ +--- +id: mcla +name: Midnight Club LA +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/MCLA/mclawd.json +--- diff --git a/content/gol/rdr/index.md b/content/gol/rdr/index.md new file mode 100644 index 0000000..cb77160 --- /dev/null +++ b/content/gol/rdr/index.md @@ -0,0 +1,5 @@ +--- +id: rdr +name: Red Dead Redemption +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/RDR/rdrwd.json +--- diff --git a/content/gol/rdr2/index.md b/content/gol/rdr2/index.md new file mode 100644 index 0000000..c1d47c2 --- /dev/null +++ b/content/gol/rdr2/index.md @@ -0,0 +1,5 @@ +--- +id: rdr2 +name: Red Dead Redemption 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/RDR2/rdr2wd.json +--- diff --git a/content/gol/sopranos/index.md b/content/gol/sopranos/index.md new file mode 100644 index 0000000..5f35b15 --- /dev/null +++ b/content/gol/sopranos/index.md @@ -0,0 +1,5 @@ +--- +id: sopranos +name: The Sopranos +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/THESOPRANOS/sopranoswd.json +--- diff --git a/content/gol/tbogt/index.md b/content/gol/tbogt/index.md new file mode 100644 index 0000000..5e495df --- /dev/null +++ b/content/gol/tbogt/index.md @@ -0,0 +1,5 @@ +--- +id: tbogt +name: GTA IV The Ballad of Gay Tony +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAIVTBOGT/gtaivtbogtwd.json +--- diff --git a/content/gol/thewarriors/index.md b/content/gol/thewarriors/index.md new file mode 100644 index 0000000..81376de --- /dev/null +++ b/content/gol/thewarriors/index.md @@ -0,0 +1,5 @@ +--- +id: thewarriors +name: The Warriors +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/THEWARRIORS/thewarriorswd.json +--- diff --git a/content/gol/tlad/index.md b/content/gol/tlad/index.md new file mode 100644 index 0000000..93632c6 --- /dev/null +++ b/content/gol/tlad/index.md @@ -0,0 +1,5 @@ +--- +id: tlad +name: GTA IV The Lost and Damned +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/GTAIVTLAD/gtaivtladwd.json +--- diff --git a/content/gol/tlou/index.md b/content/gol/tlou/index.md new file mode 100644 index 0000000..1ab7336 --- /dev/null +++ b/content/gol/tlou/index.md @@ -0,0 +1,5 @@ +--- +id: tlou +name: The Last of Us +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/TLOU/tlouwd.json +--- diff --git a/content/gt/bully/index.md b/content/gt/bully/index.md new file mode 100644 index 0000000..21c6735 --- /dev/null +++ b/content/gt/bully/index.md @@ -0,0 +1,5 @@ +--- +id: bully +name: Bully +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/BULLY.json +--- diff --git a/content/gt/gta1/index.md b/content/gt/gta1/index.md new file mode 100644 index 0000000..f74cd2f --- /dev/null +++ b/content/gt/gta1/index.md @@ -0,0 +1,5 @@ +--- +id: gta1 +name: Grand Theft Auto 1 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTA1.json +--- diff --git a/content/gt/gta2/index.md b/content/gt/gta2/index.md new file mode 100644 index 0000000..c9e53c3 --- /dev/null +++ b/content/gt/gta2/index.md @@ -0,0 +1,5 @@ +--- +id: gta2 +name: Grand Theft Auto 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTA2.json +--- diff --git a/content/gt/gta3/index.md b/content/gt/gta3/index.md new file mode 100644 index 0000000..a61d458 --- /dev/null +++ b/content/gt/gta3/index.md @@ -0,0 +1,5 @@ +--- +id: gta3 +name: Grand Theft Auto III +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTA3.json +--- diff --git a/content/gt/gtaadv/index.md b/content/gt/gtaadv/index.md new file mode 100644 index 0000000..484299b --- /dev/null +++ b/content/gt/gtaadv/index.md @@ -0,0 +1,5 @@ +--- +id: gtaadv +name: GTA Advance +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTAADVANCE.json +--- diff --git a/content/gt/gtactw/index.md b/content/gt/gtactw/index.md new file mode 100644 index 0000000..f42decb --- /dev/null +++ b/content/gt/gtactw/index.md @@ -0,0 +1,5 @@ +--- +id: gtactw +name: GTA Chinatown Wars +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTACTW.json +--- diff --git a/content/gt/gtaiv/index.md b/content/gt/gtaiv/index.md new file mode 100644 index 0000000..244fca2 --- /dev/null +++ b/content/gt/gtaiv/index.md @@ -0,0 +1,5 @@ +--- +id: gtaiv +name: Grand Theft Auto IV +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTAIV.json +--- diff --git a/content/gt/gtalcs/index.md b/content/gt/gtalcs/index.md new file mode 100644 index 0000000..4153aae --- /dev/null +++ b/content/gt/gtalcs/index.md @@ -0,0 +1,5 @@ +--- +id: gtalcs +name: GTA Liberty City Stories +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTALCS.json +--- diff --git a/content/gt/gtasa/index.md b/content/gt/gtasa/index.md new file mode 100644 index 0000000..60d1051 --- /dev/null +++ b/content/gt/gtasa/index.md @@ -0,0 +1,5 @@ +--- +id: gtasa +name: GTA San Andreas +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTASA.json +--- diff --git a/content/gt/gtav/index.md b/content/gt/gtav/index.md new file mode 100644 index 0000000..b5a0856 --- /dev/null +++ b/content/gt/gtav/index.md @@ -0,0 +1,5 @@ +--- +id: gtav +name: Grand Theft Auto V +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTAV.json +--- diff --git a/content/gt/gtavc/index.md b/content/gt/gtavc/index.md new file mode 100644 index 0000000..56f023f --- /dev/null +++ b/content/gt/gtavc/index.md @@ -0,0 +1,5 @@ +--- +id: gtavc +name: GTA Vice City +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTAVC.json +--- diff --git a/content/gt/gtavcs/index.md b/content/gt/gtavcs/index.md new file mode 100644 index 0000000..64a4034 --- /dev/null +++ b/content/gt/gtavcs/index.md @@ -0,0 +1,5 @@ +--- +id: gtavcs +name: GTA Vice City Stories +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/GTAVCS.json +--- diff --git a/content/gt/manhunt/index.md b/content/gt/manhunt/index.md new file mode 100644 index 0000000..2dccfb1 --- /dev/null +++ b/content/gt/manhunt/index.md @@ -0,0 +1,5 @@ +--- +id: manhunt +name: Manhunt +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/MANHUNT.json +--- diff --git a/content/gt/manhunt2/index.md b/content/gt/manhunt2/index.md new file mode 100644 index 0000000..718cb21 --- /dev/null +++ b/content/gt/manhunt2/index.md @@ -0,0 +1,5 @@ +--- +id: manhunt2 +name: Manhunt 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/MANHUNT2.json +--- diff --git a/content/gt/tbogt/index.md b/content/gt/tbogt/index.md new file mode 100644 index 0000000..d2cb6bd --- /dev/null +++ b/content/gt/tbogt/index.md @@ -0,0 +1,5 @@ +--- +id: tbogt +name: GTA IV The Ballad of Gay Tony +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/TBOGT.json +--- diff --git a/content/gt/tlad/index.md b/content/gt/tlad/index.md new file mode 100644 index 0000000..8b763d3 --- /dev/null +++ b/content/gt/tlad/index.md @@ -0,0 +1,5 @@ +--- +id: tlad +name: GTA IV The Lost and Damned +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/master/plugins/data/text/TLAD.json +--- diff --git a/content/home/fusion_fix/cover.png b/content/home/fusion_fix/cover.png new file mode 100644 index 0000000..6335e3c Binary files /dev/null and b/content/home/fusion_fix/cover.png differ diff --git a/content/home/fusion_fix/index.md b/content/home/fusion_fix/index.md new file mode 100644 index 0000000..b8f0cac --- /dev/null +++ b/content/home/fusion_fix/index.md @@ -0,0 +1,7 @@ +--- +title: Fusion Fix for Grand Theft Auto IV +href: https://thirteenag.github.io/iv +image: cover.png +--- + +Fusion Fix for Grand Theft Auto IV: The Complete Edition. diff --git a/content/home/gta_one_liners/cover.png b/content/home/gta_one_liners/cover.png new file mode 100644 index 0000000..85bebc9 Binary files /dev/null and b/content/home/gta_one_liners/cover.png differ diff --git a/content/home/gta_one_liners/index.md b/content/home/gta_one_liners/index.md new file mode 100644 index 0000000..38a8f93 --- /dev/null +++ b/content/home/gta_one_liners/index.md @@ -0,0 +1,9 @@ +--- +title: GTA One Liners +href: /gol/ +image: cover.png +--- + +A collection of gifs made out of almost every dialogue +in +GTA III, VC, SA, LCS, VCS, GTA IV, EFLC and V. diff --git a/content/home/project_2dfx/cover.png b/content/home/project_2dfx/cover.png new file mode 100644 index 0000000..2b4444e Binary files /dev/null and b/content/home/project_2dfx/cover.png differ diff --git a/content/home/project_2dfx/index.md b/content/home/project_2dfx/index.md new file mode 100644 index 0000000..aabfb35 --- /dev/null +++ b/content/home/project_2dfx/index.md @@ -0,0 +1,7 @@ +--- +title: Project2DFX +href: https://thirteenag.github.io/p2dfx +image: cover.png +--- + +Project2DFX is a set of plugins for GTA III, Vice City, San Andreas and GTA IV(EFLC) which adds LOD corona effect to a game map, making LOD-world look a lot better. diff --git a/content/home/widescreen_fixes_pack/cover.png b/content/home/widescreen_fixes_pack/cover.png new file mode 100644 index 0000000..37df0e8 Binary files /dev/null and b/content/home/widescreen_fixes_pack/cover.png differ diff --git a/content/home/widescreen_fixes_pack/index.md b/content/home/widescreen_fixes_pack/index.md new file mode 100644 index 0000000..44c1e57 --- /dev/null +++ b/content/home/widescreen_fixes_pack/index.md @@ -0,0 +1,7 @@ +--- +title: Widescreen Fixes Pack +href: /wfp/ +image: cover.png +--- + +Plugins to make or improve widescreen resolutions support in PC games. diff --git a/content/mol/alien/index.md b/content/mol/alien/index.md new file mode 100644 index 0000000..13ccafc --- /dev/null +++ b/content/mol/alien/index.md @@ -0,0 +1,5 @@ +--- +id: alien +name: Alien +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/alien.json +--- diff --git a/content/mol/aliens/index.md b/content/mol/aliens/index.md new file mode 100644 index 0000000..58a601c --- /dev/null +++ b/content/mol/aliens/index.md @@ -0,0 +1,5 @@ +--- +id: aliens +name: Aliens +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/aliens.json +--- diff --git a/content/mol/avengersendgame/index.md b/content/mol/avengersendgame/index.md new file mode 100644 index 0000000..acead43 --- /dev/null +++ b/content/mol/avengersendgame/index.md @@ -0,0 +1,5 @@ +--- +id: avengersendgame +name: 'Avengers: Endgame' +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/avengersendgame.json +--- diff --git a/content/mol/avengersinfinitywar/index.md b/content/mol/avengersinfinitywar/index.md new file mode 100644 index 0000000..3b65177 --- /dev/null +++ b/content/mol/avengersinfinitywar/index.md @@ -0,0 +1,5 @@ +--- +id: avengersinfinitywar +name: 'Avengers: Infinity War' +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/avengersinfinitywar.json +--- diff --git a/content/mol/diehard1/index.md b/content/mol/diehard1/index.md new file mode 100644 index 0000000..e7ff6c7 --- /dev/null +++ b/content/mol/diehard1/index.md @@ -0,0 +1,5 @@ +--- +id: diehard1 +name: Die Hard +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/diehard1.json +--- diff --git a/content/mol/diehard2/index.md b/content/mol/diehard2/index.md new file mode 100644 index 0000000..15fa8e4 --- /dev/null +++ b/content/mol/diehard2/index.md @@ -0,0 +1,5 @@ +--- +id: diehard2 +name: Die Hard 2 +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/diehard2.json +--- diff --git a/content/mol/goodfellas/index.md b/content/mol/goodfellas/index.md new file mode 100644 index 0000000..b3fcba5 --- /dev/null +++ b/content/mol/goodfellas/index.md @@ -0,0 +1,5 @@ +--- +id: goodfellas +name: Goodfellas +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/goodfellas.json +--- diff --git a/content/mol/scarface/index.md b/content/mol/scarface/index.md new file mode 100644 index 0000000..558170e --- /dev/null +++ b/content/mol/scarface/index.md @@ -0,0 +1,5 @@ +--- +id: scarface +name: Scarface +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/scarface.json +--- diff --git a/content/mol/thegodfather/index.md b/content/mol/thegodfather/index.md new file mode 100644 index 0000000..0f56462 --- /dev/null +++ b/content/mol/thegodfather/index.md @@ -0,0 +1,5 @@ +--- +id: thegodfather +name: The Godfather +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/thegodfather.json +--- diff --git a/content/mol/thegodfather2/index.md b/content/mol/thegodfather2/index.md new file mode 100644 index 0000000..02c059b --- /dev/null +++ b/content/mol/thegodfather2/index.md @@ -0,0 +1,5 @@ +--- +id: thegodfather2 +name: The Godfather Part II +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/thegodfather2.json +--- diff --git a/content/mol/thegodfather3/index.md b/content/mol/thegodfather3/index.md new file mode 100644 index 0000000..6102718 --- /dev/null +++ b/content/mol/thegodfather3/index.md @@ -0,0 +1,5 @@ +--- +id: thegodfather3 +name: The Godfather Part III +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/thegodfather3.json +--- diff --git a/content/mol/themanysaintsofnewark/index.md b/content/mol/themanysaintsofnewark/index.md new file mode 100644 index 0000000..efac7dd --- /dev/null +++ b/content/mol/themanysaintsofnewark/index.md @@ -0,0 +1,5 @@ +--- +id: themanysaintsofnewark +name: The Many Saints of Newark +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/themanysaintsofnewark.json +--- diff --git a/content/mol/thesopranos/index.md b/content/mol/thesopranos/index.md new file mode 100644 index 0000000..b388ba1 --- /dev/null +++ b/content/mol/thesopranos/index.md @@ -0,0 +1,5 @@ +--- +id: thesopranos +name: The Sopranos +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/sopranos.json +--- diff --git a/content/mol/theterminator/index.md b/content/mol/theterminator/index.md new file mode 100644 index 0000000..a6d8226 --- /dev/null +++ b/content/mol/theterminator/index.md @@ -0,0 +1,5 @@ +--- +id: theterminator +name: The Terminator +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/theterminator.json +--- diff --git a/content/mol/theterminator2/index.md b/content/mol/theterminator2/index.md new file mode 100644 index 0000000..db7664a --- /dev/null +++ b/content/mol/theterminator2/index.md @@ -0,0 +1,5 @@ +--- +id: theterminator2 +name: 'Terminator 2: Judgment Day' +url: https://raw.githubusercontent.com/ThirteenAG/GTA-One-Liners/movies/datasets/terminator2.json +--- diff --git a/content/sponsors/boosty/index.md b/content/sponsors/boosty/index.md new file mode 100644 index 0000000..16ade64 --- /dev/null +++ b/content/sponsors/boosty/index.md @@ -0,0 +1,8 @@ +--- +id: "boosty" +name: "Boosty" +color: "#F15F2C" +url: "https://boosty.to/thirteenag/donate" +tooltip: "Donate with Boosty. Thank You!" +icon: "boosty" +--- \ No newline at end of file diff --git a/content/sponsors/github/index.md b/content/sponsors/github/index.md new file mode 100644 index 0000000..9f30caa --- /dev/null +++ b/content/sponsors/github/index.md @@ -0,0 +1,8 @@ +--- +id: "github" +name: "Github Sponsors" +color: "#000000" +url: "https://github.com/sponsors/ThirteenAG" +tooltip: "Join GitHub Sponsors. Thank You!" +icon: "github" +--- diff --git a/content/sponsors/kofi/index.md b/content/sponsors/kofi/index.md new file mode 100644 index 0000000..e961cd5 --- /dev/null +++ b/content/sponsors/kofi/index.md @@ -0,0 +1,8 @@ +--- +id: "kofi" +name: "Ko-fi" +color: "#0067fc" +url: "https://ko-fi.com/thirteenag" +tooltip: "Donate with Ko-fi. Thank You!" +icon: "kofi" +--- diff --git a/content/sponsors/patreon/index.md b/content/sponsors/patreon/index.md new file mode 100644 index 0000000..e15d375 --- /dev/null +++ b/content/sponsors/patreon/index.md @@ -0,0 +1,8 @@ +--- +id: "patreon" +name: "Patreon" +color: "#FF424D" +url: "https://www.patreon.com/ThirteenAG" +tooltip: "Donate with Patreon. Thank You!" +icon: "patreon" +--- diff --git a/content/sponsors/paypal/index.md b/content/sponsors/paypal/index.md new file mode 100644 index 0000000..2a2647b --- /dev/null +++ b/content/sponsors/paypal/index.md @@ -0,0 +1,8 @@ +--- +id: "paypal" +name: "PayPal" +color: "#0070BA" +url: "https://paypal.me/SergeyP13" +tooltip: "Donate with PayPal. Thank You!" +icon: "paypal" +--- diff --git a/content/wfp/alienisolation/index.md b/content/wfp/alienisolation/index.md new file mode 100644 index 0000000..16f61dc --- /dev/null +++ b/content/wfp/alienisolation/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(64, 134, 13, 1) +download: https://github.com/ThirteenAG/AlienIsolation.SkipSaveConfirmationDialog#readme +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/AlienIsolation.SkipSaveConfirmationDialog/releases/latest/download/AlienIsolation.SkipSaveConfirmationDialog.zip +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/214490/ +- name: earth + tooltip: Official website + url: https://www.alienisolation.com/ +id: alienisolation +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: 'Alien: Isolation Save Confirmation Dialog Skipper' +screenshots: + background: https://www.feralinteractive.com/minisite/alienisolation-switch/images/background.jpg + images: [] + youtube: https://www.youtube.com/embed/5oFyVSWNsoY +--- + +1. Download and extract the archive to the game directory, where the exe is located. diff --git a/screens/alienisolation/logo.svg b/content/wfp/alienisolation/logo.svg similarity index 100% rename from screens/alienisolation/logo.svg rename to content/wfp/alienisolation/logo.svg diff --git a/screens/alienisolation/main1.jpg b/content/wfp/alienisolation/main1.jpg similarity index 100% rename from screens/alienisolation/main1.jpg rename to content/wfp/alienisolation/main1.jpg diff --git a/screens/alienisolation/main1.png b/content/wfp/alienisolation/main1.png similarity index 100% rename from screens/alienisolation/main1.png rename to content/wfp/alienisolation/main1.png diff --git a/screens/alienisolation/main2.jpg b/content/wfp/alienisolation/main2.jpg similarity index 100% rename from screens/alienisolation/main2.jpg rename to content/wfp/alienisolation/main2.jpg diff --git a/screens/alienisolation/main2.png b/content/wfp/alienisolation/main2.png similarity index 100% rename from screens/alienisolation/main2.png rename to content/wfp/alienisolation/main2.png diff --git a/screens/alienisolation/stripe.jpg b/content/wfp/alienisolation/stripe.jpg similarity index 100% rename from screens/alienisolation/stripe.jpg rename to content/wfp/alienisolation/stripe.jpg diff --git a/content/wfp/bully/index.md b/content/wfp/bully/index.md new file mode 100644 index 0000000..3277d02 --- /dev/null +++ b/content/wfp/bully/index.md @@ -0,0 +1,44 @@ +--- +after: main2.png +before: main1.png +color: rgba(189, 140, 1, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/bully +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/bully/Bully.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Bully.WidescreenFix.zip?branch=master +icons: +- name: link + tooltip: SilentPatch + url: https://github.com/CookiePLMonster/SilentPatchBully/releases/latest +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12200/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/bully/ +- name: github + tooltip: Made by Aero + url: https://github.com/AeroWidescreen +id: bully +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: 'Bully: Scholarship Edition Widescreen Fix' +screenshots: + background: https://media.rockstargames.com/rockstargames-newsite/img/global/downloads/wallpapers/games/bullyse_boxart_2560x1600.jpg + images: + - https://i.imgur.com/Dmyr7UU.jpg + - https://i.imgur.com/qvRwkLl.png + - https://i.imgur.com/6Td11In.jpg + - https://i.imgur.com/QPHTYHi.jpg + - https://i.imgur.com/YZPQogb.jpg + youtube: https://www.youtube.com/embed/RRtlTpN3pQ4 +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download [SilentPatchBully](https://github.com/CookiePLMonster/SilentPatchBully#readme) and extract to the game directory. diff --git a/screens/bully/logo.png b/content/wfp/bully/logo.png similarity index 100% rename from screens/bully/logo.png rename to content/wfp/bully/logo.png diff --git a/screens/bully/logo.svg b/content/wfp/bully/logo.svg similarity index 100% rename from screens/bully/logo.svg rename to content/wfp/bully/logo.svg diff --git a/screens/bully/main1.jpg b/content/wfp/bully/main1.jpg similarity index 100% rename from screens/bully/main1.jpg rename to content/wfp/bully/main1.jpg diff --git a/screens/bully/main1.png b/content/wfp/bully/main1.png similarity index 100% rename from screens/bully/main1.png rename to content/wfp/bully/main1.png diff --git a/screens/bully/main2.jpg b/content/wfp/bully/main2.jpg similarity index 100% rename from screens/bully/main2.jpg rename to content/wfp/bully/main2.jpg diff --git a/screens/bully/main2.png b/content/wfp/bully/main2.png similarity index 100% rename from screens/bully/main2.png rename to content/wfp/bully/main2.png diff --git a/screens/bully/stripe.jpg b/content/wfp/bully/stripe.jpg similarity index 100% rename from screens/bully/stripe.jpg rename to content/wfp/bully/stripe.jpg diff --git a/content/wfp/burnout3/index.md b/content/wfp/burnout3/index.md new file mode 100644 index 0000000..bacb37e --- /dev/null +++ b/content/wfp/burnout3/index.md @@ -0,0 +1,43 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/burnout3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/burnout3/Burnout3.PCSX2F.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Burnout3.PCSX2F.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +- name: github + tooltip: Made by Aero + url: https://github.com/AeroWidescreen +id: burnout3 +logo: logo.svg +support: + tooltip: '' + version: SLUS-21050 +tag: other +title: 'Burnout 3: Takedown Widescreen Fix [PCSX2F]' +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/burnout-takedown-keyart.jpg + images: + - https://i.imgur.com/nZrPO21.jpg + - https://i.imgur.com/5Zqj5Nq.jpg + - https://i.imgur.com/wAwpchZ.jpg + - https://i.imgur.com/9HtjDiy.jpg + - https://i.imgur.com/X26TNyk.jpg + - https://i.imgur.com/5JGbswW.jpg + - https://i.imgur.com/yEeUBS1.jpg + - https://i.imgur.com/QhvvlSn.jpg + - https://i.imgur.com/3psGTMz.jpg + youtube: https://www.youtube.com/embed/7YAg1NB6yqk +--- + +1. Download and extract [PCSX2 Fork With Plugins](https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest). +2. Download and extract the archive to the root directory, where exe is located. +3. Change the aspect ratio or window size of the emulator, set FMV Aspect Ratio Override option to Off. +4. Launch the game. diff --git a/screens/burnout3/logo.svg b/content/wfp/burnout3/logo.svg similarity index 100% rename from screens/burnout3/logo.svg rename to content/wfp/burnout3/logo.svg diff --git a/screens/burnout3/logo2.svg b/content/wfp/burnout3/logo2.svg similarity index 100% rename from screens/burnout3/logo2.svg rename to content/wfp/burnout3/logo2.svg diff --git a/screens/burnout3/main1.jpg b/content/wfp/burnout3/main1.jpg similarity index 100% rename from screens/burnout3/main1.jpg rename to content/wfp/burnout3/main1.jpg diff --git a/screens/burnout3/main1.png b/content/wfp/burnout3/main1.png similarity index 100% rename from screens/burnout3/main1.png rename to content/wfp/burnout3/main1.png diff --git a/screens/burnout3/main2.jpg b/content/wfp/burnout3/main2.jpg similarity index 100% rename from screens/burnout3/main2.jpg rename to content/wfp/burnout3/main2.jpg diff --git a/screens/burnout3/main2.png b/content/wfp/burnout3/main2.png similarity index 100% rename from screens/burnout3/main2.png rename to content/wfp/burnout3/main2.png diff --git a/screens/burnout3/main3.jpg b/content/wfp/burnout3/main3.jpg similarity index 100% rename from screens/burnout3/main3.jpg rename to content/wfp/burnout3/main3.jpg diff --git a/screens/burnout3/main3.png b/content/wfp/burnout3/main3.png similarity index 100% rename from screens/burnout3/main3.png rename to content/wfp/burnout3/main3.png diff --git a/content/wfp/callofcthulhu/index.md b/content/wfp/callofcthulhu/index.md new file mode 100644 index 0000000..67dc342 --- /dev/null +++ b/content/wfp/callofcthulhu/index.md @@ -0,0 +1,33 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/callofcthulhu +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/callofcthulhu/CallOfCthulhu.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/CallOfCthulhu.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/22340/ +id: callofcthulhu +logo: logo.png +support: + tooltip: '' + version: Any +tag: other +title: Call of Cthulhu Widescreen Fix +screenshots: + background: '' + images: + - https://i.imgur.com/ZUblubq.jpg + - https://i.imgur.com/FvYUHU5.jpg + - https://i.imgur.com/mAXMkuM.jpg + - https://i.imgur.com/MQeN9Zd.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/callofcthulhu/logo.png b/content/wfp/callofcthulhu/logo.png similarity index 100% rename from screens/callofcthulhu/logo.png rename to content/wfp/callofcthulhu/logo.png diff --git a/screens/callofcthulhu/logo.svg b/content/wfp/callofcthulhu/logo.svg similarity index 100% rename from screens/callofcthulhu/logo.svg rename to content/wfp/callofcthulhu/logo.svg diff --git a/screens/callofcthulhu/main1.jpg b/content/wfp/callofcthulhu/main1.jpg similarity index 100% rename from screens/callofcthulhu/main1.jpg rename to content/wfp/callofcthulhu/main1.jpg diff --git a/screens/callofcthulhu/main1.png b/content/wfp/callofcthulhu/main1.png similarity index 100% rename from screens/callofcthulhu/main1.png rename to content/wfp/callofcthulhu/main1.png diff --git a/screens/callofcthulhu/main2.jpg b/content/wfp/callofcthulhu/main2.jpg similarity index 100% rename from screens/callofcthulhu/main2.jpg rename to content/wfp/callofcthulhu/main2.jpg diff --git a/screens/callofcthulhu/main2.png b/content/wfp/callofcthulhu/main2.png similarity index 100% rename from screens/callofcthulhu/main2.png rename to content/wfp/callofcthulhu/main2.png diff --git a/content/wfp/coldfear/index.md b/content/wfp/coldfear/index.md new file mode 100644 index 0000000..e6d5207 --- /dev/null +++ b/content/wfp/coldfear/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/coldfear +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/coldfear/ColdFear.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ColdFear.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/15270/ +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/us/cold-fear/575ffd95a3be1633568b4d4e.html +id: coldfear +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: Cold Fear Widescreen Fix +screenshots: + background: https://i.imgur.com/8AJdRpl.jpg + images: + - https://i.imgur.com/s10eDVu.jpg + - https://i.imgur.com/RXPx6Ow.jpg + - https://i.imgur.com/KH8i1iX.jpg + - https://i.imgur.com/c2SD3XM.jpg + - https://i.imgur.com/B6vShal.png + - https://i.imgur.com/KLjlnfq.jpg + - https://i.imgur.com/pb5n0Yp.jpg + - https://i.imgur.com/bkrOqsA.jpg + - https://i.imgur.com/xC8Zn4B.jpg + youtube: https://www.youtube.com/embed/cV1kW5-JyDE +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/coldfear/logo.png b/content/wfp/coldfear/logo.png similarity index 100% rename from screens/coldfear/logo.png rename to content/wfp/coldfear/logo.png diff --git a/screens/coldfear/logo.svg b/content/wfp/coldfear/logo.svg similarity index 100% rename from screens/coldfear/logo.svg rename to content/wfp/coldfear/logo.svg diff --git a/screens/coldfear/logo2.jpg b/content/wfp/coldfear/logo2.jpg similarity index 100% rename from screens/coldfear/logo2.jpg rename to content/wfp/coldfear/logo2.jpg diff --git a/screens/coldfear/logo2.png b/content/wfp/coldfear/logo2.png similarity index 100% rename from screens/coldfear/logo2.png rename to content/wfp/coldfear/logo2.png diff --git a/screens/coldfear/main1.jpg b/content/wfp/coldfear/main1.jpg similarity index 100% rename from screens/coldfear/main1.jpg rename to content/wfp/coldfear/main1.jpg diff --git a/screens/coldfear/main1.png b/content/wfp/coldfear/main1.png similarity index 100% rename from screens/coldfear/main1.png rename to content/wfp/coldfear/main1.png diff --git a/screens/coldfear/main2.jpg b/content/wfp/coldfear/main2.jpg similarity index 100% rename from screens/coldfear/main2.jpg rename to content/wfp/coldfear/main2.jpg diff --git a/screens/coldfear/main2.png b/content/wfp/coldfear/main2.png similarity index 100% rename from screens/coldfear/main2.png rename to content/wfp/coldfear/main2.png diff --git a/screens/coldfear/stripe.jpg b/content/wfp/coldfear/stripe.jpg similarity index 100% rename from screens/coldfear/stripe.jpg rename to content/wfp/coldfear/stripe.jpg diff --git a/content/wfp/condemned/index.md b/content/wfp/condemned/index.md new file mode 100644 index 0000000..7bd9aa9 --- /dev/null +++ b/content/wfp/condemned/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(79, 28, 25, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/condemned +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/condemned/Condemned.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Condemned.WidescreenFix.zip?branch=master +- name: Missing Steam Files Fix + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/condemned/Condemned.MissingSteamFilesFix.zip +- name: Missing Steam Files Fix (Lite) + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/condemned/Condemned.MissingSteamFilesFix.Lite.zip +icons: +- name: link + tooltip: Missing Steam Files Fix + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/condemned/Condemned.MissingSteamFilesFix.zip +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/4720/ +- name: earth + tooltip: Official website + url: https://www.lith.com/games/condemned-criminal-origins +id: condemned +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: 'Condemned: Criminal Origins Widescreen Fix' +screenshots: + background: https://i.imgur.com/JyElC7H.jpg + images: + - https://i.imgur.com/negsn3x.png + - https://i.imgur.com/5nTXCWr.png + - https://i.imgur.com/rIYeMx8.png + - https://i.imgur.com/jtehxpc.jpg + - https://i.imgur.com/00UOaPH.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/condemned/logo.svg b/content/wfp/condemned/logo.svg similarity index 100% rename from screens/condemned/logo.svg rename to content/wfp/condemned/logo.svg diff --git a/screens/condemned/main1.jpg b/content/wfp/condemned/main1.jpg similarity index 100% rename from screens/condemned/main1.jpg rename to content/wfp/condemned/main1.jpg diff --git a/screens/condemned/main1.png b/content/wfp/condemned/main1.png similarity index 100% rename from screens/condemned/main1.png rename to content/wfp/condemned/main1.png diff --git a/screens/condemned/main2.jpg b/content/wfp/condemned/main2.jpg similarity index 100% rename from screens/condemned/main2.jpg rename to content/wfp/condemned/main2.jpg diff --git a/screens/condemned/main2.png b/content/wfp/condemned/main2.png similarity index 100% rename from screens/condemned/main2.png rename to content/wfp/condemned/main2.png diff --git a/screens/condemned/stripe.jpg b/content/wfp/condemned/stripe.jpg similarity index 100% rename from screens/condemned/stripe.jpg rename to content/wfp/condemned/stripe.jpg diff --git a/content/wfp/da4/index.md b/content/wfp/da4/index.md new file mode 100644 index 0000000..bb19cda --- /dev/null +++ b/content/wfp/da4/index.md @@ -0,0 +1,32 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/da4 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/da4/DeerAvenger4.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/DeerAvenger4.WidescreenFix.zip?branch=master +icons: [] +id: da4 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Deer Avenger 4 Widescreen Fix +screenshots: + background: https://i.imgur.com/uMpMYNM.jpg + images: + - https://i.imgur.com/6liiphX.jpg + - https://i.imgur.com/5mDicrg.jpg + - https://i.imgur.com/q8ry6qw.jpg + youtube: https://www.youtube.com/embed/kjN3YqIPVEw +--- + +* Download and extract the archive to the game directory, where the exe is located. + +Notes: + +* Some rendering issues are visible in widescreen. diff --git a/screens/da4/logo.png b/content/wfp/da4/logo.png similarity index 100% rename from screens/da4/logo.png rename to content/wfp/da4/logo.png diff --git a/screens/da4/logo.svg b/content/wfp/da4/logo.svg similarity index 100% rename from screens/da4/logo.svg rename to content/wfp/da4/logo.svg diff --git a/screens/da4/main1.jpg b/content/wfp/da4/main1.jpg similarity index 100% rename from screens/da4/main1.jpg rename to content/wfp/da4/main1.jpg diff --git a/screens/da4/main1.png b/content/wfp/da4/main1.png similarity index 100% rename from screens/da4/main1.png rename to content/wfp/da4/main1.png diff --git a/screens/da4/main2.jpg b/content/wfp/da4/main2.jpg similarity index 100% rename from screens/da4/main2.jpg rename to content/wfp/da4/main2.jpg diff --git a/screens/da4/main2.png b/content/wfp/da4/main2.png similarity index 100% rename from screens/da4/main2.png rename to content/wfp/da4/main2.png diff --git a/content/wfp/driv3r/index.md b/content/wfp/driv3r/index.md new file mode 100644 index 0000000..55a493d --- /dev/null +++ b/content/wfp/driv3r/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(117, 96, 13, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/driv3r +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/driv3r/Driv3r.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Driv3r.WidescreenFix.zip?branch=master +icons: [] +id: driv3r +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: driver +title: DRIV3R Widescreen Fix +screenshots: + background: https://i.imgur.com/1OwzG6U.jpg + images: + - https://i.imgur.com/a7VO7WJ.jpg + - https://i.imgur.com/gCQH31J.jpg + - https://i.imgur.com/mhR1MPB.jpg + - https://i.imgur.com/N9Khb8M.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/driv3r/logo.png b/content/wfp/driv3r/logo.png similarity index 100% rename from screens/driv3r/logo.png rename to content/wfp/driv3r/logo.png diff --git a/screens/driv3r/logo.svg b/content/wfp/driv3r/logo.svg similarity index 100% rename from screens/driv3r/logo.svg rename to content/wfp/driv3r/logo.svg diff --git a/screens/driv3r/main1.jpg b/content/wfp/driv3r/main1.jpg similarity index 100% rename from screens/driv3r/main1.jpg rename to content/wfp/driv3r/main1.jpg diff --git a/screens/driv3r/main1.png b/content/wfp/driv3r/main1.png similarity index 100% rename from screens/driv3r/main1.png rename to content/wfp/driv3r/main1.png diff --git a/screens/driv3r/main2.jpg b/content/wfp/driv3r/main2.jpg similarity index 100% rename from screens/driv3r/main2.jpg rename to content/wfp/driv3r/main2.jpg diff --git a/screens/driv3r/main2.png b/content/wfp/driv3r/main2.png similarity index 100% rename from screens/driv3r/main2.png rename to content/wfp/driv3r/main2.png diff --git a/screens/driv3r/stripe.jpg b/content/wfp/driv3r/stripe.jpg similarity index 100% rename from screens/driv3r/stripe.jpg rename to content/wfp/driv3r/stripe.jpg diff --git a/content/wfp/driverpl/index.md b/content/wfp/driverpl/index.md new file mode 100644 index 0000000..9e402d4 --- /dev/null +++ b/content/wfp/driverpl/index.md @@ -0,0 +1,40 @@ +--- +after: main2.png +before: main1.png +color: rgba(42, 41, 38, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/driverpl +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/driverpl/DriverParallelLines.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/DriverParallelLines.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/21780/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/driver_parallel_lines +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/driver-parallel-lines/575ffd97a3be1633568b4d60.html +id: driverpl +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: driver +title: Driver Parallel Lines Widescreen Fix +screenshots: + background: https://i.imgur.com/IEnHlHr.jpg + images: + - https://i.imgur.com/Hj7nilj.jpg + - https://i.imgur.com/80UB32p.png + - https://i.imgur.com/bs8eTan.jpg + - https://i.imgur.com/MXyQncG.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/driverpl/logo.png b/content/wfp/driverpl/logo.png similarity index 100% rename from screens/driverpl/logo.png rename to content/wfp/driverpl/logo.png diff --git a/screens/driverpl/logo.svg b/content/wfp/driverpl/logo.svg similarity index 100% rename from screens/driverpl/logo.svg rename to content/wfp/driverpl/logo.svg diff --git a/screens/driverpl/main1.jpg b/content/wfp/driverpl/main1.jpg similarity index 100% rename from screens/driverpl/main1.jpg rename to content/wfp/driverpl/main1.jpg diff --git a/screens/driverpl/main1.png b/content/wfp/driverpl/main1.png similarity index 100% rename from screens/driverpl/main1.png rename to content/wfp/driverpl/main1.png diff --git a/screens/driverpl/main2.jpg b/content/wfp/driverpl/main2.jpg similarity index 100% rename from screens/driverpl/main2.jpg rename to content/wfp/driverpl/main2.jpg diff --git a/screens/driverpl/main2.png b/content/wfp/driverpl/main2.png similarity index 100% rename from screens/driverpl/main2.png rename to content/wfp/driverpl/main2.png diff --git a/screens/driverpl/stripe.jpg b/content/wfp/driverpl/stripe.jpg similarity index 100% rename from screens/driverpl/stripe.jpg rename to content/wfp/driverpl/stripe.jpg diff --git a/content/wfp/enterthematrix/index.md b/content/wfp/enterthematrix/index.md new file mode 100644 index 0000000..a7b56b4 --- /dev/null +++ b/content/wfp/enterthematrix/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/enterthematrix +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/enterthematrix/EnterTheMatrix.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/EnterTheMatrix.WidescreenFix.zip?branch=master +icons: [] +id: enterthematrix +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Enter the Matrix Widescreen Fix +screenshots: + background: https://i.imgur.com/7vU9xze.jpg + images: + - https://i.imgur.com/q2TeHcw.png + - https://i.imgur.com/QSC0R1z.jpg + - https://i.imgur.com/ulim4nc.jpg + - https://i.imgur.com/5icM0F5.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Use MatrixOptions.exe to select resolution and other settings. diff --git a/screens/enterthematrix/logo.png b/content/wfp/enterthematrix/logo.png similarity index 100% rename from screens/enterthematrix/logo.png rename to content/wfp/enterthematrix/logo.png diff --git a/screens/enterthematrix/logo.svg b/content/wfp/enterthematrix/logo.svg similarity index 100% rename from screens/enterthematrix/logo.svg rename to content/wfp/enterthematrix/logo.svg diff --git a/screens/enterthematrix/main1.jpg b/content/wfp/enterthematrix/main1.jpg similarity index 100% rename from screens/enterthematrix/main1.jpg rename to content/wfp/enterthematrix/main1.jpg diff --git a/screens/enterthematrix/main1.png b/content/wfp/enterthematrix/main1.png similarity index 100% rename from screens/enterthematrix/main1.png rename to content/wfp/enterthematrix/main1.png diff --git a/screens/enterthematrix/main2.jpg b/content/wfp/enterthematrix/main2.jpg similarity index 100% rename from screens/enterthematrix/main2.jpg rename to content/wfp/enterthematrix/main2.jpg diff --git a/screens/enterthematrix/main2.png b/content/wfp/enterthematrix/main2.png similarity index 100% rename from screens/enterthematrix/main2.png rename to content/wfp/enterthematrix/main2.png diff --git a/content/wfp/farcry/index.md b/content/wfp/farcry/index.md new file mode 100644 index 0000000..3e9fb8d --- /dev/null +++ b/content/wfp/farcry/index.md @@ -0,0 +1,70 @@ +--- +after: main2.png +before: main1.png +color: rgba(3, 158, 214, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/farcry +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/farcry/FarCry.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/FarCry.WidescreenFix.zip?branch=master +- name: Widescreen FMVs + url: https://mega.nz/#!wspiDA4J!3y1uqr9J_6FPATNptP_BCXQsMoXXfaslPyGlAI-g7Ps +icons: +- name: link + tooltip: SilentPatch for Far Cry + url: https://github.com/CookiePLMonster/SilentPatchFarCry/releases/latest +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/13520/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/far_cry +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/far-cry/56c4948488a7e300458b4740.html +- name: earth + tooltip: Official website + url: https://www.crytek.com/games/farcry +id: farcry +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any (x86/x64) +tag: other +title: Far Cry Widescreen Fix +screenshots: + background: https://i.imgur.com/wRXWzFa.jpg + images: + - https://i.imgur.com/dMdLXPk.jpg + - https://i.imgur.com/vh6BhM9.jpg + - https://i.imgur.com/1549bXk.jpg + - https://i.imgur.com/QhH7sCE.jpg + - https://i.imgur.com/spaPvFT.jpg + - https://i.imgur.com/ZPj4Vvz.jpg + - https://i.imgur.com/seqs9Qz.jpg + - https://i.imgur.com/cxKZzdx.jpg + - https://i.imgur.com/tkX6YAx.jpg + - https://i.imgur.com/naiG2hR.jpg + - https://i.imgur.com/r2sXOmg.jpg + - https://i.imgur.com/60fywam.jpg + - https://i.imgur.com/lK1kkrV.jpg + - https://i.imgur.com/ebLSFrV.jpg + - https://i.imgur.com/Q7hhfil.jpg + - https://i.imgur.com/Gv4gKF7.jpg + - https://i.imgur.com/ECTayaD.jpg + - https://i.imgur.com/wCvlUeo.jpg + - https://i.imgur.com/nvJ1ty5.jpg + youtube: '' +--- + +1. Download and extract the archive to the game root directory. +2. Download [Widescreen FMVs](https://mega.nz/#!wspiDA4J!3y1uqr9J_6FPATNptP_BCXQsMoXXfaslPyGlAI-g7Ps) and extract to the root directory. +3. Download [SilentPatchFarCry](https://github.com/CookiePLMonster/SilentPatchFarCry#silentpatch-for-far-cry) and extract to the root directory. +4. Check the download link below for all available features. + +Notes: + +* Works with both x86 and x64 versions of the game. +* Plugin also switches windowed mode to borderless windowed. diff --git a/screens/farcry/logo.png b/content/wfp/farcry/logo.png similarity index 100% rename from screens/farcry/logo.png rename to content/wfp/farcry/logo.png diff --git a/screens/farcry/logo.svg b/content/wfp/farcry/logo.svg similarity index 100% rename from screens/farcry/logo.svg rename to content/wfp/farcry/logo.svg diff --git a/screens/farcry/main1.jpg b/content/wfp/farcry/main1.jpg similarity index 100% rename from screens/farcry/main1.jpg rename to content/wfp/farcry/main1.jpg diff --git a/screens/farcry/main1.png b/content/wfp/farcry/main1.png similarity index 100% rename from screens/farcry/main1.png rename to content/wfp/farcry/main1.png diff --git a/screens/farcry/main2.jpg b/content/wfp/farcry/main2.jpg similarity index 100% rename from screens/farcry/main2.jpg rename to content/wfp/farcry/main2.jpg diff --git a/screens/farcry/main2.png b/content/wfp/farcry/main2.png similarity index 100% rename from screens/farcry/main2.png rename to content/wfp/farcry/main2.png diff --git a/screens/farcry/stripe.jpg b/content/wfp/farcry/stripe.jpg similarity index 100% rename from screens/farcry/stripe.jpg rename to content/wfp/farcry/stripe.jpg diff --git a/content/wfp/fireteambravo1/index.md b/content/wfp/fireteambravo1/index.md new file mode 100644 index 0000000..dce8d8f --- /dev/null +++ b/content/wfp/fireteambravo1/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 126, 158, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/fireteambravo1 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/fireteambravo1/SOCOM.FireteamBravo.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SOCOM.FireteamBravo.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +id: fireteambravo1 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.17.1 + version: Any (tested on UCUS-98615) +tag: mods +title: 'SOCOM: Fireteam Bravo Fusion Mod [PPSSPP]' +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Skip Intro. +* Dual Analog support. +* Improved loading speed. diff --git a/screens/fireteambravo1/logo.svg b/content/wfp/fireteambravo1/logo.svg similarity index 100% rename from screens/fireteambravo1/logo.svg rename to content/wfp/fireteambravo1/logo.svg diff --git a/screens/fireteambravo1/main1.jpg b/content/wfp/fireteambravo1/main1.jpg similarity index 100% rename from screens/fireteambravo1/main1.jpg rename to content/wfp/fireteambravo1/main1.jpg diff --git a/screens/fireteambravo1/main1.png b/content/wfp/fireteambravo1/main1.png similarity index 100% rename from screens/fireteambravo1/main1.png rename to content/wfp/fireteambravo1/main1.png diff --git a/screens/fireteambravo1/main2.jpg b/content/wfp/fireteambravo1/main2.jpg similarity index 100% rename from screens/fireteambravo1/main2.jpg rename to content/wfp/fireteambravo1/main2.jpg diff --git a/screens/fireteambravo1/main2.png b/content/wfp/fireteambravo1/main2.png similarity index 100% rename from screens/fireteambravo1/main2.png rename to content/wfp/fireteambravo1/main2.png diff --git a/screens/fireteambravo1/stripe.jpg b/content/wfp/fireteambravo1/stripe.jpg similarity index 100% rename from screens/fireteambravo1/stripe.jpg rename to content/wfp/fireteambravo1/stripe.jpg diff --git a/content/wfp/fireteambravo2/index.md b/content/wfp/fireteambravo2/index.md new file mode 100644 index 0000000..ba0655e --- /dev/null +++ b/content/wfp/fireteambravo2/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 126, 158, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/fireteambravo2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/fireteambravo2/SOCOM.FireteamBravo2.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SOCOM.FireteamBravo2.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +id: fireteambravo2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.17.1 + version: UCUS-98645 +tag: mods +title: 'SOCOM: Fireteam Bravo 2 Fusion Mod [PPSSPP]' +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Skip Intro. +* Dual Analog support. +* Improved loading speed. diff --git a/screens/fireteambravo2/logo.svg b/content/wfp/fireteambravo2/logo.svg similarity index 100% rename from screens/fireteambravo2/logo.svg rename to content/wfp/fireteambravo2/logo.svg diff --git a/screens/fireteambravo2/main1.jpg b/content/wfp/fireteambravo2/main1.jpg similarity index 100% rename from screens/fireteambravo2/main1.jpg rename to content/wfp/fireteambravo2/main1.jpg diff --git a/screens/fireteambravo2/main1.png b/content/wfp/fireteambravo2/main1.png similarity index 100% rename from screens/fireteambravo2/main1.png rename to content/wfp/fireteambravo2/main1.png diff --git a/screens/fireteambravo2/main2.jpg b/content/wfp/fireteambravo2/main2.jpg similarity index 100% rename from screens/fireteambravo2/main2.jpg rename to content/wfp/fireteambravo2/main2.jpg diff --git a/screens/fireteambravo2/main2.png b/content/wfp/fireteambravo2/main2.png similarity index 100% rename from screens/fireteambravo2/main2.png rename to content/wfp/fireteambravo2/main2.png diff --git a/screens/fireteambravo2/stripe.jpg b/content/wfp/fireteambravo2/stripe.jpg similarity index 100% rename from screens/fireteambravo2/stripe.jpg rename to content/wfp/fireteambravo2/stripe.jpg diff --git a/content/wfp/fireteambravo3/index.md b/content/wfp/fireteambravo3/index.md new file mode 100644 index 0000000..5326f28 --- /dev/null +++ b/content/wfp/fireteambravo3/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 126, 158, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/fireteambravo3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/fireteambravo3/SOCOM.FireteamBravo3.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SOCOM.FireteamBravo3.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +id: fireteambravo3 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.17.1 + version: Any (tested on UCUS-98716) +tag: mods +title: 'SOCOM: Fireteam Bravo 3 Fusion Mod [PPSSPP]' +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Skip Intro. +* Dual Analog support. +* Improved loading speed. diff --git a/screens/fireteambravo3/logo.svg b/content/wfp/fireteambravo3/logo.svg similarity index 100% rename from screens/fireteambravo3/logo.svg rename to content/wfp/fireteambravo3/logo.svg diff --git a/screens/fireteambravo3/main1.jpg b/content/wfp/fireteambravo3/main1.jpg similarity index 100% rename from screens/fireteambravo3/main1.jpg rename to content/wfp/fireteambravo3/main1.jpg diff --git a/screens/fireteambravo3/main1.png b/content/wfp/fireteambravo3/main1.png similarity index 100% rename from screens/fireteambravo3/main1.png rename to content/wfp/fireteambravo3/main1.png diff --git a/screens/fireteambravo3/main2.jpg b/content/wfp/fireteambravo3/main2.jpg similarity index 100% rename from screens/fireteambravo3/main2.jpg rename to content/wfp/fireteambravo3/main2.jpg diff --git a/screens/fireteambravo3/main2.png b/content/wfp/fireteambravo3/main2.png similarity index 100% rename from screens/fireteambravo3/main2.png rename to content/wfp/fireteambravo3/main2.png diff --git a/screens/fireteambravo3/stripe.jpg b/content/wfp/fireteambravo3/stripe.jpg similarity index 100% rename from screens/fireteambravo3/stripe.jpg rename to content/wfp/fireteambravo3/stripe.jpg diff --git a/content/wfp/flatout/index.md.txt b/content/wfp/flatout/index.md.txt new file mode 100644 index 0000000..3c21a7c --- /dev/null +++ b/content/wfp/flatout/index.md.txt @@ -0,0 +1,8 @@ +--- +screenshots: + background: https://i.imgur.com/2pSW9sD.jpg + images: + - https://i.imgur.com/sHt2RkA.jpg + - https://i.imgur.com/bvtgRAL.jpg + youtube: '' +--- \ No newline at end of file diff --git a/screens/flatout/logo.png b/content/wfp/flatout/logo.png similarity index 100% rename from screens/flatout/logo.png rename to content/wfp/flatout/logo.png diff --git a/screens/flatout/logo.svg b/content/wfp/flatout/logo.svg similarity index 100% rename from screens/flatout/logo.svg rename to content/wfp/flatout/logo.svg diff --git a/screens/flatout/main1.jpg b/content/wfp/flatout/main1.jpg similarity index 100% rename from screens/flatout/main1.jpg rename to content/wfp/flatout/main1.jpg diff --git a/screens/flatout/main1.png b/content/wfp/flatout/main1.png similarity index 100% rename from screens/flatout/main1.png rename to content/wfp/flatout/main1.png diff --git a/screens/flatout/main2.jpg b/content/wfp/flatout/main2.jpg similarity index 100% rename from screens/flatout/main2.jpg rename to content/wfp/flatout/main2.jpg diff --git a/screens/flatout/main2.png b/content/wfp/flatout/main2.png similarity index 100% rename from screens/flatout/main2.png rename to content/wfp/flatout/main2.png diff --git a/content/wfp/flatout2/index.md.txt b/content/wfp/flatout2/index.md.txt new file mode 100644 index 0000000..3c21a7c --- /dev/null +++ b/content/wfp/flatout2/index.md.txt @@ -0,0 +1,8 @@ +--- +screenshots: + background: https://i.imgur.com/2pSW9sD.jpg + images: + - https://i.imgur.com/sHt2RkA.jpg + - https://i.imgur.com/bvtgRAL.jpg + youtube: '' +--- \ No newline at end of file diff --git a/screens/flatout2/logo.png b/content/wfp/flatout2/logo.png similarity index 100% rename from screens/flatout2/logo.png rename to content/wfp/flatout2/logo.png diff --git a/screens/flatout2/logo.svg b/content/wfp/flatout2/logo.svg similarity index 100% rename from screens/flatout2/logo.svg rename to content/wfp/flatout2/logo.svg diff --git a/screens/flatout2/main1.jpg b/content/wfp/flatout2/main1.jpg similarity index 100% rename from screens/flatout2/main1.jpg rename to content/wfp/flatout2/main1.jpg diff --git a/screens/flatout2/main1.png b/content/wfp/flatout2/main1.png similarity index 100% rename from screens/flatout2/main1.png rename to content/wfp/flatout2/main1.png diff --git a/screens/flatout2/main2.jpg b/content/wfp/flatout2/main2.jpg similarity index 100% rename from screens/flatout2/main2.jpg rename to content/wfp/flatout2/main2.jpg diff --git a/screens/flatout2/main2.png b/content/wfp/flatout2/main2.png similarity index 100% rename from screens/flatout2/main2.png rename to content/wfp/flatout2/main2.png diff --git a/content/wfp/gta1/index.md b/content/wfp/gta1/index.md new file mode 100644 index 0000000..763b975 --- /dev/null +++ b/content/wfp/gta1/index.md @@ -0,0 +1,37 @@ +--- +after: main2.png +before: main1.png +color: rgba(224, 191, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gta1 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gta1/GTA1.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTA1.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12170/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/gta/ +id: gta1 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: gta +title: Grand Theft Auto (1) Widescreen Fix +screenshots: + background: https://i.imgur.com/2gPPTH5.jpg + images: + - https://i.imgur.com/h6ZwEqM.jpg + - https://i.imgur.com/dhYQmA6.jpg + - https://i.imgur.com/7bYNx0J.jpg + - https://i.imgur.com/2r004po.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'WINO' folder, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/gta1/logo.png b/content/wfp/gta1/logo.png similarity index 100% rename from screens/gta1/logo.png rename to content/wfp/gta1/logo.png diff --git a/screens/gta1/logo.svg b/content/wfp/gta1/logo.svg similarity index 100% rename from screens/gta1/logo.svg rename to content/wfp/gta1/logo.svg diff --git a/screens/gta1/main1.jpg b/content/wfp/gta1/main1.jpg similarity index 100% rename from screens/gta1/main1.jpg rename to content/wfp/gta1/main1.jpg diff --git a/screens/gta1/main1.png b/content/wfp/gta1/main1.png similarity index 100% rename from screens/gta1/main1.png rename to content/wfp/gta1/main1.png diff --git a/screens/gta1/main2.jpg b/content/wfp/gta1/main2.jpg similarity index 100% rename from screens/gta1/main2.jpg rename to content/wfp/gta1/main2.jpg diff --git a/screens/gta1/main2.png b/content/wfp/gta1/main2.png similarity index 100% rename from screens/gta1/main2.png rename to content/wfp/gta1/main2.png diff --git a/screens/gta1/stripe.jpg b/content/wfp/gta1/stripe.jpg similarity index 100% rename from screens/gta1/stripe.jpg rename to content/wfp/gta1/stripe.jpg diff --git a/content/wfp/gta2/index.md b/content/wfp/gta2/index.md new file mode 100644 index 0000000..2ebae9f --- /dev/null +++ b/content/wfp/gta2/index.md @@ -0,0 +1,47 @@ +--- +after: main2.png +before: main1.png +color: rgba(199, 13, 33, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gta2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gta2/GTA2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTA2.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12180/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/gta2/ +id: gta2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v9.6 +tag: gta +title: Grand Theft Auto 2 Widescreen Fix +screenshots: + background: https://i.imgur.com/DMu0xmp.jpg + images: + - https://i.imgur.com/g1zk9ba.jpg + - https://i.imgur.com/zvNushd.jpg + - https://i.imgur.com/a1f4Gjm.jpg + - https://i.imgur.com/qZYrzej.jpg + - https://i.imgur.com/xB1ASVC.jpg + - https://i.imgur.com/URBS1bH.jpg + - https://i.imgur.com/xy4d5Vj.jpg + - https://i.imgur.com/mH3pq95.jpg + - https://i.imgur.com/MDF0bgR.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Quicksave button - F5 by default. Customizable via ini. +* Camera zoom - Num+ and Num-. diff --git a/screens/gta2/logo.png b/content/wfp/gta2/logo.png similarity index 100% rename from screens/gta2/logo.png rename to content/wfp/gta2/logo.png diff --git a/screens/gta2/logo.svg b/content/wfp/gta2/logo.svg similarity index 100% rename from screens/gta2/logo.svg rename to content/wfp/gta2/logo.svg diff --git a/screens/gta2/main1.jpg b/content/wfp/gta2/main1.jpg similarity index 100% rename from screens/gta2/main1.jpg rename to content/wfp/gta2/main1.jpg diff --git a/screens/gta2/main1.png b/content/wfp/gta2/main1.png similarity index 100% rename from screens/gta2/main1.png rename to content/wfp/gta2/main1.png diff --git a/screens/gta2/main2.jpg b/content/wfp/gta2/main2.jpg similarity index 100% rename from screens/gta2/main2.jpg rename to content/wfp/gta2/main2.jpg diff --git a/screens/gta2/main2.png b/content/wfp/gta2/main2.png similarity index 100% rename from screens/gta2/main2.png rename to content/wfp/gta2/main2.png diff --git a/screens/gta2/stripe.jpg b/content/wfp/gta2/stripe.jpg similarity index 100% rename from screens/gta2/stripe.jpg rename to content/wfp/gta2/stripe.jpg diff --git a/content/wfp/gta3/index.md b/content/wfp/gta3/index.md new file mode 100644 index 0000000..623875b --- /dev/null +++ b/content/wfp/gta3/index.md @@ -0,0 +1,43 @@ +--- +after: main2.png +before: main1.png +color: rgba(249, 176, 5, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gta3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gta3/GTA3.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTA3.WidescreenFix.zip?branch=master +- name: Widescreen Frontend Textures + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gta3/GTA3.WidescreenFrontend.zip +icons: +- name: modloader + tooltip: You can also install this via modloader + url: https://gtaforums.com/topic/669520-mod-loader/ +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12100/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/grandtheftauto3/ +id: gta3 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any | v1.0 recommended +tag: gta +title: Grand Theft Auto III Widescreen Fix +screenshots: + background: https://i.imgur.com/1wlgqDT.jpg + images: + - https://i.imgur.com/IwKH9Wo.jpg + - https://i.imgur.com/S0YoBBT.jpg + - https://i.imgur.com/XYDUIhd.jpg + - https://i.imgur.com/PzosQ5L.jpg + youtube: https://www.youtube.com/embed/Is5PLkHmG8s +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download and extract Widescreen Frontend Textures to the game directory *(optional)*. +3. Check the download link below for all available features. diff --git a/screens/gta3/logo.png b/content/wfp/gta3/logo.png similarity index 100% rename from screens/gta3/logo.png rename to content/wfp/gta3/logo.png diff --git a/screens/gta3/logo.svg b/content/wfp/gta3/logo.svg similarity index 100% rename from screens/gta3/logo.svg rename to content/wfp/gta3/logo.svg diff --git a/screens/gta3/main1.jpg b/content/wfp/gta3/main1.jpg similarity index 100% rename from screens/gta3/main1.jpg rename to content/wfp/gta3/main1.jpg diff --git a/screens/gta3/main1.png b/content/wfp/gta3/main1.png similarity index 100% rename from screens/gta3/main1.png rename to content/wfp/gta3/main1.png diff --git a/screens/gta3/main2.jpg b/content/wfp/gta3/main2.jpg similarity index 100% rename from screens/gta3/main2.jpg rename to content/wfp/gta3/main2.jpg diff --git a/screens/gta3/main2.png b/content/wfp/gta3/main2.png similarity index 100% rename from screens/gta3/main2.png rename to content/wfp/gta3/main2.png diff --git a/screens/gta3/stripe.jpg b/content/wfp/gta3/stripe.jpg similarity index 100% rename from screens/gta3/stripe.jpg rename to content/wfp/gta3/stripe.jpg diff --git a/content/wfp/gta3de/index.md b/content/wfp/gta3de/index.md new file mode 100644 index 0000000..7ac9890 --- /dev/null +++ b/content/wfp/gta3de/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main1.png +color: rgba(47, 68, 85, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gta3de +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gta3de/GTA3DE.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTA3DE.FusionMod.zip?branch=master +icons: +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/GTATrilogy +id: gta3de +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v1.112.48699928 +tag: gta +title: GTA III The Definitive Edition Fusion Mod +screenshots: + background: https://media-rockstargames-com.akamaized.net/mfe2/sites-gta-trilogy/feb1da3/img/790a3d8305ef91c78d13.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* Skip Intro and Skip Menu +* Adds an ability to quicksave anywhere by pressing F5 +* Adds an ability to disable first person aim mode for rifles +* Adds an ability to resize HUD +* Adds an ability to fix bugged mouse camera movement diff --git a/screens/gta3de/logo.svg b/content/wfp/gta3de/logo.svg similarity index 100% rename from screens/gta3de/logo.svg rename to content/wfp/gta3de/logo.svg diff --git a/screens/gta3de/main1.jpg b/content/wfp/gta3de/main1.jpg similarity index 100% rename from screens/gta3de/main1.jpg rename to content/wfp/gta3de/main1.jpg diff --git a/screens/gta3de/main1.png b/content/wfp/gta3de/main1.png similarity index 100% rename from screens/gta3de/main1.png rename to content/wfp/gta3de/main1.png diff --git a/screens/gta3de/main2.jpg b/content/wfp/gta3de/main2.jpg similarity index 100% rename from screens/gta3de/main2.jpg rename to content/wfp/gta3de/main2.jpg diff --git a/screens/gta3de/main2.png b/content/wfp/gta3de/main2.png similarity index 100% rename from screens/gta3de/main2.png rename to content/wfp/gta3de/main2.png diff --git a/screens/gta3de/stripe.jpg b/content/wfp/gta3de/stripe.jpg similarity index 100% rename from screens/gta3de/stripe.jpg rename to content/wfp/gta3de/stripe.jpg diff --git a/content/wfp/gtactwpsp/index.md b/content/wfp/gtactwpsp/index.md new file mode 100644 index 0000000..a16f7f9 --- /dev/null +++ b/content/wfp/gtactwpsp/index.md @@ -0,0 +1,41 @@ +--- +after: main2.png +before: main1.png +color: rgba(150, 137, 178, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtactwpsp +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtactwpsp/GTACTW.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTACTW.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/chinatownwars/ +id: gtactwpsp +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.12.3-410-gb352f6107 + version: ULUS-10490 +tag: gta +title: GTA Chinatown Wars Fusion Mod [PPSSPP] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/chinatownwars_biker_2560x1600.jpg + images: + - https://i.imgur.com/67TiYQE.png + - https://i.imgur.com/MaPGP3U.png + - https://i.imgur.com/J8gAIjv.jpeg + youtube: https://www.youtube.com/embed/CbbNctA5dhI +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Alternative controls +* Adds an option to activate 3rd person camera. +* Adds an option to enable radio in emergency vehicles. diff --git a/screens/gtactwpsp/logo.svg b/content/wfp/gtactwpsp/logo.svg similarity index 100% rename from screens/gtactwpsp/logo.svg rename to content/wfp/gtactwpsp/logo.svg diff --git a/screens/gtactwpsp/main1.jpg b/content/wfp/gtactwpsp/main1.jpg similarity index 100% rename from screens/gtactwpsp/main1.jpg rename to content/wfp/gtactwpsp/main1.jpg diff --git a/screens/gtactwpsp/main1.png b/content/wfp/gtactwpsp/main1.png similarity index 100% rename from screens/gtactwpsp/main1.png rename to content/wfp/gtactwpsp/main1.png diff --git a/screens/gtactwpsp/main2.jpg b/content/wfp/gtactwpsp/main2.jpg similarity index 100% rename from screens/gtactwpsp/main2.jpg rename to content/wfp/gtactwpsp/main2.jpg diff --git a/screens/gtactwpsp/main2.png b/content/wfp/gtactwpsp/main2.png similarity index 100% rename from screens/gtactwpsp/main2.png rename to content/wfp/gtactwpsp/main2.png diff --git a/screens/gtactwpsp/stripe.jpg b/content/wfp/gtactwpsp/stripe.jpg similarity index 100% rename from screens/gtactwpsp/stripe.jpg rename to content/wfp/gtactwpsp/stripe.jpg diff --git a/content/wfp/gtaivfusionfix/index.md b/content/wfp/gtaivfusionfix/index.md new file mode 100644 index 0000000..28800c6 --- /dev/null +++ b/content/wfp/gtaivfusionfix/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(178, 178, 178, 1) +download: https://github.com/ThirteenAG/GTAIV.EFLC.FusionFix#readme +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/GTAIV.EFLC.FusionFix/releases/latest/download/GTAIV.EFLC.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/gtaiv-eflc-fusionfix/artifacts/GTAIV.EFLC.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12210/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/IV +id: gtaivfusionfix +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: GTA IV The Complete Edition Fusion Fix +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/theballadofgaytony_wallpaper3_2560x1600.jpg + images: + - https://i.imgur.com/fymlijG.jpeg + - https://i.imgur.com/TtWyqyO.jpeg + - https://i.imgur.com/nejeVUl.jpeg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/gtaivfusionfix/logo.svg b/content/wfp/gtaivfusionfix/logo.svg similarity index 100% rename from screens/gtaivfusionfix/logo.svg rename to content/wfp/gtaivfusionfix/logo.svg diff --git a/screens/gtaivfusionfix/main1.jpg b/content/wfp/gtaivfusionfix/main1.jpg similarity index 100% rename from screens/gtaivfusionfix/main1.jpg rename to content/wfp/gtaivfusionfix/main1.jpg diff --git a/screens/gtaivfusionfix/main1.png b/content/wfp/gtaivfusionfix/main1.png similarity index 100% rename from screens/gtaivfusionfix/main1.png rename to content/wfp/gtaivfusionfix/main1.png diff --git a/screens/gtaivfusionfix/main2.jpg b/content/wfp/gtaivfusionfix/main2.jpg similarity index 100% rename from screens/gtaivfusionfix/main2.jpg rename to content/wfp/gtaivfusionfix/main2.jpg diff --git a/screens/gtaivfusionfix/main2.png b/content/wfp/gtaivfusionfix/main2.png similarity index 100% rename from screens/gtaivfusionfix/main2.png rename to content/wfp/gtaivfusionfix/main2.png diff --git a/screens/gtaivfusionfix/stripe.jpg b/content/wfp/gtaivfusionfix/stripe.jpg similarity index 100% rename from screens/gtaivfusionfix/stripe.jpg rename to content/wfp/gtaivfusionfix/stripe.jpg diff --git a/content/wfp/gtalcs/index.md b/content/wfp/gtalcs/index.md new file mode 100644 index 0000000..fc47797 --- /dev/null +++ b/content/wfp/gtalcs/index.md @@ -0,0 +1,37 @@ +--- +after: main2.png +before: main1.png +color: rgba(209, 33, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtalcs +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtalcs/GTALCS.PCSX2F.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTALCS.PCSX2F.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins (PCSX2F) + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/libertycitystories/ +id: gtalcs +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: SLUS-21423 +tag: gta +title: GTA Liberty City Stories Widescreen Fix [PCSX2F] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/libertycitystories_bridge_1600x1200.jpg + images: [] + youtube: '' +--- + +1. Download and extract [PCSX2 Fork With Plugins](https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest). +2. Download and extract the archive to the root directory, where exe is located. +3. Change the aspect ratio or window size of the emulator. +4. Launch the game. + +* Proper aspect ratio for any resolution, hor+ FOV, blur removal and skip intro diff --git a/screens/gtalcs/logo.png b/content/wfp/gtalcs/logo.png similarity index 100% rename from screens/gtalcs/logo.png rename to content/wfp/gtalcs/logo.png diff --git a/screens/gtalcs/logo.svg b/content/wfp/gtalcs/logo.svg similarity index 100% rename from screens/gtalcs/logo.svg rename to content/wfp/gtalcs/logo.svg diff --git a/screens/gtalcs/main1.jpg b/content/wfp/gtalcs/main1.jpg similarity index 100% rename from screens/gtalcs/main1.jpg rename to content/wfp/gtalcs/main1.jpg diff --git a/screens/gtalcs/main1.png b/content/wfp/gtalcs/main1.png similarity index 100% rename from screens/gtalcs/main1.png rename to content/wfp/gtalcs/main1.png diff --git a/screens/gtalcs/main2.jpg b/content/wfp/gtalcs/main2.jpg similarity index 100% rename from screens/gtalcs/main2.jpg rename to content/wfp/gtalcs/main2.jpg diff --git a/screens/gtalcs/main2.png b/content/wfp/gtalcs/main2.png similarity index 100% rename from screens/gtalcs/main2.png rename to content/wfp/gtalcs/main2.png diff --git a/screens/gtalcs/main3.jpg b/content/wfp/gtalcs/main3.jpg similarity index 100% rename from screens/gtalcs/main3.jpg rename to content/wfp/gtalcs/main3.jpg diff --git a/screens/gtalcs/main3.png b/content/wfp/gtalcs/main3.png similarity index 100% rename from screens/gtalcs/main3.png rename to content/wfp/gtalcs/main3.png diff --git a/screens/gtalcs/stripe.jpg b/content/wfp/gtalcs/stripe.jpg similarity index 100% rename from screens/gtalcs/stripe.jpg rename to content/wfp/gtalcs/stripe.jpg diff --git a/content/wfp/gtalcspsp/index.md b/content/wfp/gtalcspsp/index.md new file mode 100644 index 0000000..64b5dcf --- /dev/null +++ b/content/wfp/gtalcspsp/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(209, 33, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtalcspsp +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtalcspsp/GTALCS.PPSSPP.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTALCS.PPSSPP.WidescreenFix.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/libertycitystories/ +id: gtalcspsp +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.12.3-410-gb352f6107 + version: Any +tag: gta +title: GTA Liberty City Stories Widescreen Fix [PPSSPP] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/libertycitystories_bridge_1600x1200.jpg + images: + - https://i.imgur.com/77YLj8w.jpeg + - https://i.imgur.com/GXY7ZJo.jpeg + - https://i.imgur.com/kzxopKl.jpeg + - https://i.imgur.com/sckpxZ7.jpeg + - https://i.imgur.com/OPVJenN.jpeg + - https://i.imgur.com/WDiZrl0.jpeg + - https://i.imgur.com/ubvkDHK.jpeg + youtube: https://www.youtube.com/embed/xaW3t5Q8qTU +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Smaller resizable hud, dual analog patch, 60 fps and skip intro +* [Project2DFX](https://user-images.githubusercontent.com/4904157/156891784-3143e193-2e90-470d-bdc1-fdc94bf7ea87.png) +* [Improved Vehicle Lights](https://imgur.com/ucsl46z) diff --git a/screens/gtalcspsp/logo.png b/content/wfp/gtalcspsp/logo.png similarity index 100% rename from screens/gtalcspsp/logo.png rename to content/wfp/gtalcspsp/logo.png diff --git a/screens/gtalcspsp/logo.svg b/content/wfp/gtalcspsp/logo.svg similarity index 100% rename from screens/gtalcspsp/logo.svg rename to content/wfp/gtalcspsp/logo.svg diff --git a/screens/gtalcspsp/main1.jpg b/content/wfp/gtalcspsp/main1.jpg similarity index 100% rename from screens/gtalcspsp/main1.jpg rename to content/wfp/gtalcspsp/main1.jpg diff --git a/screens/gtalcspsp/main1.png b/content/wfp/gtalcspsp/main1.png similarity index 100% rename from screens/gtalcspsp/main1.png rename to content/wfp/gtalcspsp/main1.png diff --git a/screens/gtalcspsp/main2.jpg b/content/wfp/gtalcspsp/main2.jpg similarity index 100% rename from screens/gtalcspsp/main2.jpg rename to content/wfp/gtalcspsp/main2.jpg diff --git a/screens/gtalcspsp/main2.png b/content/wfp/gtalcspsp/main2.png similarity index 100% rename from screens/gtalcspsp/main2.png rename to content/wfp/gtalcspsp/main2.png diff --git a/screens/gtalcspsp/stripe.jpg b/content/wfp/gtalcspsp/stripe.jpg similarity index 100% rename from screens/gtalcspsp/stripe.jpg rename to content/wfp/gtalcspsp/stripe.jpg diff --git a/content/wfp/gtasa/index.md b/content/wfp/gtasa/index.md new file mode 100644 index 0000000..d078626 --- /dev/null +++ b/content/wfp/gtasa/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(198, 217, 239, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtasa +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtasa/GTASA.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTASA.WidescreenFix.zip?branch=master +- name: Widescreen Frontend Textures + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtasa/GTASA.WidescreenFrontend.zip +icons: +- name: modloader + tooltip: You can also install this via modloader + url: https://gtaforums.com/topic/669520-mod-loader/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/sanandreas/ +id: gtasa +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v1.0 US +tag: gta +title: Grand Theft Auto San Andreas Widescreen Fix +screenshots: + background: https://media.rockstargames.com/rockstargames-newsite/img/global/downloads/wallpapers/games/sanandreas_boxart_2880x1800.jpg + images: + - https://i.imgur.com/4dof6Vc.jpg + - https://i.imgur.com/A9eSvu5.jpg + - https://i.imgur.com/udFhfM6.jpg + - https://i.imgur.com/qjK3OyJ.jpg + - https://i.imgur.com/PLbJlO3.png + - https://i.imgur.com/71ntbRI.png + youtube: https://www.youtube.com/embed/si-cziHBaPQ +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download and extract Widescreen Frontend Textures to the game directory *(optional)*. +3. Check the download link below for all available features. diff --git a/screens/gtasa/logo.png b/content/wfp/gtasa/logo.png similarity index 100% rename from screens/gtasa/logo.png rename to content/wfp/gtasa/logo.png diff --git a/screens/gtasa/logo.svg b/content/wfp/gtasa/logo.svg similarity index 100% rename from screens/gtasa/logo.svg rename to content/wfp/gtasa/logo.svg diff --git a/screens/gtasa/main1.jpg b/content/wfp/gtasa/main1.jpg similarity index 100% rename from screens/gtasa/main1.jpg rename to content/wfp/gtasa/main1.jpg diff --git a/screens/gtasa/main1.png b/content/wfp/gtasa/main1.png similarity index 100% rename from screens/gtasa/main1.png rename to content/wfp/gtasa/main1.png diff --git a/screens/gtasa/main2.jpg b/content/wfp/gtasa/main2.jpg similarity index 100% rename from screens/gtasa/main2.jpg rename to content/wfp/gtasa/main2.jpg diff --git a/screens/gtasa/main2.png b/content/wfp/gtasa/main2.png similarity index 100% rename from screens/gtasa/main2.png rename to content/wfp/gtasa/main2.png diff --git a/screens/gtasa/stripe.jpg b/content/wfp/gtasa/stripe.jpg similarity index 100% rename from screens/gtasa/stripe.jpg rename to content/wfp/gtasa/stripe.jpg diff --git a/content/wfp/gtasade/index.md b/content/wfp/gtasade/index.md new file mode 100644 index 0000000..5264534 --- /dev/null +++ b/content/wfp/gtasade/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(193, 213, 162, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtasade +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtasade/GTASADE.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTASADE.FusionMod.zip?branch=master +icons: +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/GTATrilogy +id: gtasade +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v1.112.48699928 +tag: gta +title: GTA San Andreas The Definitive Edition Fusion Mod +screenshots: + background: https://media-rockstargames-com.akamaized.net/mfe2/sites-gta-trilogy/feb1da3/img/a29f5feb418cc2b7914e.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* Skip Intro and Skip Menu +* Adds an ability to quicksave anywhere by pressing F5 +* Adds an ability to resize HUD +* Adds an ability to fix bugged mouse camera movement diff --git a/screens/gtasade/logo.svg b/content/wfp/gtasade/logo.svg similarity index 100% rename from screens/gtasade/logo.svg rename to content/wfp/gtasade/logo.svg diff --git a/screens/gtasade/main1.jpg b/content/wfp/gtasade/main1.jpg similarity index 100% rename from screens/gtasade/main1.jpg rename to content/wfp/gtasade/main1.jpg diff --git a/screens/gtasade/main1.png b/content/wfp/gtasade/main1.png similarity index 100% rename from screens/gtasade/main1.png rename to content/wfp/gtasade/main1.png diff --git a/screens/gtasade/main2.jpg b/content/wfp/gtasade/main2.jpg similarity index 100% rename from screens/gtasade/main2.jpg rename to content/wfp/gtasade/main2.jpg diff --git a/screens/gtasade/main2.png b/content/wfp/gtasade/main2.png similarity index 100% rename from screens/gtasade/main2.png rename to content/wfp/gtasade/main2.png diff --git a/screens/gtasade/stripe.jpg b/content/wfp/gtasade/stripe.jpg similarity index 100% rename from screens/gtasade/stripe.jpg rename to content/wfp/gtasade/stripe.jpg diff --git a/content/wfp/gtavc/index.md b/content/wfp/gtavc/index.md new file mode 100644 index 0000000..4fdadea --- /dev/null +++ b/content/wfp/gtavc/index.md @@ -0,0 +1,43 @@ +--- +after: main2.png +before: main1.png +color: rgba(238, 119, 178, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtavc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtavc/GTAVC.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTAVC.WidescreenFix.zip?branch=master +- name: Widescreen Frontend Textures + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtavc/GTAVC.WidescreenFrontend.zip +icons: +- name: modloader + tooltip: You can also install this via modloader + url: https://gtaforums.com/topic/669520-mod-loader/ +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12110/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/vicecity/ +id: gtavc +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any | v1.0 recommended +tag: gta +title: Grand Theft Auto Vice City Widescreen Fix +screenshots: + background: https://media.rockstargames.com/rockstargames-newsite/img/global/downloads/wallpapers/games/gtavc_flash_2880x1800.jpg + images: + - https://i.imgur.com/scpTJIW.jpg + - https://i.imgur.com/AvM0TLj.jpg + - https://i.imgur.com/rEKpBbf.jpg + - https://i.imgur.com/gQnhOzv.jpg + youtube: https://www.youtube.com/embed/9B-JQlI5wtQ +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download and extract Widescreen Frontend Textures to the game directory *(optional)*. +3. Check the download link below for all available features. diff --git a/screens/gtavc/logo.png b/content/wfp/gtavc/logo.png similarity index 100% rename from screens/gtavc/logo.png rename to content/wfp/gtavc/logo.png diff --git a/screens/gtavc/logo.svg b/content/wfp/gtavc/logo.svg similarity index 100% rename from screens/gtavc/logo.svg rename to content/wfp/gtavc/logo.svg diff --git a/screens/gtavc/main1.jpg b/content/wfp/gtavc/main1.jpg similarity index 100% rename from screens/gtavc/main1.jpg rename to content/wfp/gtavc/main1.jpg diff --git a/screens/gtavc/main1.png b/content/wfp/gtavc/main1.png similarity index 100% rename from screens/gtavc/main1.png rename to content/wfp/gtavc/main1.png diff --git a/screens/gtavc/main2.jpg b/content/wfp/gtavc/main2.jpg similarity index 100% rename from screens/gtavc/main2.jpg rename to content/wfp/gtavc/main2.jpg diff --git a/screens/gtavc/main2.png b/content/wfp/gtavc/main2.png similarity index 100% rename from screens/gtavc/main2.png rename to content/wfp/gtavc/main2.png diff --git a/screens/gtavc/stripe.jpg b/content/wfp/gtavc/stripe.jpg similarity index 100% rename from screens/gtavc/stripe.jpg rename to content/wfp/gtavc/stripe.jpg diff --git a/content/wfp/gtavcde/index.md b/content/wfp/gtavcde/index.md new file mode 100644 index 0000000..1a84923 --- /dev/null +++ b/content/wfp/gtavcde/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 179, 201, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtavcde +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtavcde/GTAVCDE.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTAVCDE.FusionMod.zip?branch=master +icons: +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/GTATrilogy +id: gtavcde +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v1.112.48699928 +tag: gta +title: GTA Vice City The Definitive Edition Fusion Mod +screenshots: + background: https://media-rockstargames-com.akamaized.net/mfe2/sites-gta-trilogy/feb1da3/img/0cf71a0a0df3029a9e5c.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* Skip Intro and Skip Menu +* Adds an ability to quicksave anywhere by pressing F5 +* Adds an ability to disable first person aim mode for rifles +* Adds an ability to resize HUD +* Adds an ability to fix bugged mouse camera movement diff --git a/screens/gtavcde/logo.svg b/content/wfp/gtavcde/logo.svg similarity index 100% rename from screens/gtavcde/logo.svg rename to content/wfp/gtavcde/logo.svg diff --git a/screens/gtavcde/main1.jpg b/content/wfp/gtavcde/main1.jpg similarity index 100% rename from screens/gtavcde/main1.jpg rename to content/wfp/gtavcde/main1.jpg diff --git a/screens/gtavcde/main1.png b/content/wfp/gtavcde/main1.png similarity index 100% rename from screens/gtavcde/main1.png rename to content/wfp/gtavcde/main1.png diff --git a/screens/gtavcde/main2.jpg b/content/wfp/gtavcde/main2.jpg similarity index 100% rename from screens/gtavcde/main2.jpg rename to content/wfp/gtavcde/main2.jpg diff --git a/screens/gtavcde/main2.png b/content/wfp/gtavcde/main2.png similarity index 100% rename from screens/gtavcde/main2.png rename to content/wfp/gtavcde/main2.png diff --git a/screens/gtavcde/stripe.jpg b/content/wfp/gtavcde/stripe.jpg similarity index 100% rename from screens/gtavcde/stripe.jpg rename to content/wfp/gtavcde/stripe.jpg diff --git a/content/wfp/gtavcs/index.md b/content/wfp/gtavcs/index.md new file mode 100644 index 0000000..c056368 --- /dev/null +++ b/content/wfp/gtavcs/index.md @@ -0,0 +1,46 @@ +--- +after: main2.png +before: main1.png +color: rgba(217, 73, 131, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtavcs +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtavcs/GTAVCS.PCSX2F.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTAVCS.PCSX2F.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins (PCSX2F) + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/vicecitystories/ +id: gtavcs +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: SLUS-21590 +tag: gta +title: GTA Vice City Stories Widescreen Fix [PCSX2F] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/vicecitystories_vcsgirl02_1600x1200.jpg + images: + - https://i.imgur.com/fZfPlO8.jpeg + - https://i.imgur.com/Eiy9TiQ.jpeg + - https://i.imgur.com/hplRAA4.jpeg + - https://i.imgur.com/2rIT7dW.jpeg + - https://i.imgur.com/dDs6s3w.jpeg + - https://i.imgur.com/JVg4AxV.jpeg + - https://i.imgur.com/UZIxYXF.jpeg + youtube: https://www.youtube.com/embed/TrkxdiQW4ms +--- + +1. Download and extract [PCSX2 Fork With Plugins](https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest). +2. Download and extract the archive to the root directory, where exe is located. +3. Change the aspect ratio or window size of the emulator. +4. Launch the game. + +* Proper aspect ratio, hor+ FOV, modern controls scheme and more +* [Project2DFX](https://user-images.githubusercontent.com/4904157/166120612-d05a7258-2187-488c-b408-087511bd93a8.png) +* [Improved Vehicle Lights](https://imgur.com/ucsl46z) diff --git a/screens/gtavcs/logo.png b/content/wfp/gtavcs/logo.png similarity index 100% rename from screens/gtavcs/logo.png rename to content/wfp/gtavcs/logo.png diff --git a/screens/gtavcs/logo.svg b/content/wfp/gtavcs/logo.svg similarity index 100% rename from screens/gtavcs/logo.svg rename to content/wfp/gtavcs/logo.svg diff --git a/screens/gtavcs/main1.jpg b/content/wfp/gtavcs/main1.jpg similarity index 100% rename from screens/gtavcs/main1.jpg rename to content/wfp/gtavcs/main1.jpg diff --git a/screens/gtavcs/main1.png b/content/wfp/gtavcs/main1.png similarity index 100% rename from screens/gtavcs/main1.png rename to content/wfp/gtavcs/main1.png diff --git a/screens/gtavcs/main2.jpg b/content/wfp/gtavcs/main2.jpg similarity index 100% rename from screens/gtavcs/main2.jpg rename to content/wfp/gtavcs/main2.jpg diff --git a/screens/gtavcs/main2.png b/content/wfp/gtavcs/main2.png similarity index 100% rename from screens/gtavcs/main2.png rename to content/wfp/gtavcs/main2.png diff --git a/screens/gtavcs/main3.jpg b/content/wfp/gtavcs/main3.jpg similarity index 100% rename from screens/gtavcs/main3.jpg rename to content/wfp/gtavcs/main3.jpg diff --git a/screens/gtavcs/main3.png b/content/wfp/gtavcs/main3.png similarity index 100% rename from screens/gtavcs/main3.png rename to content/wfp/gtavcs/main3.png diff --git a/screens/gtavcs/stripe.jpg b/content/wfp/gtavcs/stripe.jpg similarity index 100% rename from screens/gtavcs/stripe.jpg rename to content/wfp/gtavcs/stripe.jpg diff --git a/content/wfp/gtavcspsp/index.md b/content/wfp/gtavcspsp/index.md new file mode 100644 index 0000000..4e74d9c --- /dev/null +++ b/content/wfp/gtavcspsp/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(217, 73, 131, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gtavcspsp +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gtavcspsp/GTAVCS.PPSSPP.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/GTAVCS.PPSSPP.WidescreenFix.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/vicecitystories/ +id: gtavcspsp +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.12.3-410-gb352f6107 + version: Any +tag: gta +title: GTA Vice City Stories Widescreen Fix [PPSSPP] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/vicecitystories_vcsgirl02_1600x1200.jpg + images: + - https://i.imgur.com/CltlwfW.jpeg + - https://i.imgur.com/BJYpwGc.jpeg + - https://i.imgur.com/ObiEEh1.jpeg + - https://i.imgur.com/ZCFCPP8.jpeg + - https://i.imgur.com/7OE71qu.jpeg + - https://i.imgur.com/beCABhU.jpeg + - https://i.imgur.com/Mdf36jz.jpeg + youtube: https://www.youtube.com/embed/DJUdUjdw3VQ +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Smaller resizable hud, modern controls scheme, 60 fps and more +* [Project2DFX](https://user-images.githubusercontent.com/4904157/156879759-6bd08507-f30b-4890-ae69-b0503b998aa6.png) +* [Improved Vehicle Lights](https://imgur.com/ucsl46z) diff --git a/screens/gtavcspsp/logo.png b/content/wfp/gtavcspsp/logo.png similarity index 100% rename from screens/gtavcspsp/logo.png rename to content/wfp/gtavcspsp/logo.png diff --git a/screens/gtavcspsp/logo.svg b/content/wfp/gtavcspsp/logo.svg similarity index 100% rename from screens/gtavcspsp/logo.svg rename to content/wfp/gtavcspsp/logo.svg diff --git a/screens/gtavcspsp/main1.jpg b/content/wfp/gtavcspsp/main1.jpg similarity index 100% rename from screens/gtavcspsp/main1.jpg rename to content/wfp/gtavcspsp/main1.jpg diff --git a/screens/gtavcspsp/main1.png b/content/wfp/gtavcspsp/main1.png similarity index 100% rename from screens/gtavcspsp/main1.png rename to content/wfp/gtavcspsp/main1.png diff --git a/screens/gtavcspsp/main2.jpg b/content/wfp/gtavcspsp/main2.jpg similarity index 100% rename from screens/gtavcspsp/main2.jpg rename to content/wfp/gtavcspsp/main2.jpg diff --git a/screens/gtavcspsp/main2.png b/content/wfp/gtavcspsp/main2.png similarity index 100% rename from screens/gtavcspsp/main2.png rename to content/wfp/gtavcspsp/main2.png diff --git a/screens/gtavcspsp/stripe.jpg b/content/wfp/gtavcspsp/stripe.jpg similarity index 100% rename from screens/gtavcspsp/stripe.jpg rename to content/wfp/gtavcspsp/stripe.jpg diff --git a/content/wfp/gun/index.md b/content/wfp/gun/index.md new file mode 100644 index 0000000..347c7c0 --- /dev/null +++ b/content/wfp/gun/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/gun +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/gun/Gun.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Gun.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/2610/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/gun +id: gun +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Gun Widescreen Fix +screenshots: + background: https://i.imgur.com/IgUNy8t.jpg + images: + - https://i.imgur.com/DJ3gzYw.jpg + - https://i.imgur.com/HZG9o0X.jpg + - https://i.imgur.com/7CFvk8Z.jpg + - https://i.imgur.com/hvJbJOK.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/gun/logo.png b/content/wfp/gun/logo.png similarity index 100% rename from screens/gun/logo.png rename to content/wfp/gun/logo.png diff --git a/screens/gun/logo.svg b/content/wfp/gun/logo.svg similarity index 100% rename from screens/gun/logo.svg rename to content/wfp/gun/logo.svg diff --git a/screens/gun/main1.jpg b/content/wfp/gun/main1.jpg similarity index 100% rename from screens/gun/main1.jpg rename to content/wfp/gun/main1.jpg diff --git a/screens/gun/main1.png b/content/wfp/gun/main1.png similarity index 100% rename from screens/gun/main1.png rename to content/wfp/gun/main1.png diff --git a/screens/gun/main2.jpg b/content/wfp/gun/main2.jpg similarity index 100% rename from screens/gun/main2.jpg rename to content/wfp/gun/main2.jpg diff --git a/screens/gun/main2.png b/content/wfp/gun/main2.png similarity index 100% rename from screens/gun/main2.png rename to content/wfp/gun/main2.png diff --git a/content/wfp/hd2/index.md b/content/wfp/hd2/index.md new file mode 100644 index 0000000..4bfb393 --- /dev/null +++ b/content/wfp/hd2/index.md @@ -0,0 +1,41 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/hd2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/hd2/HiddenandDangerous2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/HiddenandDangerous2.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/703320/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/hidden_dangerous_2_courage_under_fire +id: hd2 +logo: logo.png +support: + tooltip: '' + version: Any +tag: other +title: Hidden and Dangerous 2 Widescreen Fix +screenshots: + background: https://i.imgur.com/wvcsHVI.jpg + images: + - https://i.imgur.com/vfF0gO5.jpg + - https://i.imgur.com/FTDw2uT.jpg + - https://i.imgur.com/mUpldfw.jpg + - https://i.imgur.com/shUr91i.jpg + - https://i.imgur.com/UkcMZeV.jpg + - https://i.imgur.com/b7E1L86.jpg + - https://i.imgur.com/DguNZ1c.jpg + - https://i.imgur.com/0qbkNdX.jpg + - https://i.imgur.com/GbIvJZj.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/hd2/logo.png b/content/wfp/hd2/logo.png similarity index 100% rename from screens/hd2/logo.png rename to content/wfp/hd2/logo.png diff --git a/screens/hd2/main1.jpg b/content/wfp/hd2/main1.jpg similarity index 100% rename from screens/hd2/main1.jpg rename to content/wfp/hd2/main1.jpg diff --git a/screens/hd2/main1.png b/content/wfp/hd2/main1.png similarity index 100% rename from screens/hd2/main1.png rename to content/wfp/hd2/main1.png diff --git a/screens/hd2/main2.jpg b/content/wfp/hd2/main2.jpg similarity index 100% rename from screens/hd2/main2.jpg rename to content/wfp/hd2/main2.jpg diff --git a/screens/hd2/main2.png b/content/wfp/hd2/main2.png similarity index 100% rename from screens/hd2/main2.png rename to content/wfp/hd2/main2.png diff --git a/content/wfp/justcause/index.md b/content/wfp/justcause/index.md new file mode 100644 index 0000000..73cba56 --- /dev/null +++ b/content/wfp/justcause/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/justcause +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/justcause/JustCause.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/JustCause.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/6880/ +- name: earth + tooltip: Official website + url: https://justcause.com/ +id: justcause +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Just Cause Widescreen Fix +screenshots: + background: https://i.imgur.com/zwRV1vs.jpg + images: + - https://i.imgur.com/mO2b7kV.jpg + - https://i.imgur.com/gFavzxx.jpg + - https://i.imgur.com/vDrlJfR.jpg + - https://i.imgur.com/oUfKYVX.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/justcause/logo.png b/content/wfp/justcause/logo.png similarity index 100% rename from screens/justcause/logo.png rename to content/wfp/justcause/logo.png diff --git a/screens/justcause/logo.svg b/content/wfp/justcause/logo.svg similarity index 100% rename from screens/justcause/logo.svg rename to content/wfp/justcause/logo.svg diff --git a/screens/justcause/main1.jpg b/content/wfp/justcause/main1.jpg similarity index 100% rename from screens/justcause/main1.jpg rename to content/wfp/justcause/main1.jpg diff --git a/screens/justcause/main1.png b/content/wfp/justcause/main1.png similarity index 100% rename from screens/justcause/main1.png rename to content/wfp/justcause/main1.png diff --git a/screens/justcause/main2.jpg b/content/wfp/justcause/main2.jpg similarity index 100% rename from screens/justcause/main2.jpg rename to content/wfp/justcause/main2.jpg diff --git a/screens/justcause/main2.png b/content/wfp/justcause/main2.png similarity index 100% rename from screens/justcause/main2.png rename to content/wfp/justcause/main2.png diff --git a/content/wfp/kingkong/index.md b/content/wfp/kingkong/index.md new file mode 100644 index 0000000..04881d4 --- /dev/null +++ b/content/wfp/kingkong/index.md @@ -0,0 +1,40 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/kingkong +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/kingkong/KingKong.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/KingKong.WidescreenFix.zip?branch=master +icons: [] +id: kingkong +logo: logo.png +support: + tooltip: '' + version: Any +tag: other +title: King Kong Widescreen Fix +screenshots: + background: https://i.imgur.com/dNq1Tn9.jpg + images: + - https://i.imgur.com/c67N7uB.jpg + - https://i.imgur.com/8PNZAw0.jpg + - https://i.imgur.com/jXDNQnO.jpg + - https://i.imgur.com/eCcwzyY.jpg + - https://i.imgur.com/LDc3KDr.png + - https://i.imgur.com/CVHl9uy.jpg + - https://i.imgur.com/n5To4aP.jpg + - https://i.imgur.com/Hdfj8AM.jpg + - https://i.imgur.com/JohXzMq.jpg + youtube: https://www.youtube.com/embed/oOdP_E0seg8 +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Only works with Gamer's Edition, Signature Edition is not compatible. +* Includes d3d9 wrapper that limits frame rate to 60fps to avoid game-breaking bugs. You can set limit to 30fps via d3d9.ini. diff --git a/screens/kingkong/logo.png b/content/wfp/kingkong/logo.png similarity index 100% rename from screens/kingkong/logo.png rename to content/wfp/kingkong/logo.png diff --git a/screens/kingkong/logo.svg b/content/wfp/kingkong/logo.svg similarity index 100% rename from screens/kingkong/logo.svg rename to content/wfp/kingkong/logo.svg diff --git a/screens/kingkong/main1.jpg b/content/wfp/kingkong/main1.jpg similarity index 100% rename from screens/kingkong/main1.jpg rename to content/wfp/kingkong/main1.jpg diff --git a/screens/kingkong/main1.png b/content/wfp/kingkong/main1.png similarity index 100% rename from screens/kingkong/main1.png rename to content/wfp/kingkong/main1.png diff --git a/screens/kingkong/main2.jpg b/content/wfp/kingkong/main2.jpg similarity index 100% rename from screens/kingkong/main2.jpg rename to content/wfp/kingkong/main2.jpg diff --git a/screens/kingkong/main2.png b/content/wfp/kingkong/main2.png similarity index 100% rename from screens/kingkong/main2.png rename to content/wfp/kingkong/main2.png diff --git a/content/wfp/kr/index.md b/content/wfp/kr/index.md new file mode 100644 index 0000000..470454d --- /dev/null +++ b/content/wfp/kr/index.md @@ -0,0 +1,50 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/kr +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/kr/KnightRider.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/KnightRider.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +id: kr +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: 'Knight Rider: The Game Widescreen Fix [+PCSX2F]' +screenshots: + background: https://i.imgur.com/OUQlReb.jpg + images: + - https://i.imgur.com/a7p4Aoo.jpg + - https://i.imgur.com/Sh6tNBX.jpg + - https://i.imgur.com/95BaaPO.jpg + - https://i.imgur.com/zsCabs6.jpg + - https://i.imgur.com/2jD4Q5H.jpg + - https://i.imgur.com/ChT2Zf4.jpg + - https://i.imgur.com/8SX8rvu.jpg + - https://i.imgur.com/dfdW1xf.jpg + - https://i.imgur.com/XRTsd5a.jpg + - https://i.imgur.com/XTsBX0y.jpg + - https://i.imgur.com/0VzPbFI.jpg + - https://i.imgur.com/2sR0LdY.png + - https://i.imgur.com/DOUgKTf.jpg + - https://i.imgur.com/R1QL0JR.jpg + - https://i.imgur.com/FDc1LpR.jpg + - https://i.imgur.com/BGb4OyV.jpg + - https://i.imgur.com/jbjq6lZ.jpg + - https://i.imgur.com/eiUsO5d.jpg + - https://i.imgur.com/VTF3Sz0.jpg + - https://i.imgur.com/1SvtMup.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the game exe is located. + +* Includes [dgVoodoo](http://dege.freeweb.hu/dgVoodoo2/) to fix some game issues. However, dgVoodoo introduces more issues like invisible cutscene borders and crashes after loading a level, so you might not want to use it. diff --git a/screens/kr/logo.svg b/content/wfp/kr/logo.svg similarity index 100% rename from screens/kr/logo.svg rename to content/wfp/kr/logo.svg diff --git a/screens/kr/main1.jpg b/content/wfp/kr/main1.jpg similarity index 100% rename from screens/kr/main1.jpg rename to content/wfp/kr/main1.jpg diff --git a/screens/kr/main1.png b/content/wfp/kr/main1.png similarity index 100% rename from screens/kr/main1.png rename to content/wfp/kr/main1.png diff --git a/screens/kr/main2.jpg b/content/wfp/kr/main2.jpg similarity index 100% rename from screens/kr/main2.jpg rename to content/wfp/kr/main2.jpg diff --git a/screens/kr/main2.png b/content/wfp/kr/main2.png similarity index 100% rename from screens/kr/main2.png rename to content/wfp/kr/main2.png diff --git a/content/wfp/kr2/index.md b/content/wfp/kr2/index.md new file mode 100644 index 0000000..a7c6148 --- /dev/null +++ b/content/wfp/kr2/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/kr2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/kr2/KnightRider2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/KnightRider2.WidescreenFix.zip?branch=master +icons: [] +id: kr2 +logo: logo.png +support: + tooltip: '' + version: Any +tag: other +title: 'Knight Rider: The Game 2 Widescreen Fix' +screenshots: + background: https://i.imgur.com/ohQxtsR.jpg + images: + - https://i.imgur.com/B3yka11.jpg + - https://i.imgur.com/RiJ2cWy.jpg + - https://i.imgur.com/XVqamAN.jpg + - https://i.imgur.com/oa9TCGT.jpg + - https://i.imgur.com/TVVAGC9.png + - https://i.imgur.com/lowoP96.jpg + - https://i.imgur.com/0XUsB2E.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the game exe is located. + +* Includes [dgVoodoo](http://dege.freeweb.hu/dgVoodoo2/) to fix some game issues. However, dgVoodoo introduces more issues like invisible cutscene borders and fading, so you might not want to use it. diff --git a/screens/kr2/logo.png b/content/wfp/kr2/logo.png similarity index 100% rename from screens/kr2/logo.png rename to content/wfp/kr2/logo.png diff --git a/screens/kr2/main1.jpg b/content/wfp/kr2/main1.jpg similarity index 100% rename from screens/kr2/main1.jpg rename to content/wfp/kr2/main1.jpg diff --git a/screens/kr2/main1.png b/content/wfp/kr2/main1.png similarity index 100% rename from screens/kr2/main1.png rename to content/wfp/kr2/main1.png diff --git a/screens/kr2/main2.jpg b/content/wfp/kr2/main2.jpg similarity index 100% rename from screens/kr2/main2.jpg rename to content/wfp/kr2/main2.jpg diff --git a/screens/kr2/main2.png b/content/wfp/kr2/main2.png similarity index 100% rename from screens/kr2/main2.png rename to content/wfp/kr2/main2.png diff --git a/content/wfp/larush/index.md b/content/wfp/larush/index.md new file mode 100644 index 0000000..bbf2a8b --- /dev/null +++ b/content/wfp/larush/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(236, 113, 53, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/larush +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/larush/LARush.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/LARush.WidescreenFix.zip?branch=master +icons: [] +id: larush +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: L.A. Rush Widescreen Fix +screenshots: + background: https://i.imgur.com/Le7iGA9.jpg + images: + - https://i.imgur.com/UPX2TA0.jpg + - https://i.imgur.com/hOQkgXg.jpg + - https://i.imgur.com/v5HD5a7.jpg + - https://i.imgur.com/xJNEob3.jpg + - https://i.imgur.com/GcI5vBC.jpg + - https://i.imgur.com/wchvCl0.jpg + - https://i.imgur.com/VYRwpIG.jpg + - https://i.imgur.com/bsN8ClW.jpg + - https://i.imgur.com/bTE0quC.jpg + - https://i.imgur.com/QaQJ13v.jpg + - https://i.imgur.com/7Y2QHbb.jpg + - https://i.imgur.com/4FwqPVm.png + - https://i.imgur.com/9MiBbeO.jpg + - https://i.imgur.com/vK1Tesh.jpg + - https://i.imgur.com/jaW3bwv.jpg + - https://i.imgur.com/tvDsFwy.jpg + - https://i.imgur.com/TG5rvh9.jpg + - https://i.imgur.com/79HRZPi.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/larush/logo.png b/content/wfp/larush/logo.png similarity index 100% rename from screens/larush/logo.png rename to content/wfp/larush/logo.png diff --git a/screens/larush/logo.svg b/content/wfp/larush/logo.svg similarity index 100% rename from screens/larush/logo.svg rename to content/wfp/larush/logo.svg diff --git a/screens/larush/main1.jpg b/content/wfp/larush/main1.jpg similarity index 100% rename from screens/larush/main1.jpg rename to content/wfp/larush/main1.jpg diff --git a/screens/larush/main1.png b/content/wfp/larush/main1.png similarity index 100% rename from screens/larush/main1.png rename to content/wfp/larush/main1.png diff --git a/screens/larush/main2.jpg b/content/wfp/larush/main2.jpg similarity index 100% rename from screens/larush/main2.jpg rename to content/wfp/larush/main2.jpg diff --git a/screens/larush/main2.png b/content/wfp/larush/main2.png similarity index 100% rename from screens/larush/main2.png rename to content/wfp/larush/main2.png diff --git a/screens/larush/stripe.jpg b/content/wfp/larush/stripe.jpg similarity index 100% rename from screens/larush/stripe.jpg rename to content/wfp/larush/stripe.jpg diff --git a/content/wfp/mafia/index.md b/content/wfp/mafia/index.md new file mode 100644 index 0000000..d200739 --- /dev/null +++ b/content/wfp/mafia/index.md @@ -0,0 +1,50 @@ +--- +after: main2.png +before: main1.png +color: rgba(38, 34, 25, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/mafia +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/mafia/Mafia.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Mafia.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/40990/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/mafia +- name: earth + tooltip: Official website + url: https://mafiagame.com/ +- name: mafia-1-hero + tooltip: Made by behar + url: https://web.archive.org/web/20171215111008/http://forum.mafia-game.ru/showthread.php?t=2059 +id: mafia +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Game.exe v1.0, v1.1, v1.2, v1.3 are confirmed compatible. May not work + with some DRM protected versions. + version: Any* +tag: other +title: 'Mafia: The City of Lost Heaven Widescreen Fix' +screenshots: + background: https://i.imgur.com/V9X8Y67.jpg + images: + - https://i.imgur.com/lAEkXk5.jpg + - https://i.imgur.com/3LJKWh7.jpg + - https://i.imgur.com/qrQgPJh.jpg + - https://i.imgur.com/omHo2Zd.jpg + youtube: https://www.youtube.com/embed/DBdyncf5n4g +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Patched rw\_data.dll for mods is included. +* Draw distance options available via ini. +* FPS limiter available via ini. diff --git a/screens/mafia/logo.png b/content/wfp/mafia/logo.png similarity index 100% rename from screens/mafia/logo.png rename to content/wfp/mafia/logo.png diff --git a/screens/mafia/logo.svg b/content/wfp/mafia/logo.svg similarity index 100% rename from screens/mafia/logo.svg rename to content/wfp/mafia/logo.svg diff --git a/screens/mafia/logo3.svg b/content/wfp/mafia/logo3.svg similarity index 100% rename from screens/mafia/logo3.svg rename to content/wfp/mafia/logo3.svg diff --git a/screens/mafia/mafia.svg b/content/wfp/mafia/mafia.svg similarity index 100% rename from screens/mafia/mafia.svg rename to content/wfp/mafia/mafia.svg diff --git a/screens/mafia/main1.jpg b/content/wfp/mafia/main1.jpg similarity index 100% rename from screens/mafia/main1.jpg rename to content/wfp/mafia/main1.jpg diff --git a/screens/mafia/main1.png b/content/wfp/mafia/main1.png similarity index 100% rename from screens/mafia/main1.png rename to content/wfp/mafia/main1.png diff --git a/screens/mafia/main2.jpg b/content/wfp/mafia/main2.jpg similarity index 100% rename from screens/mafia/main2.jpg rename to content/wfp/mafia/main2.jpg diff --git a/screens/mafia/main2.png b/content/wfp/mafia/main2.png similarity index 100% rename from screens/mafia/main2.png rename to content/wfp/mafia/main2.png diff --git a/screens/mafia/stripe.jpg b/content/wfp/mafia/stripe.jpg similarity index 100% rename from screens/mafia/stripe.jpg rename to content/wfp/mafia/stripe.jpg diff --git a/content/wfp/manhunt/index.md b/content/wfp/manhunt/index.md new file mode 100644 index 0000000..f86d94e --- /dev/null +++ b/content/wfp/manhunt/index.md @@ -0,0 +1,46 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/manhunt +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/manhunt/Manhunt.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Manhunt.WidescreenFix.zip?branch=master +- name: Widescreen Frontend Textures + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/manhunt/Manhunt.WidescreenFrontend.zip +- name: Automated fix for Manhunt (fixes game breaking bugs) + url: https://steamcommunity.com/sharedfiles/filedetails/?id=2166039806 +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12130/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/manhunt/ +- name: github + tooltip: Created by Fire-Head + url: https://github.com/Fire-Head/MHWSF +id: manhunt +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: Manhunt Widescreen Fix +screenshots: + background: https://media.rockstargames.com/rockstargames-newsite/img/global/downloads/wallpapers/games/manhunt_artworkorange_1600x1200.jpg + images: + - https://i.imgur.com/6Xktkqx.jpeg + - https://i.imgur.com/BZxQD0c.png + - https://i.imgur.com/VKKo8g4.jpeg + - https://i.imgur.com/k33mNSu.jpeg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download [Manhunt Audio Fix](https://github.com/ermaccer/Manhunt.AudioFix/releases/latest) and extract to **scripts** directory. +3. Download and extract Widescreen Frontend Textures to the game directory *(optional)*. +4. Check the download link below for all available features. diff --git a/screens/manhunt/logo.png b/content/wfp/manhunt/logo.png similarity index 100% rename from screens/manhunt/logo.png rename to content/wfp/manhunt/logo.png diff --git a/screens/manhunt/logo.svg b/content/wfp/manhunt/logo.svg similarity index 100% rename from screens/manhunt/logo.svg rename to content/wfp/manhunt/logo.svg diff --git a/screens/manhunt/main1.jpg b/content/wfp/manhunt/main1.jpg similarity index 100% rename from screens/manhunt/main1.jpg rename to content/wfp/manhunt/main1.jpg diff --git a/screens/manhunt/main1.png b/content/wfp/manhunt/main1.png similarity index 100% rename from screens/manhunt/main1.png rename to content/wfp/manhunt/main1.png diff --git a/screens/manhunt/main2.jpg b/content/wfp/manhunt/main2.jpg similarity index 100% rename from screens/manhunt/main2.jpg rename to content/wfp/manhunt/main2.jpg diff --git a/screens/manhunt/main2.png b/content/wfp/manhunt/main2.png similarity index 100% rename from screens/manhunt/main2.png rename to content/wfp/manhunt/main2.png diff --git a/screens/manhunt/stripe.jpg b/content/wfp/manhunt/stripe.jpg similarity index 100% rename from screens/manhunt/stripe.jpg rename to content/wfp/manhunt/stripe.jpg diff --git a/content/wfp/masseffect/index.md b/content/wfp/masseffect/index.md new file mode 100644 index 0000000..b68bd6b --- /dev/null +++ b/content/wfp/masseffect/index.md @@ -0,0 +1,58 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/masseffect +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/masseffect/MassEffectTrilogy.FOVFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/MassEffectTrilogy.FOVFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/sub/18260/ +- name: origin + tooltip: Works with Origin version + url: https://www.origin.com/store/mass-effect/mass-effect-trilogy +- name: ea + tooltip: Official website + url: https://www.ea.com/games/mass-effect +id: masseffect +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: Mass Effect Trilogy FOV Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/mass3-keyart.jpg + images: + - https://i.imgur.com/ASQAk91.jpg + - https://i.imgur.com/UqGk13a.jpg + - https://i.imgur.com/qbW8OGg.jpg + - https://i.imgur.com/OuKmQZF.jpg + - https://i.imgur.com/dFBBUVq.jpg + - https://i.imgur.com/qzr1btd.jpg + - https://i.imgur.com/wbAg8ZS.jpg + - https://i.imgur.com/rOQSnY9.jpg + - https://i.imgur.com/ER57bgu.jpg + - https://i.imgur.com/eRc2Ys0.jpg + - https://i.imgur.com/rLR29z8.jpg + - https://i.imgur.com/g360V76.png + - https://i.imgur.com/wHf7XhJ.jpg + - https://i.imgur.com/ByZedw1.jpg + - https://i.imgur.com/gq9bqK7.jpg + - https://i.imgur.com/dRn2io4.jpg + - https://i.imgur.com/YJCs13l.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located (*Binaries* or *Binaries\Win32*). +2. Overwrite original binkw32.dll or rename it to binkw32Hooked.dll. + +Notes: + +* FOV adjusted to match 4:3 image. +* Click on the image to the left for additional comparison screenshot. diff --git a/screens/masseffect/logo.png b/content/wfp/masseffect/logo.png similarity index 100% rename from screens/masseffect/logo.png rename to content/wfp/masseffect/logo.png diff --git a/screens/masseffect/main1.jpg b/content/wfp/masseffect/main1.jpg similarity index 100% rename from screens/masseffect/main1.jpg rename to content/wfp/masseffect/main1.jpg diff --git a/screens/masseffect/main1.png b/content/wfp/masseffect/main1.png similarity index 100% rename from screens/masseffect/main1.png rename to content/wfp/masseffect/main1.png diff --git a/screens/masseffect/main2.jpg b/content/wfp/masseffect/main2.jpg similarity index 100% rename from screens/masseffect/main2.jpg rename to content/wfp/masseffect/main2.jpg diff --git a/screens/masseffect/main2.png b/content/wfp/masseffect/main2.png similarity index 100% rename from screens/masseffect/main2.png rename to content/wfp/masseffect/main2.png diff --git a/screens/masseffect/main3.jpg b/content/wfp/masseffect/main3.jpg similarity index 100% rename from screens/masseffect/main3.jpg rename to content/wfp/masseffect/main3.jpg diff --git a/screens/masseffect/main3.png b/content/wfp/masseffect/main3.png similarity index 100% rename from screens/masseffect/main3.png rename to content/wfp/masseffect/main3.png diff --git a/screens/masseffect/stripe.jpg b/content/wfp/masseffect/stripe.jpg similarity index 100% rename from screens/masseffect/stripe.jpg rename to content/wfp/masseffect/stripe.jpg diff --git a/content/wfp/mp1/index.md b/content/wfp/mp1/index.md new file mode 100644 index 0000000..89e0ad1 --- /dev/null +++ b/content/wfp/mp1/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(192, 0, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/mp1 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/mp1/MaxPayne.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/MaxPayne.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12140/ +- name: rockstar + tooltip: Official website + url: http://www.rockstargames.com/maxpayne/ +id: mp1 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: maxpayne +title: Max Payne Widescreen Fix +screenshots: + background: http://i.imgur.com/alQal.jpg + images: + - https://i.imgur.com/DYGxaZn.jpg + - https://i.imgur.com/VHPpWR2.jpg + - https://i.imgur.com/BuJgSkt.jpg + - https://i.imgur.com/u6jMzFA.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* The display mode for graphic novels can be changed by pressing F2. Customizable via ini. +* More options available under [MISC] section of the ini file. diff --git a/screens/mp1/logo.png b/content/wfp/mp1/logo.png similarity index 100% rename from screens/mp1/logo.png rename to content/wfp/mp1/logo.png diff --git a/screens/mp1/logo.svg b/content/wfp/mp1/logo.svg similarity index 100% rename from screens/mp1/logo.svg rename to content/wfp/mp1/logo.svg diff --git a/screens/mp1/main1.jpg b/content/wfp/mp1/main1.jpg similarity index 100% rename from screens/mp1/main1.jpg rename to content/wfp/mp1/main1.jpg diff --git a/screens/mp1/main1.png b/content/wfp/mp1/main1.png similarity index 100% rename from screens/mp1/main1.png rename to content/wfp/mp1/main1.png diff --git a/screens/mp1/main2.jpg b/content/wfp/mp1/main2.jpg similarity index 100% rename from screens/mp1/main2.jpg rename to content/wfp/mp1/main2.jpg diff --git a/screens/mp1/main2.png b/content/wfp/mp1/main2.png similarity index 100% rename from screens/mp1/main2.png rename to content/wfp/mp1/main2.png diff --git a/screens/mp1/stripe.jpg b/content/wfp/mp1/stripe.jpg similarity index 100% rename from screens/mp1/stripe.jpg rename to content/wfp/mp1/stripe.jpg diff --git a/content/wfp/mp2/index.md b/content/wfp/mp2/index.md new file mode 100644 index 0000000..bd1de37 --- /dev/null +++ b/content/wfp/mp2/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(80, 97, 107, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/mp2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/mp2/MaxPayne2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/MaxPayne2.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/12150/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/maxpayne2/ +id: mp2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: maxpayne +title: Max Payne 2 Widescreen Fix +screenshots: + background: https://media.rockstargames.com/rockstargames-newsite/img/global/downloads/wallpapers/games/maxpayne2_graphicnovel02_1600x1200.jpg + images: + - https://i.imgur.com/jo0Wr3b.jpg + - https://i.imgur.com/oIWieMY.jpg + - https://i.imgur.com/HAdB3SV.jpg + - https://i.imgur.com/mVgpBqN.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* The display mode for graphic novels can be changed by pressing F2. Customizable via ini. +* More options available under [MISC] section of the ini file. diff --git a/screens/mp2/logo.png b/content/wfp/mp2/logo.png similarity index 100% rename from screens/mp2/logo.png rename to content/wfp/mp2/logo.png diff --git a/screens/mp2/logo.svg b/content/wfp/mp2/logo.svg similarity index 100% rename from screens/mp2/logo.svg rename to content/wfp/mp2/logo.svg diff --git a/screens/mp2/main1.jpg b/content/wfp/mp2/main1.jpg similarity index 100% rename from screens/mp2/main1.jpg rename to content/wfp/mp2/main1.jpg diff --git a/screens/mp2/main1.png b/content/wfp/mp2/main1.png similarity index 100% rename from screens/mp2/main1.png rename to content/wfp/mp2/main1.png diff --git a/screens/mp2/main2.jpg b/content/wfp/mp2/main2.jpg similarity index 100% rename from screens/mp2/main2.jpg rename to content/wfp/mp2/main2.jpg diff --git a/screens/mp2/main2.png b/content/wfp/mp2/main2.png similarity index 100% rename from screens/mp2/main2.png rename to content/wfp/mp2/main2.png diff --git a/screens/mp2/stripe.jpg b/content/wfp/mp2/stripe.jpg similarity index 100% rename from screens/mp2/stripe.jpg rename to content/wfp/mp2/stripe.jpg diff --git a/content/wfp/mp3fusionfix/index.md b/content/wfp/mp3fusionfix/index.md new file mode 100644 index 0000000..08e7d38 --- /dev/null +++ b/content/wfp/mp3fusionfix/index.md @@ -0,0 +1,32 @@ +--- +after: main2.png +before: main1.png +color: rgba(113, 22, 22, 1) +download: https://github.com/ThirteenAG/MaxPayne3.FusionFix#readme +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/MaxPayne3.FusionFix/releases/latest/download/MaxPayne3.FusionFix.zip +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/204100/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/maxpayne3/ +id: mp3fusionfix +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: maxpayne +title: Max Payne 3 Fusion Fix +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/maxpayne3_maxartwork6_2560x1600.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +This projects aims to add new features and fix some issues in Max Payne 3. Borderless Windowed, various Gamepad Icons styles, Skip Intro, crash fixes and LightSyncRGB support. diff --git a/screens/mp3fusionfix/logo.svg b/content/wfp/mp3fusionfix/logo.svg similarity index 100% rename from screens/mp3fusionfix/logo.svg rename to content/wfp/mp3fusionfix/logo.svg diff --git a/screens/mp3fusionfix/main1.jpg b/content/wfp/mp3fusionfix/main1.jpg similarity index 100% rename from screens/mp3fusionfix/main1.jpg rename to content/wfp/mp3fusionfix/main1.jpg diff --git a/screens/mp3fusionfix/main1.png b/content/wfp/mp3fusionfix/main1.png similarity index 100% rename from screens/mp3fusionfix/main1.png rename to content/wfp/mp3fusionfix/main1.png diff --git a/screens/mp3fusionfix/main2.jpg b/content/wfp/mp3fusionfix/main2.jpg similarity index 100% rename from screens/mp3fusionfix/main2.jpg rename to content/wfp/mp3fusionfix/main2.jpg diff --git a/screens/mp3fusionfix/main2.png b/content/wfp/mp3fusionfix/main2.png similarity index 100% rename from screens/mp3fusionfix/main2.png rename to content/wfp/mp3fusionfix/main2.png diff --git a/screens/mp3fusionfix/stripe.jpg b/content/wfp/mp3fusionfix/stripe.jpg similarity index 100% rename from screens/mp3fusionfix/stripe.jpg rename to content/wfp/mp3fusionfix/stripe.jpg diff --git a/content/wfp/nfsc/index.md b/content/wfp/nfsc/index.md new file mode 100644 index 0000000..854a25e --- /dev/null +++ b/content/wfp/nfsc/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(82, 250, 251, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsc/NFSCarbon.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSCarbon.WidescreenFix.zip?branch=master +icons: +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-carbon +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: nfsc +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: nfs +title: Need for Speed Carbon Widescreen Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/nfs-carbon-key-art.jpg + images: + - https://i.imgur.com/wJrTwhI.jpg + - https://i.imgur.com/NignCGg.jpg + - https://i.imgur.com/4QLA4yH.jpg + - https://i.imgur.com/hpyxyKT.jpg + - https://i.imgur.com/hlinBGF.jpg + - https://i.imgur.com/CqyXUO3.jpg + youtube: https://www.youtube.com/embed/dAim-sIXCoo +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. +* For non-16:9 resolutions install [NFSC HUD Adapter](https://github.com/nlgzrgn/NFSCHUDAdapter). diff --git a/screens/nfsc/logo.png b/content/wfp/nfsc/logo.png similarity index 100% rename from screens/nfsc/logo.png rename to content/wfp/nfsc/logo.png diff --git a/screens/nfsc/logo.svg b/content/wfp/nfsc/logo.svg similarity index 100% rename from screens/nfsc/logo.svg rename to content/wfp/nfsc/logo.svg diff --git a/screens/nfsc/main1.jpg b/content/wfp/nfsc/main1.jpg similarity index 100% rename from screens/nfsc/main1.jpg rename to content/wfp/nfsc/main1.jpg diff --git a/screens/nfsc/main1.png b/content/wfp/nfsc/main1.png similarity index 100% rename from screens/nfsc/main1.png rename to content/wfp/nfsc/main1.png diff --git a/screens/nfsc/main2.jpg b/content/wfp/nfsc/main2.jpg similarity index 100% rename from screens/nfsc/main2.jpg rename to content/wfp/nfsc/main2.jpg diff --git a/screens/nfsc/main2.png b/content/wfp/nfsc/main2.png similarity index 100% rename from screens/nfsc/main2.png rename to content/wfp/nfsc/main2.png diff --git a/screens/nfsc/stripe.jpg b/content/wfp/nfsc/stripe.jpg similarity index 100% rename from screens/nfsc/stripe.jpg rename to content/wfp/nfsc/stripe.jpg diff --git a/content/wfp/nfsmw/index.md b/content/wfp/nfsmw/index.md new file mode 100644 index 0000000..109310a --- /dev/null +++ b/content/wfp/nfsmw/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(253, 198, 118, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsmw +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsmw/NFSMostWanted.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSMostWanted.WidescreenFix.zip?branch=master +icons: +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-most-wanted-2005 +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: nfsmw +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: nfs +title: Need for Speed Most Wanted (2005) Widescreen Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/need-for-speed-most-wanted-2005-key-art.jpg + images: + - https://i.imgur.com/ouhh2ER.jpg + - https://i.imgur.com/ch0BRJw.jpg + - https://i.imgur.com/Nn4o1QH.jpg + - https://i.imgur.com/WOirIQG.jpg + - https://i.imgur.com/3wVYlZx.jpg + - https://i.imgur.com/HlMM6nx.jpg + youtube: https://www.youtube.com/embed/7IErsDSUBTA +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. +* For non-16:9 resolutions install [NFSMW HUD Adapter](https://github.com/nlgzrgn/NFSMWHUDAdapter). diff --git a/screens/nfsmw/logo.png b/content/wfp/nfsmw/logo.png similarity index 100% rename from screens/nfsmw/logo.png rename to content/wfp/nfsmw/logo.png diff --git a/screens/nfsmw/logo.svg b/content/wfp/nfsmw/logo.svg similarity index 100% rename from screens/nfsmw/logo.svg rename to content/wfp/nfsmw/logo.svg diff --git a/screens/nfsmw/main1.jpg b/content/wfp/nfsmw/main1.jpg similarity index 100% rename from screens/nfsmw/main1.jpg rename to content/wfp/nfsmw/main1.jpg diff --git a/screens/nfsmw/main1.png b/content/wfp/nfsmw/main1.png similarity index 100% rename from screens/nfsmw/main1.png rename to content/wfp/nfsmw/main1.png diff --git a/screens/nfsmw/main2.jpg b/content/wfp/nfsmw/main2.jpg similarity index 100% rename from screens/nfsmw/main2.jpg rename to content/wfp/nfsmw/main2.jpg diff --git a/screens/nfsmw/main2.png b/content/wfp/nfsmw/main2.png similarity index 100% rename from screens/nfsmw/main2.png rename to content/wfp/nfsmw/main2.png diff --git a/screens/nfsmw/stripe.jpg b/content/wfp/nfsmw/stripe.jpg similarity index 100% rename from screens/nfsmw/stripe.jpg rename to content/wfp/nfsmw/stripe.jpg diff --git a/content/wfp/nfsps/index.md b/content/wfp/nfsps/index.md new file mode 100644 index 0000000..cc24709 --- /dev/null +++ b/content/wfp/nfsps/index.md @@ -0,0 +1,49 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsps +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsps/NFSProStreet.GenericFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSProStreet.GenericFix.zip?branch=master +icons: +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-prostreet +- name: github + tooltip: Aero + url: https://github.com/AeroWidescreen +- name: github + tooltip: xan1242 + url: https://github.com/xan1242 +id: nfsps +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: v1.1 +tag: nfs +title: Need for Speed ProStreet Generic Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/nfs-prostreet-key-art.jpg + images: + - https://i.imgur.com/26Ktjcq.jpg + - https://i.imgur.com/7ZDVbIh.jpg + - https://i.imgur.com/MO3s6H9.jpg + - https://i.imgur.com/W6QDqcI.jpg + - https://i.imgur.com/5r8Sbwi.jpg + - https://i.imgur.com/Lbx7Uzx.jpg + - https://i.imgur.com/uEjCOdX.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes Xanvier's NFS ProStreet MultiFix. +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. diff --git a/screens/nfsps/logo.svg b/content/wfp/nfsps/logo.svg similarity index 100% rename from screens/nfsps/logo.svg rename to content/wfp/nfsps/logo.svg diff --git a/screens/nfsps/main1.jpg b/content/wfp/nfsps/main1.jpg similarity index 100% rename from screens/nfsps/main1.jpg rename to content/wfp/nfsps/main1.jpg diff --git a/screens/nfsps/main1.png b/content/wfp/nfsps/main1.png similarity index 100% rename from screens/nfsps/main1.png rename to content/wfp/nfsps/main1.png diff --git a/screens/nfsps/main2.jpg b/content/wfp/nfsps/main2.jpg similarity index 100% rename from screens/nfsps/main2.jpg rename to content/wfp/nfsps/main2.jpg diff --git a/screens/nfsps/main2.png b/content/wfp/nfsps/main2.png similarity index 100% rename from screens/nfsps/main2.png rename to content/wfp/nfsps/main2.png diff --git a/screens/nfsps/stripe.jpg b/content/wfp/nfsps/stripe.jpg similarity index 100% rename from screens/nfsps/stripe.jpg rename to content/wfp/nfsps/stripe.jpg diff --git a/content/wfp/nfsu/index.md b/content/wfp/nfsu/index.md new file mode 100644 index 0000000..8fdc11a --- /dev/null +++ b/content/wfp/nfsu/index.md @@ -0,0 +1,44 @@ +--- +after: main2.png +before: main1.png +color: rgba(255, 106, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsu +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsu/NFSUnderground.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSUnderground.WidescreenFix.zip?branch=master +icons: +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-underground +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: nfsu +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: nfs +title: Need for Speed Underground Widescreen Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/need-for-speed-underground-rivals-keyart.jpg + images: + - https://i.imgur.com/zoer523.jpg + - https://i.imgur.com/I6rS0Dy.jpg + - https://i.imgur.com/35STkw5.jpg + - https://i.imgur.com/edMiqne.jpg + - https://i.imgur.com/Cbtt06Z.jpg + - https://i.imgur.com/OdAUNmQ.jpg + youtube: https://www.youtube.com/embed/WyI-pCArooY +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. diff --git a/screens/nfsu/logo.png b/content/wfp/nfsu/logo.png similarity index 100% rename from screens/nfsu/logo.png rename to content/wfp/nfsu/logo.png diff --git a/screens/nfsu/logo.svg b/content/wfp/nfsu/logo.svg similarity index 100% rename from screens/nfsu/logo.svg rename to content/wfp/nfsu/logo.svg diff --git a/screens/nfsu/main1.jpg b/content/wfp/nfsu/main1.jpg similarity index 100% rename from screens/nfsu/main1.jpg rename to content/wfp/nfsu/main1.jpg diff --git a/screens/nfsu/main1.png b/content/wfp/nfsu/main1.png similarity index 100% rename from screens/nfsu/main1.png rename to content/wfp/nfsu/main1.png diff --git a/screens/nfsu/main2.jpg b/content/wfp/nfsu/main2.jpg similarity index 100% rename from screens/nfsu/main2.jpg rename to content/wfp/nfsu/main2.jpg diff --git a/screens/nfsu/main2.png b/content/wfp/nfsu/main2.png similarity index 100% rename from screens/nfsu/main2.png rename to content/wfp/nfsu/main2.png diff --git a/screens/nfsu/stripe.jpg b/content/wfp/nfsu/stripe.jpg similarity index 100% rename from screens/nfsu/stripe.jpg rename to content/wfp/nfsu/stripe.jpg diff --git a/content/wfp/nfsu2/index.md b/content/wfp/nfsu2/index.md new file mode 100644 index 0000000..b45a558 --- /dev/null +++ b/content/wfp/nfsu2/index.md @@ -0,0 +1,44 @@ +--- +after: main2.png +before: main1.png +color: rgba(43, 204, 36, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsu2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsu2/NFSUnderground2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSUnderground2.WidescreenFix.zip?branch=master +icons: +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-underground-2 +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: nfsu2 +logo: logo.png +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: nfs +title: Need for Speed Underground 2 Widescreen Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/need-for-speed-underground-2-keyart.jpg + images: + - https://i.imgur.com/hjKZSlj.jpg + - https://i.imgur.com/vAcFSeC.jpg + - https://i.imgur.com/N65f2TS.jpg + - https://i.imgur.com/ecApq0O.jpg + - https://i.imgur.com/VqSAtlB.jpg + - https://i.imgur.com/xOjGfdh.jpg + youtube: https://www.youtube.com/embed/j-u62ICMelU +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. diff --git a/screens/nfsu2/logo.png b/content/wfp/nfsu2/logo.png similarity index 100% rename from screens/nfsu2/logo.png rename to content/wfp/nfsu2/logo.png diff --git a/screens/nfsu2/logo.svg b/content/wfp/nfsu2/logo.svg similarity index 100% rename from screens/nfsu2/logo.svg rename to content/wfp/nfsu2/logo.svg diff --git a/screens/nfsu2/main1.jpg b/content/wfp/nfsu2/main1.jpg similarity index 100% rename from screens/nfsu2/main1.jpg rename to content/wfp/nfsu2/main1.jpg diff --git a/screens/nfsu2/main1.png b/content/wfp/nfsu2/main1.png similarity index 100% rename from screens/nfsu2/main1.png rename to content/wfp/nfsu2/main1.png diff --git a/screens/nfsu2/main2.jpg b/content/wfp/nfsu2/main2.jpg similarity index 100% rename from screens/nfsu2/main2.jpg rename to content/wfp/nfsu2/main2.jpg diff --git a/screens/nfsu2/main2.png b/content/wfp/nfsu2/main2.png similarity index 100% rename from screens/nfsu2/main2.png rename to content/wfp/nfsu2/main2.png diff --git a/screens/nfsu2/stripe.jpg b/content/wfp/nfsu2/stripe.jpg similarity index 100% rename from screens/nfsu2/stripe.jpg rename to content/wfp/nfsu2/stripe.jpg diff --git a/content/wfp/nfsuc/index.md b/content/wfp/nfsuc/index.md new file mode 100644 index 0000000..d49bdbe --- /dev/null +++ b/content/wfp/nfsuc/index.md @@ -0,0 +1,51 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/nfsuc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/nfsuc/NFSUndercover.GenericFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/NFSUndercover.GenericFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/17430/ +- name: ea + tooltip: Official website + url: https://www.ea.com/games/need-for-speed/need-for-speed-undercover +- name: github + tooltip: Aero + url: https://github.com/AeroWidescreen +- name: github + tooltip: xan1242 + url: https://github.com/xan1242 +id: nfsuc +logo: logo.svg +support: + tooltip: '' + version: Any +tag: nfs +title: Need for Speed Undercover Generic Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/nfs-undercover-key-art.jpg + images: + - https://i.imgur.com/M98xj3h.jpg + - https://i.imgur.com/lfWUn8k.jpg + - https://i.imgur.com/w4p9rTp.jpg + - https://i.imgur.com/w1WI1GT.jpg + - https://i.imgur.com/2F0J9TU.jpg + - https://i.imgur.com/IksqovZ.jpg + - https://i.imgur.com/fX4t0Pn.jpg + - https://i.imgur.com/UZgFkSI.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes improved gamepad support. +* More options available under [MISC] section of the ini file. diff --git a/screens/nfsuc/logo.svg b/content/wfp/nfsuc/logo.svg similarity index 100% rename from screens/nfsuc/logo.svg rename to content/wfp/nfsuc/logo.svg diff --git a/screens/nfsuc/main1.jpg b/content/wfp/nfsuc/main1.jpg similarity index 100% rename from screens/nfsuc/main1.jpg rename to content/wfp/nfsuc/main1.jpg diff --git a/screens/nfsuc/main1.png b/content/wfp/nfsuc/main1.png similarity index 100% rename from screens/nfsuc/main1.png rename to content/wfp/nfsuc/main1.png diff --git a/screens/nfsuc/main2.jpg b/content/wfp/nfsuc/main2.jpg similarity index 100% rename from screens/nfsuc/main2.jpg rename to content/wfp/nfsuc/main2.jpg diff --git a/screens/nfsuc/main2.png b/content/wfp/nfsuc/main2.png similarity index 100% rename from screens/nfsuc/main2.png rename to content/wfp/nfsuc/main2.png diff --git a/screens/nfsuc/stripe.gif b/content/wfp/nfsuc/stripe.gif similarity index 100% rename from screens/nfsuc/stripe.gif rename to content/wfp/nfsuc/stripe.gif diff --git a/content/wfp/onimusha3/index.md b/content/wfp/onimusha3/index.md new file mode 100644 index 0000000..3c50402 --- /dev/null +++ b/content/wfp/onimusha3/index.md @@ -0,0 +1,40 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/onimusha3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/onimusha3/Onimusha3.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Onimusha3.WidescreenFix.zip?branch=master +icons: [] +id: onimusha3 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Onimusha 3 Widescreen Fix +screenshots: + background: https://i.imgur.com/7RSRjLM.jpg + images: + - https://i.imgur.com/Pu8dKiH.jpg + - https://i.imgur.com/DhhtcO2.png + - https://i.imgur.com/mfo5XSR.jpg + - https://i.imgur.com/XBr64ET.jpg + - https://i.imgur.com/WSeoDUj.jpg + - https://i.imgur.com/JukXA7X.jpg + - https://i.imgur.com/6Ey5wV5.jpg + - https://i.imgur.com/kfVDIFn.jpg + - https://i.imgur.com/pxkjX1Z.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* The "Effect" option could not be scaled properly, so it was disabled. +* Press Alt+Enter to switch between fullscreen and windowed mode. diff --git a/screens/onimusha3/logo.png b/content/wfp/onimusha3/logo.png similarity index 100% rename from screens/onimusha3/logo.png rename to content/wfp/onimusha3/logo.png diff --git a/screens/onimusha3/logo.svg b/content/wfp/onimusha3/logo.svg similarity index 100% rename from screens/onimusha3/logo.svg rename to content/wfp/onimusha3/logo.svg diff --git a/screens/onimusha3/main1.jpg b/content/wfp/onimusha3/main1.jpg similarity index 100% rename from screens/onimusha3/main1.jpg rename to content/wfp/onimusha3/main1.jpg diff --git a/screens/onimusha3/main1.png b/content/wfp/onimusha3/main1.png similarity index 100% rename from screens/onimusha3/main1.png rename to content/wfp/onimusha3/main1.png diff --git a/screens/onimusha3/main2.jpg b/content/wfp/onimusha3/main2.jpg similarity index 100% rename from screens/onimusha3/main2.jpg rename to content/wfp/onimusha3/main2.jpg diff --git a/screens/onimusha3/main2.png b/content/wfp/onimusha3/main2.png similarity index 100% rename from screens/onimusha3/main2.png rename to content/wfp/onimusha3/main2.png diff --git a/content/wfp/p2dfx/index.md b/content/wfp/p2dfx/index.md new file mode 100644 index 0000000..2987c1f --- /dev/null +++ b/content/wfp/p2dfx/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main2.png +color: rgba(255, 0, 222, 1) +download: https://thirteenag.github.io/p2dfx +downloads: +- name: Direct Link + url: https://thirteenag.github.io/p2dfx +icons: [] +id: p2dfx +logo: 'logo.svg' +stripe: stripe.jpg +support: + tooltip: '' + version: 'Project2DFX is a set of plugins for GTA III, Vice City, San Andreas, Liberty + City Stories, Vice City Stories and GTA IV: The Complete Edition which adds LOD + corona effect to a game map, making LOD-world look a lot better. It also includes + an open source Limit Adjuster to enhance and improve certain game limits.' +tag: mods +title: Project2DFX +screenshots: + background: https://thirteenag.github.io/screens/2dfx/intro-bg.jpg + images: + - https://i.imgur.com/zt2vjAG.jpeg + - https://i.imgur.com/7nBlS2x.jpeg + - https://i.imgur.com/4cvBmmu.png + - https://i.imgur.com/RzMSTN1.jpeg + - https://i.imgur.com/0LPBSkP.jpeg + - https://i.imgur.com/qcOFiaz.jpeg + - https://i.imgur.com/OfS82JG.jpeg + youtube: https://www.youtube.com/embed/DJUdUjdw3VQ +--- + + diff --git a/screens/p2dfx/logo.svg b/content/wfp/p2dfx/logo.svg similarity index 100% rename from screens/p2dfx/logo.svg rename to content/wfp/p2dfx/logo.svg diff --git a/screens/p2dfx/main2.jpg b/content/wfp/p2dfx/main2.jpg similarity index 100% rename from screens/p2dfx/main2.jpg rename to content/wfp/p2dfx/main2.jpg diff --git a/screens/p2dfx/main2.png b/content/wfp/p2dfx/main2.png similarity index 100% rename from screens/p2dfx/main2.png rename to content/wfp/p2dfx/main2.png diff --git a/screens/p2dfx/stripe.jpg b/content/wfp/p2dfx/stripe.jpg similarity index 100% rename from screens/p2dfx/stripe.jpg rename to content/wfp/p2dfx/stripe.jpg diff --git a/content/wfp/paradisecracked/index.md b/content/wfp/paradisecracked/index.md new file mode 100644 index 0000000..69a8930 --- /dev/null +++ b/content/wfp/paradisecracked/index.md @@ -0,0 +1,32 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/paradisecracked +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/paradisecracked/ParadiseCracked.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ParadiseCracked.WidescreenFix.zip?branch=master +icons: +- name: github + tooltip: Made by nestdimon + url: https://github.com/nestdimon +id: paradisecracked +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Paradise Cracked Widescreen Fix +screenshots: + background: https://i.imgur.com/YfIdF9x.jpg + images: + - https://i.imgur.com/YIiX73j.jpg + - https://i.imgur.com/J3nkVnn.jpg + - https://i.imgur.com/xkXYQUs.jpg + - https://i.imgur.com/Jpc8VrY.jpg + youtube: '' +--- + +* Download and extract the archive to the game directory, where the exe is located. diff --git a/screens/paradisecracked/logo.png b/content/wfp/paradisecracked/logo.png similarity index 100% rename from screens/paradisecracked/logo.png rename to content/wfp/paradisecracked/logo.png diff --git a/screens/paradisecracked/logo.svg b/content/wfp/paradisecracked/logo.svg similarity index 100% rename from screens/paradisecracked/logo.svg rename to content/wfp/paradisecracked/logo.svg diff --git a/screens/paradisecracked/main1.jpg b/content/wfp/paradisecracked/main1.jpg similarity index 100% rename from screens/paradisecracked/main1.jpg rename to content/wfp/paradisecracked/main1.jpg diff --git a/screens/paradisecracked/main1.png b/content/wfp/paradisecracked/main1.png similarity index 100% rename from screens/paradisecracked/main1.png rename to content/wfp/paradisecracked/main1.png diff --git a/screens/paradisecracked/main2.jpg b/content/wfp/paradisecracked/main2.jpg similarity index 100% rename from screens/paradisecracked/main2.jpg rename to content/wfp/paradisecracked/main2.jpg diff --git a/screens/paradisecracked/main2.png b/content/wfp/paradisecracked/main2.png similarity index 100% rename from screens/paradisecracked/main2.png rename to content/wfp/paradisecracked/main2.png diff --git a/content/wfp/psiops/index.md b/content/wfp/psiops/index.md new file mode 100644 index 0000000..2766d96 --- /dev/null +++ b/content/wfp/psiops/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/psiops +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/psiops/PsiOpsTheMindgateConspiracy.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/PsiOpsTheMindgateConspiracy.WidescreenFix.zip?branch=master +icons: [] +id: psiops +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: 'Psi-Ops: The Mindgate Conspiracy Widescreen Fix' +screenshots: + background: https://i.imgur.com/ZREY9U7.jpg + images: + - https://i.imgur.com/WESeNWG.jpg + - https://i.imgur.com/8TL6ycG.jpg + - https://i.imgur.com/puuJkxe.jpg + - https://i.imgur.com/vYnUN27.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/psiops/logo.png b/content/wfp/psiops/logo.png similarity index 100% rename from screens/psiops/logo.png rename to content/wfp/psiops/logo.png diff --git a/screens/psiops/logo.svg b/content/wfp/psiops/logo.svg similarity index 100% rename from screens/psiops/logo.svg rename to content/wfp/psiops/logo.svg diff --git a/screens/psiops/main1.jpg b/content/wfp/psiops/main1.jpg similarity index 100% rename from screens/psiops/main1.jpg rename to content/wfp/psiops/main1.jpg diff --git a/screens/psiops/main1.png b/content/wfp/psiops/main1.png similarity index 100% rename from screens/psiops/main1.png rename to content/wfp/psiops/main1.png diff --git a/screens/psiops/main2.jpg b/content/wfp/psiops/main2.jpg similarity index 100% rename from screens/psiops/main2.jpg rename to content/wfp/psiops/main2.jpg diff --git a/screens/psiops/main2.png b/content/wfp/psiops/main2.png similarity index 100% rename from screens/psiops/main2.png rename to content/wfp/psiops/main2.png diff --git a/content/wfp/psychonauts/index.md b/content/wfp/psychonauts/index.md new file mode 100644 index 0000000..ebace11 --- /dev/null +++ b/content/wfp/psychonauts/index.md @@ -0,0 +1,39 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/psychonauts +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/psychonauts/Psychonauts.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Psychonauts.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/3830/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/psychonauts +- name: earth + tooltip: Official website + url: http://www.psychonauts.com/psychonauts/ +id: psychonauts +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Psychonauts Widescreen Fix +screenshots: + background: https://i.imgur.com/kTosUa3.jpg + images: + - https://i.imgur.com/7PgPbPE.jpg + - https://i.imgur.com/df7Gjx6.jpg + - https://i.imgur.com/15tBGmB.jpg + - https://i.imgur.com/SsmgNpK.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/psychonauts/logo.png b/content/wfp/psychonauts/logo.png similarity index 100% rename from screens/psychonauts/logo.png rename to content/wfp/psychonauts/logo.png diff --git a/screens/psychonauts/logo.svg b/content/wfp/psychonauts/logo.svg similarity index 100% rename from screens/psychonauts/logo.svg rename to content/wfp/psychonauts/logo.svg diff --git a/screens/psychonauts/main1.jpg b/content/wfp/psychonauts/main1.jpg similarity index 100% rename from screens/psychonauts/main1.jpg rename to content/wfp/psychonauts/main1.jpg diff --git a/screens/psychonauts/main1.png b/content/wfp/psychonauts/main1.png similarity index 100% rename from screens/psychonauts/main1.png rename to content/wfp/psychonauts/main1.png diff --git a/screens/psychonauts/main2.jpg b/content/wfp/psychonauts/main2.jpg similarity index 100% rename from screens/psychonauts/main2.jpg rename to content/wfp/psychonauts/main2.jpg diff --git a/screens/psychonauts/main2.png b/content/wfp/psychonauts/main2.png similarity index 100% rename from screens/psychonauts/main2.png rename to content/wfp/psychonauts/main2.png diff --git a/content/wfp/punisher/index.md b/content/wfp/punisher/index.md new file mode 100644 index 0000000..76dd74c --- /dev/null +++ b/content/wfp/punisher/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/punisher +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/punisher/ThePunisher.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ThePunisher.WidescreenFix.zip?branch=master +icons: [] +id: punisher +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: The Punisher Widescreen Fix +screenshots: + background: https://i.imgur.com/tLvp1mF.jpg + images: + - https://i.imgur.com/BNIwSZx.jpg + - https://i.imgur.com/VS0MPLG.jpg + - https://i.imgur.com/HyvOFe4.png + - https://i.imgur.com/B0nadgx.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/punisher/logo.png b/content/wfp/punisher/logo.png similarity index 100% rename from screens/punisher/logo.png rename to content/wfp/punisher/logo.png diff --git a/screens/punisher/logo.svg b/content/wfp/punisher/logo.svg similarity index 100% rename from screens/punisher/logo.svg rename to content/wfp/punisher/logo.svg diff --git a/screens/punisher/main1.jpg b/content/wfp/punisher/main1.jpg similarity index 100% rename from screens/punisher/main1.jpg rename to content/wfp/punisher/main1.jpg diff --git a/screens/punisher/main1.png b/content/wfp/punisher/main1.png similarity index 100% rename from screens/punisher/main1.png rename to content/wfp/punisher/main1.png diff --git a/screens/punisher/main2.jpg b/content/wfp/punisher/main2.jpg similarity index 100% rename from screens/punisher/main2.jpg rename to content/wfp/punisher/main2.jpg diff --git a/screens/punisher/main2.png b/content/wfp/punisher/main2.png similarity index 100% rename from screens/punisher/main2.png rename to content/wfp/punisher/main2.png diff --git a/content/wfp/rdr/index.md b/content/wfp/rdr/index.md new file mode 100644 index 0000000..366f5fd --- /dev/null +++ b/content/wfp/rdr/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main2.png +color: rgba(206, 6, 19, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/rdr +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/rdr/RedDeadRedemption.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/RedDeadRedemption.FusionMod.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/2668510/ +id: rdr +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: Red Dead Redemption Fusion Mod +screenshots: + background: https://media-rockstargames-com.akamaized.net/tina-uploads/tina-modules/reddeadredemption/c8ea0d475119f039f52c478451fa67ef1205188b.png + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* Tiny Skip Intro and Legal Screens Plugin diff --git a/screens/rdr/logo.svg b/content/wfp/rdr/logo.svg similarity index 100% rename from screens/rdr/logo.svg rename to content/wfp/rdr/logo.svg diff --git a/screens/rdr/main2.jpg b/content/wfp/rdr/main2.jpg similarity index 100% rename from screens/rdr/main2.jpg rename to content/wfp/rdr/main2.jpg diff --git a/screens/rdr/main2.png b/content/wfp/rdr/main2.png similarity index 100% rename from screens/rdr/main2.png rename to content/wfp/rdr/main2.png diff --git a/screens/rdr/stripe.jpg b/content/wfp/rdr/stripe.jpg similarity index 100% rename from screens/rdr/stripe.jpg rename to content/wfp/rdr/stripe.jpg diff --git a/content/wfp/re0/index.md b/content/wfp/re0/index.md new file mode 100644 index 0000000..ba760a5 --- /dev/null +++ b/content/wfp/re0/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main2.png +color: rgba(118, 59, 60, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re0 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re0/ResidentEvil0.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil0.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/339340/ +id: re0 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: re +title: Resident Evil Zero Fusion Fix +screenshots: + background: https://www.residentevil.com/0/_asset/images/firstView-bg.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* Hide Mouse Cursor +* Door Skip +* Borderless windowed mode +* LightSync RGB diff --git a/screens/re0/logo.svg b/content/wfp/re0/logo.svg similarity index 100% rename from screens/re0/logo.svg rename to content/wfp/re0/logo.svg diff --git a/screens/re0/logo2.svg b/content/wfp/re0/logo2.svg similarity index 100% rename from screens/re0/logo2.svg rename to content/wfp/re0/logo2.svg diff --git a/screens/re0/main2.jpg b/content/wfp/re0/main2.jpg similarity index 100% rename from screens/re0/main2.jpg rename to content/wfp/re0/main2.jpg diff --git a/screens/re0/main2.png b/content/wfp/re0/main2.png similarity index 100% rename from screens/re0/main2.png rename to content/wfp/re0/main2.png diff --git a/screens/re0/stripe.jpg b/content/wfp/re0/stripe.jpg similarity index 100% rename from screens/re0/stripe.jpg rename to content/wfp/re0/stripe.jpg diff --git a/content/wfp/re1/index.md b/content/wfp/re1/index.md new file mode 100644 index 0000000..67d9025 --- /dev/null +++ b/content/wfp/re1/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(248, 223, 192, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re1 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re1/ResidentEvil1.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil1.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/304240/ +id: re1 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: re +title: Resident Evil Fusion Fix +screenshots: + background: https://www.residentevil.com/1/_asset/images/firstView-bg.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* Unlocked all resolutions +* Hide Mouse Cursor +* Door Skip +* Borderless windowed mode +* LightSync RGB diff --git a/screens/re1/logo.svg b/content/wfp/re1/logo.svg similarity index 100% rename from screens/re1/logo.svg rename to content/wfp/re1/logo.svg diff --git a/screens/re1/main1.jpg b/content/wfp/re1/main1.jpg similarity index 100% rename from screens/re1/main1.jpg rename to content/wfp/re1/main1.jpg diff --git a/screens/re1/main1.png b/content/wfp/re1/main1.png similarity index 100% rename from screens/re1/main1.png rename to content/wfp/re1/main1.png diff --git a/screens/re1/main2.jpg b/content/wfp/re1/main2.jpg similarity index 100% rename from screens/re1/main2.jpg rename to content/wfp/re1/main2.jpg diff --git a/screens/re1/main2.png b/content/wfp/re1/main2.png similarity index 100% rename from screens/re1/main2.png rename to content/wfp/re1/main2.png diff --git a/screens/re1/stripe.jpg b/content/wfp/re1/stripe.jpg similarity index 100% rename from screens/re1/stripe.jpg rename to content/wfp/re1/stripe.jpg diff --git a/content/wfp/re2re3gc/index.md b/content/wfp/re2re3gc/index.md new file mode 100644 index 0000000..84dbb95 --- /dev/null +++ b/content/wfp/re2re3gc/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(220, 11, 43, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re2re3gc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re2re3gc/ResidentEvil2.RE3.Dolphin.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil2.RE3.Dolphin.FusionMod.zip?branch=master +icons: +- name: dolphin + tooltip: Works with Dolphin + url: https://dolphin-emu.org/ +id: re2re3gc +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: "Tested with Dolphin 2412.
\n Plugin should be\ + \ compatible with any recent version of the emulator, but if not, open an issue." + version: 'RE3: GLE(E|P|J)08, RE2: GHA(E|P|J)08' +tag: re +title: 'Resident Evil 2 / RE3: Nemesis Fusion Mod [Dolphin]' +screenshots: + background: https://game.capcom.com/residentevil/pc/img/about/history/re3/image.jpg + images: [] + youtube: https://www.youtube.com/embed/1dEQrxXSygQ +--- + +1. Download and extract the archive to the directory, where [**Dolphin 2412**](https://dl.dolphin-emu.org/releases/2412/dolphin-2412-x64.7z) executable is located. +2. Check the download link below for all available features. +3. Launch the game. + +Notes: + +* Door skip plugin, also speeds up loading by changing emulator's speed during door sequences. diff --git a/screens/re2re3gc/logo.svg b/content/wfp/re2re3gc/logo.svg similarity index 100% rename from screens/re2re3gc/logo.svg rename to content/wfp/re2re3gc/logo.svg diff --git a/screens/re2re3gc/main1.jpg b/content/wfp/re2re3gc/main1.jpg similarity index 100% rename from screens/re2re3gc/main1.jpg rename to content/wfp/re2re3gc/main1.jpg diff --git a/screens/re2re3gc/main1.png b/content/wfp/re2re3gc/main1.png similarity index 100% rename from screens/re2re3gc/main1.png rename to content/wfp/re2re3gc/main1.png diff --git a/screens/re2re3gc/main2.jpg b/content/wfp/re2re3gc/main2.jpg similarity index 100% rename from screens/re2re3gc/main2.jpg rename to content/wfp/re2re3gc/main2.jpg diff --git a/screens/re2re3gc/main2.png b/content/wfp/re2re3gc/main2.png similarity index 100% rename from screens/re2re3gc/main2.png rename to content/wfp/re2re3gc/main2.png diff --git a/screens/re2re3gc/stripe.jpg b/content/wfp/re2re3gc/stripe.jpg similarity index 100% rename from screens/re2re3gc/stripe.jpg rename to content/wfp/re2re3gc/stripe.jpg diff --git a/content/wfp/re4/index.md b/content/wfp/re4/index.md new file mode 100644 index 0000000..ec16aa2 --- /dev/null +++ b/content/wfp/re4/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main2.png +color: rgba(181, 33, 43, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re4 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re4/ResidentEvil4.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil4.FusionMod.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/2050650/ +id: re4 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: re +title: Resident Evil 4 Fusion Mod +screenshots: + background: https://www.residentevil.com/re4/assets/images/about_bg-about.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* LightSync RGB diff --git a/screens/re4/logo.svg b/content/wfp/re4/logo.svg similarity index 100% rename from screens/re4/logo.svg rename to content/wfp/re4/logo.svg diff --git a/screens/re4/main2.jpg b/content/wfp/re4/main2.jpg similarity index 100% rename from screens/re4/main2.jpg rename to content/wfp/re4/main2.jpg diff --git a/screens/re4/main2.png b/content/wfp/re4/main2.png similarity index 100% rename from screens/re4/main2.png rename to content/wfp/re4/main2.png diff --git a/screens/re4/main3.jpg b/content/wfp/re4/main3.jpg similarity index 100% rename from screens/re4/main3.jpg rename to content/wfp/re4/main3.jpg diff --git a/screens/re4/main3.png b/content/wfp/re4/main3.png similarity index 100% rename from screens/re4/main3.png rename to content/wfp/re4/main3.png diff --git a/screens/re4/stripe.jpg b/content/wfp/re4/stripe.jpg similarity index 100% rename from screens/re4/stripe.jpg rename to content/wfp/re4/stripe.jpg diff --git a/content/wfp/re5/index.md b/content/wfp/re5/index.md new file mode 100644 index 0000000..e27a549 --- /dev/null +++ b/content/wfp/re5/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(211, 154, 34, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re5 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re5/ResidentEvil5.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil5.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/21690/ +id: re5 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: re +title: Resident Evil 5 Fusion Fix +screenshots: + background: https://www.residentevil.com/5/_asset/images/firstView-bg.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. + +* Fixes camera near clip, borderless windowed, LightSync RGB diff --git a/screens/re5/logo.svg b/content/wfp/re5/logo.svg similarity index 100% rename from screens/re5/logo.svg rename to content/wfp/re5/logo.svg diff --git a/screens/re5/main1.jpg b/content/wfp/re5/main1.jpg similarity index 100% rename from screens/re5/main1.jpg rename to content/wfp/re5/main1.jpg diff --git a/screens/re5/main1.png b/content/wfp/re5/main1.png similarity index 100% rename from screens/re5/main1.png rename to content/wfp/re5/main1.png diff --git a/screens/re5/main2.jpg b/content/wfp/re5/main2.jpg similarity index 100% rename from screens/re5/main2.jpg rename to content/wfp/re5/main2.jpg diff --git a/screens/re5/main2.png b/content/wfp/re5/main2.png similarity index 100% rename from screens/re5/main2.png rename to content/wfp/re5/main2.png diff --git a/screens/re5/stripe.jpg b/content/wfp/re5/stripe.jpg similarity index 100% rename from screens/re5/stripe.jpg rename to content/wfp/re5/stripe.jpg diff --git a/content/wfp/re6/index.md b/content/wfp/re6/index.md new file mode 100644 index 0000000..fc1cc20 --- /dev/null +++ b/content/wfp/re6/index.md @@ -0,0 +1,38 @@ +--- +after: main2.png +before: main1.png +color: rgba(57, 19, 33, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/re6 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/re6/ResidentEvil6.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvil6.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/221040/ +id: re6 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any (v1.1.0 recommended) +tag: re +title: Resident Evil 6 Fusion Fix +screenshots: + background: https://www.residentevil.com/6/_asset/images/firstView-bg.jpg + images: + - https://i.imgur.com/SBuBEnJ.jpeg + - https://i.imgur.com/cO876Ac.jpeg + - https://i.imgur.com/oMV2KNa.jpeg + - https://i.imgur.com/UDaVn2T.png + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* Fullscreen coop +* Skip Intro +* Borderless windowed mode diff --git a/screens/re6/logo.svg b/content/wfp/re6/logo.svg similarity index 100% rename from screens/re6/logo.svg rename to content/wfp/re6/logo.svg diff --git a/screens/re6/main1.jpg b/content/wfp/re6/main1.jpg similarity index 100% rename from screens/re6/main1.jpg rename to content/wfp/re6/main1.jpg diff --git a/screens/re6/main1.png b/content/wfp/re6/main1.png similarity index 100% rename from screens/re6/main1.png rename to content/wfp/re6/main1.png diff --git a/screens/re6/main2.jpg b/content/wfp/re6/main2.jpg similarity index 100% rename from screens/re6/main2.jpg rename to content/wfp/re6/main2.jpg diff --git a/screens/re6/main2.png b/content/wfp/re6/main2.png similarity index 100% rename from screens/re6/main2.png rename to content/wfp/re6/main2.png diff --git a/screens/re6/stripe.jpg b/content/wfp/re6/stripe.jpg similarity index 100% rename from screens/re6/stripe.jpg rename to content/wfp/re6/stripe.jpg diff --git a/content/wfp/rerev/index.md b/content/wfp/rerev/index.md new file mode 100644 index 0000000..78d24ef --- /dev/null +++ b/content/wfp/rerev/index.md @@ -0,0 +1,33 @@ +--- +after: main2.png +before: main1.png +color: rgba(26, 41, 51, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/rerev +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/rerev/ResidentEvilRevelations.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvilRevelations.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/222480/ +id: rerev +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Feb 5 2024 (steam latest) +tag: re +title: Resident Evil Revelations Fusion Fix +screenshots: + background: https://game.capcom.com/residentevil/rev/pc/img/top/bg_rev.png + images: + - https://i.imgur.com/Fp4H8jJ.jpeg + - https://i.imgur.com/FFbWf0r.jpeg + - https://i.imgur.com/IpNP8Ev.png + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/rerev/logo.svg b/content/wfp/rerev/logo.svg similarity index 100% rename from screens/rerev/logo.svg rename to content/wfp/rerev/logo.svg diff --git a/screens/rerev/main1.jpg b/content/wfp/rerev/main1.jpg similarity index 100% rename from screens/rerev/main1.jpg rename to content/wfp/rerev/main1.jpg diff --git a/screens/rerev/main1.png b/content/wfp/rerev/main1.png similarity index 100% rename from screens/rerev/main1.png rename to content/wfp/rerev/main1.png diff --git a/screens/rerev/main2.jpg b/content/wfp/rerev/main2.jpg similarity index 100% rename from screens/rerev/main2.jpg rename to content/wfp/rerev/main2.jpg diff --git a/screens/rerev/main2.png b/content/wfp/rerev/main2.png similarity index 100% rename from screens/rerev/main2.png rename to content/wfp/rerev/main2.png diff --git a/screens/rerev/stripe.jpg b/content/wfp/rerev/stripe.jpg similarity index 100% rename from screens/rerev/stripe.jpg rename to content/wfp/rerev/stripe.jpg diff --git a/content/wfp/rerev2/index.md b/content/wfp/rerev2/index.md new file mode 100644 index 0000000..461144f --- /dev/null +++ b/content/wfp/rerev2/index.md @@ -0,0 +1,38 @@ +--- +after: main2.png +before: main1.png +color: rgba(224, 206, 171, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/rerev2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/rerev2/ResidentEvilRevelations2.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/ResidentEvilRevelations2.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/287290/ +id: rerev2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Ver.5.00 +tag: re +title: Resident Evil Revelations 2 Fusion Fix +screenshots: + background: https://game.capcom.com/residentevil/pc/img/about/history/rev2/artwork/pop-artwork-l-2-1.jpg + images: + - https://i.imgur.com/Dz1IVuI.jpeg + - https://i.imgur.com/PIOFqVT.jpeg + - https://i.imgur.com/TjA8veA.jpeg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* Fullscreen coop +* Skip Intro +* Episode 4 stuck controls bug fix +* Borderless windowed mode diff --git a/screens/rerev2/logo.svg b/content/wfp/rerev2/logo.svg similarity index 100% rename from screens/rerev2/logo.svg rename to content/wfp/rerev2/logo.svg diff --git a/screens/rerev2/main1.jpg b/content/wfp/rerev2/main1.jpg similarity index 100% rename from screens/rerev2/main1.jpg rename to content/wfp/rerev2/main1.jpg diff --git a/screens/rerev2/main1.png b/content/wfp/rerev2/main1.png similarity index 100% rename from screens/rerev2/main1.png rename to content/wfp/rerev2/main1.png diff --git a/screens/rerev2/main2.jpg b/content/wfp/rerev2/main2.jpg similarity index 100% rename from screens/rerev2/main2.jpg rename to content/wfp/rerev2/main2.jpg diff --git a/screens/rerev2/main2.png b/content/wfp/rerev2/main2.png similarity index 100% rename from screens/rerev2/main2.png rename to content/wfp/rerev2/main2.png diff --git a/screens/rerev2/stripe.jpg b/content/wfp/rerev2/stripe.jpg similarity index 100% rename from screens/rerev2/stripe.jpg rename to content/wfp/rerev2/stripe.jpg diff --git a/content/wfp/sc/index.md b/content/wfp/sc/index.md new file mode 100644 index 0000000..1c76ba9 --- /dev/null +++ b/content/wfp/sc/index.md @@ -0,0 +1,54 @@ +--- +after: main2.png +before: main1.png +color: rgba(12, 12, 10, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sc/SplinterCell.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCell.WidescreenFix.zip?branch=master +- name: HD Textures from PS3 version + url: https://mega.nz/#!JkhgXbiI!Y0Syn7B74qXhg1UJt7cKxYHtdnmqp_9bYtbaoWBZbrc +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/13560/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/splinter_cell +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/tom-clancys-splinter-cell/56c4948a88a7e300458b481c.html +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: sc +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: splintercell +title: Splinter Cell Widescreen Fix +screenshots: + background: https://i.imgur.com/3Z2JG8O.jpg + images: + - https://i.imgur.com/F2f0quA.jpg + - https://i.imgur.com/nIpPtL5.jpg + - https://i.imgur.com/2sgdWNo.png + - https://i.imgur.com/1dRvJxn.jpg + - https://i.imgur.com/BdDykMq.jpg + - https://i.imgur.com/cPuXS7C.jpg + - https://i.imgur.com/T5iRSxO.png + - https://i.imgur.com/ebyvmp8.jpg + - https://i.imgur.com/U5svQ58.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes [dgVoodoo](http://dege.freeweb.hu/dgVoodoo2/) to fix buffered shadows. diff --git a/screens/sc/logo.png b/content/wfp/sc/logo.png similarity index 100% rename from screens/sc/logo.png rename to content/wfp/sc/logo.png diff --git a/screens/sc/logo.svg b/content/wfp/sc/logo.svg similarity index 100% rename from screens/sc/logo.svg rename to content/wfp/sc/logo.svg diff --git a/screens/sc/logo2.svg b/content/wfp/sc/logo2.svg similarity index 100% rename from screens/sc/logo2.svg rename to content/wfp/sc/logo2.svg diff --git a/screens/sc/main1.jpg b/content/wfp/sc/main1.jpg similarity index 100% rename from screens/sc/main1.jpg rename to content/wfp/sc/main1.jpg diff --git a/screens/sc/main1.png b/content/wfp/sc/main1.png similarity index 100% rename from screens/sc/main1.png rename to content/wfp/sc/main1.png diff --git a/screens/sc/main2.jpg b/content/wfp/sc/main2.jpg similarity index 100% rename from screens/sc/main2.jpg rename to content/wfp/sc/main2.jpg diff --git a/screens/sc/main2.png b/content/wfp/sc/main2.png similarity index 100% rename from screens/sc/main2.png rename to content/wfp/sc/main2.png diff --git a/screens/sc/stripe.jpg b/content/wfp/sc/stripe.jpg similarity index 100% rename from screens/sc/stripe.jpg rename to content/wfp/sc/stripe.jpg diff --git a/content/wfp/scarface/index.md b/content/wfp/scarface/index.md new file mode 100644 index 0000000..5a8c8ee --- /dev/null +++ b/content/wfp/scarface/index.md @@ -0,0 +1,29 @@ +--- +after: main2.png +before: main2.png +color: rgba(95, 28, 46, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scarface +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scarface/Scarface.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Scarface.FusionFix.zip?branch=master +icons: [] +id: scarface +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: Scarface Fusion Fix +screenshots: + background: https://i.imgur.com/K8L9W8y.jpg + images: [] + youtube: https://www.youtube.com/embed/ON5Yk_uU8DM +--- + +1. Download and install [SilentPatch](https://github.com/CookiePLMonster/SilentPatchScarface/releases/latest). +2. Download and extract the archive to the game directory, where the exe is located. + +Proper camera movement with mouse, gamepad support (via Xidi), modern gamepad controls (Brake/Accelerate and Aim/Shoot with Triggers). diff --git a/screens/scarface/logo.png b/content/wfp/scarface/logo.png similarity index 100% rename from screens/scarface/logo.png rename to content/wfp/scarface/logo.png diff --git a/screens/scarface/logo.svg b/content/wfp/scarface/logo.svg similarity index 100% rename from screens/scarface/logo.svg rename to content/wfp/scarface/logo.svg diff --git a/screens/scarface/main2.jpg b/content/wfp/scarface/main2.jpg similarity index 100% rename from screens/scarface/main2.jpg rename to content/wfp/scarface/main2.jpg diff --git a/screens/scarface/main2.png b/content/wfp/scarface/main2.png similarity index 100% rename from screens/scarface/main2.png rename to content/wfp/scarface/main2.png diff --git a/screens/scarface/stripe.jpg b/content/wfp/scarface/stripe.jpg similarity index 100% rename from screens/scarface/stripe.jpg rename to content/wfp/scarface/stripe.jpg diff --git a/content/wfp/scb/index.md b/content/wfp/scb/index.md new file mode 100644 index 0000000..270277e --- /dev/null +++ b/content/wfp/scb/index.md @@ -0,0 +1,44 @@ +--- +after: main2.png +before: main2.png +color: rgba(57, 175, 58, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scb +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scb/SplinterCellBlacklist.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellBlacklist.FusionMod.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/235600/ +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubisoft.com/tom-clancys-splinter-cell-blacklist/56c4948a88a7e300458b4822.html +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: scb +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: Splinter Cell Blacklist Fusion Mod +screenshots: + background: https://i.imgur.com/G4SvSBY.jpeg + images: + - https://i.imgur.com/U4PCwMi.jpeg + youtube: https://www.youtube.com/embed/su47XbCcVyw +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Unlocks delisted DLC +* Ultrawide support +* Extraction, Hunter and Ghost game modes modifications +* Skip intro, disable negative mouse acceleration and more... diff --git a/screens/scb/logo.svg b/content/wfp/scb/logo.svg similarity index 100% rename from screens/scb/logo.svg rename to content/wfp/scb/logo.svg diff --git a/screens/scb/main2.jpg b/content/wfp/scb/main2.jpg similarity index 100% rename from screens/scb/main2.jpg rename to content/wfp/scb/main2.jpg diff --git a/screens/scb/main2.png b/content/wfp/scb/main2.png similarity index 100% rename from screens/scb/main2.png rename to content/wfp/scb/main2.png diff --git a/screens/scb/stripe.jpg b/content/wfp/scb/stripe.jpg similarity index 100% rename from screens/scb/stripe.jpg rename to content/wfp/scb/stripe.jpg diff --git a/content/wfp/scc/index.md b/content/wfp/scc/index.md new file mode 100644 index 0000000..de4098b --- /dev/null +++ b/content/wfp/scc/index.md @@ -0,0 +1,44 @@ +--- +after: main2.png +before: main1.png +color: rgba(29, 6, 24, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scc/SplinterCellConviction.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellConviction.FusionMod.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/33220/ +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/us/tom-clancys-splinter-cell-conviction-deluxe-edition/56c4948a88a7e300458b481e.html +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: scc +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: splintercell +title: Splinter Cell Conviction Fusion Mod +screenshots: + background: https://i.imgur.com/PcKaUwG.png + images: + - https://i.imgur.com/OyTCH3y.jpeg + - https://i.imgur.com/6K1es6H.jpeg + - https://i.imgur.com/4qRaeXX.jpeg + youtube: https://www.youtube.com/embed/ECDDyDNWeNI +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Skip intro, skip systemdetection, disable DOF, disable black and white filter, [enhanced sonar vision](https://imgur.com/PfDDYG2) +* Blacklist Control Scheme and more... diff --git a/screens/scc/logo.svg b/content/wfp/scc/logo.svg similarity index 100% rename from screens/scc/logo.svg rename to content/wfp/scc/logo.svg diff --git a/screens/scc/main1.jpg b/content/wfp/scc/main1.jpg similarity index 100% rename from screens/scc/main1.jpg rename to content/wfp/scc/main1.jpg diff --git a/screens/scc/main1.png b/content/wfp/scc/main1.png similarity index 100% rename from screens/scc/main1.png rename to content/wfp/scc/main1.png diff --git a/screens/scc/main2.jpg b/content/wfp/scc/main2.jpg similarity index 100% rename from screens/scc/main2.jpg rename to content/wfp/scc/main2.jpg diff --git a/screens/scc/main2.png b/content/wfp/scc/main2.png similarity index 100% rename from screens/scc/main2.png rename to content/wfp/scc/main2.png diff --git a/screens/scc/stripe.jpg b/content/wfp/scc/stripe.jpg similarity index 100% rename from screens/scc/stripe.jpg rename to content/wfp/scc/stripe.jpg diff --git a/content/wfp/scct/index.md b/content/wfp/scct/index.md new file mode 100644 index 0000000..bfbc385 --- /dev/null +++ b/content/wfp/scct/index.md @@ -0,0 +1,49 @@ +--- +after: main2.png +before: main1.png +color: rgba(8, 34, 15, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scct +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scct/SplinterCellChaosTheory.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellChaosTheory.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/13570/ +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/tom-clancys-splinter-cell-chaos-theory/56c4948a88a7e300458b482a.html +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: scct +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: splintercell +title: Splinter Cell Chaos Theory Widescreen Fix +screenshots: + background: https://i.imgur.com/6NkTM0Z.jpg + images: + - https://i.imgur.com/WRbTZHK.jpg + - https://i.imgur.com/p1RDRKR.png + - https://i.imgur.com/KRx219e.jpg + - https://i.imgur.com/kboRwVG.png + - https://i.imgur.com/5vuxwZT.jpg + - https://i.imgur.com/fasN0xD.jpg + - https://i.imgur.com/lgIdhFr.jpg + - https://i.imgur.com/mdgQY6L.jpg + - https://i.imgur.com/pECnIAM.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes d3d9 wrapper with ability to activate windowed mode. diff --git a/screens/scct/logo.png b/content/wfp/scct/logo.png similarity index 100% rename from screens/scct/logo.png rename to content/wfp/scct/logo.png diff --git a/screens/scct/logo.svg b/content/wfp/scct/logo.svg similarity index 100% rename from screens/scct/logo.svg rename to content/wfp/scct/logo.svg diff --git a/screens/scct/main1.jpg b/content/wfp/scct/main1.jpg similarity index 100% rename from screens/scct/main1.jpg rename to content/wfp/scct/main1.jpg diff --git a/screens/scct/main1.png b/content/wfp/scct/main1.png similarity index 100% rename from screens/scct/main1.png rename to content/wfp/scct/main1.png diff --git a/screens/scct/main2.jpg b/content/wfp/scct/main2.jpg similarity index 100% rename from screens/scct/main2.jpg rename to content/wfp/scct/main2.jpg diff --git a/screens/scct/main2.png b/content/wfp/scct/main2.png similarity index 100% rename from screens/scct/main2.png rename to content/wfp/scct/main2.png diff --git a/screens/scct/stripe.jpg b/content/wfp/scct/stripe.jpg similarity index 100% rename from screens/scct/stripe.jpg rename to content/wfp/scct/stripe.jpg diff --git a/content/wfp/scda/index.md b/content/wfp/scda/index.md new file mode 100644 index 0000000..80a8cc9 --- /dev/null +++ b/content/wfp/scda/index.md @@ -0,0 +1,52 @@ +--- +after: main2.png +before: main1.png +color: rgba(71, 99, 87, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scda +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scda/SplinterCellDoubleAgent.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellDoubleAgent.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/13580/ +- name: ubisoft + tooltip: Works with Uplay version + url: https://store.ubi.com/tom-clancy-s-splinter-cell-double-agent/56c4948a88a7e300458b482c.html +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +- name: file-music1 + tooltip: "Splinter Cell: Double Agent \u2013 Soundtrack" + url: http://www.behaviormusic.com/projects/splinter-cell-double-agent-soundtrack/ +id: scda +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: splintercell +title: Splinter Cell Double Agent Widescreen Fix +screenshots: + background: https://i.imgur.com/TLG3z2P.png + images: + - https://i.imgur.com/oiljIYi.jpg + - https://i.imgur.com/sv2DX48.jpg + - https://i.imgur.com/DrixEPv.jpg + - https://i.imgur.com/KKJzs3u.png + - https://i.imgur.com/WdvbOTZ.png + - https://i.imgur.com/FO4yawo.jpg + - https://i.imgur.com/30R5YmM.jpg + - https://i.imgur.com/OjPtCBK.jpg + - https://i.imgur.com/T3mCABV.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes special d3d9 wrapper that prevents the game from crashing after certain events occur. Instead of the crash, loadscreens may disappear, minimap will be bugged, but you'll be able to save your progress and restart the game. diff --git a/screens/scda/logo.png b/content/wfp/scda/logo.png similarity index 100% rename from screens/scda/logo.png rename to content/wfp/scda/logo.png diff --git a/screens/scda/logo.svg b/content/wfp/scda/logo.svg similarity index 100% rename from screens/scda/logo.svg rename to content/wfp/scda/logo.svg diff --git a/screens/scda/main1.jpg b/content/wfp/scda/main1.jpg similarity index 100% rename from screens/scda/main1.jpg rename to content/wfp/scda/main1.jpg diff --git a/screens/scda/main1.png b/content/wfp/scda/main1.png similarity index 100% rename from screens/scda/main1.png rename to content/wfp/scda/main1.png diff --git a/screens/scda/main2.jpg b/content/wfp/scda/main2.jpg similarity index 100% rename from screens/scda/main2.jpg rename to content/wfp/scda/main2.jpg diff --git a/screens/scda/main2.png b/content/wfp/scda/main2.png similarity index 100% rename from screens/scda/main2.png rename to content/wfp/scda/main2.png diff --git a/screens/scda/stripe.jpg b/content/wfp/scda/stripe.jpg similarity index 100% rename from screens/scda/stripe.jpg rename to content/wfp/scda/stripe.jpg diff --git a/content/wfp/scdaps2/index.md b/content/wfp/scdaps2/index.md new file mode 100644 index 0000000..3b777ab --- /dev/null +++ b/content/wfp/scdaps2/index.md @@ -0,0 +1,59 @@ +--- +after: main2.png +before: main1.png +color: rgba(71, 99, 87, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scdaps2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scdaps2/SplinterCellDoubleAgent.PCSX2F.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellDoubleAgent.PCSX2F.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +id: scdaps2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: SLUS-21356 | SLES-53827 +tag: splintercell +title: Splinter Cell Double Agent Widescreen Fix [PCSX2F] +screenshots: + background: https://i.imgur.com/OXilQdi.jpg + images: + - https://i.imgur.com/eph3zGR.jpg + - https://i.imgur.com/zCTIuTz.jpg + - https://i.imgur.com/4TffjUX.png + - https://i.imgur.com/MmrdfC0.png + - https://i.imgur.com/hhGFhjf.jpg + - https://i.imgur.com/ku5DdBO.jpg + - https://i.imgur.com/gjBnzul.jpg + - https://i.imgur.com/tF6Jyft.jpg + - https://i.imgur.com/woPFAS8.jpg + - https://i.imgur.com/PoXcLws.png + - https://i.imgur.com/xQYUFTE.jpg + - https://i.imgur.com/ZASlg0N.jpg + - https://i.imgur.com/8e749y3.jpg + - https://i.imgur.com/KdVZYcr.png + - https://i.imgur.com/5agE1Az.jpg + - https://i.imgur.com/rDrmgoc.jpg + - https://i.imgur.com/Is1jq0x.jpg + - https://i.imgur.com/E5PBggd.jpg + - https://i.imgur.com/TFKQP6X.jpg + - https://i.imgur.com/ZBkQOM0.png + - https://i.imgur.com/Zv6rgoV.jpg + - https://i.imgur.com/BnmqLd2.jpg + - https://i.imgur.com/VdvYWho.jpg + youtube: https://www.youtube.com/embed/4dFmFLqxYNo +--- + +1. Download and extract [PCSX2 Fork With Plugins](https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest). +2. Download and extract the archive to the root directory, where exe is located. +3. Change the aspect ratio or window size of the emulator. +4. Launch the game. + +Notes: + +* More info about this release on [GitHub Releases page](https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scdaps2). diff --git a/screens/scdaps2/logo.svg b/content/wfp/scdaps2/logo.svg similarity index 100% rename from screens/scdaps2/logo.svg rename to content/wfp/scdaps2/logo.svg diff --git a/screens/scdaps2/main1.jpg b/content/wfp/scdaps2/main1.jpg similarity index 100% rename from screens/scdaps2/main1.jpg rename to content/wfp/scdaps2/main1.jpg diff --git a/screens/scdaps2/main1.png b/content/wfp/scdaps2/main1.png similarity index 100% rename from screens/scdaps2/main1.png rename to content/wfp/scdaps2/main1.png diff --git a/screens/scdaps2/main2.jpg b/content/wfp/scdaps2/main2.jpg similarity index 100% rename from screens/scdaps2/main2.jpg rename to content/wfp/scdaps2/main2.jpg diff --git a/screens/scdaps2/main2.png b/content/wfp/scdaps2/main2.png similarity index 100% rename from screens/scdaps2/main2.png rename to content/wfp/scdaps2/main2.png diff --git a/screens/scdaps2/main3.jpg b/content/wfp/scdaps2/main3.jpg similarity index 100% rename from screens/scdaps2/main3.jpg rename to content/wfp/scdaps2/main3.jpg diff --git a/screens/scdaps2/main3.png b/content/wfp/scdaps2/main3.png similarity index 100% rename from screens/scdaps2/main3.png rename to content/wfp/scdaps2/main3.png diff --git a/screens/scdaps2/stripe.jpg b/content/wfp/scdaps2/stripe.jpg similarity index 100% rename from screens/scdaps2/stripe.jpg rename to content/wfp/scdaps2/stripe.jpg diff --git a/content/wfp/scdaxbox/index.md b/content/wfp/scdaxbox/index.md new file mode 100644 index 0000000..8fe0010 --- /dev/null +++ b/content/wfp/scdaxbox/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main1.png +color: rgba(71, 99, 87, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scdaxbox +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scdaxbox/SplinterCellDoubleAgent.CXBXR.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellDoubleAgent.CXBXR.WidescreenFix.zip?branch=master +icons: +- name: cxbxr + tooltip: Works with Cxbx-Reloaded + url: https://cxbx-reloaded.co.uk/ +id: scdaxbox +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with CXBXR build CI-41c9d7a + version: US-094 v1.02 +tag: splintercell +title: Splinter Cell Double Agent Widescreen Fix [CXBXR] +screenshots: + background: https://i.imgur.com/q76jDqz.jpg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the directory, where cxbx.exe is located. +2. Change window size through the emulator, disable maintain aspect ratio option. +3. Launch the game. + +Notes: + +* More info about this release on [GitHub Releases page](https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scdaxbox). diff --git a/screens/scdaxbox/logo.svg b/content/wfp/scdaxbox/logo.svg similarity index 100% rename from screens/scdaxbox/logo.svg rename to content/wfp/scdaxbox/logo.svg diff --git a/screens/scdaxbox/main1.jpg b/content/wfp/scdaxbox/main1.jpg similarity index 100% rename from screens/scdaxbox/main1.jpg rename to content/wfp/scdaxbox/main1.jpg diff --git a/screens/scdaxbox/main1.png b/content/wfp/scdaxbox/main1.png similarity index 100% rename from screens/scdaxbox/main1.png rename to content/wfp/scdaxbox/main1.png diff --git a/screens/scdaxbox/main2.jpg b/content/wfp/scdaxbox/main2.jpg similarity index 100% rename from screens/scdaxbox/main2.jpg rename to content/wfp/scdaxbox/main2.jpg diff --git a/screens/scdaxbox/main2.png b/content/wfp/scdaxbox/main2.png similarity index 100% rename from screens/scdaxbox/main2.png rename to content/wfp/scdaxbox/main2.png diff --git a/screens/scdaxbox/stripe.jpg b/content/wfp/scdaxbox/stripe.jpg similarity index 100% rename from screens/scdaxbox/stripe.jpg rename to content/wfp/scdaxbox/stripe.jpg diff --git a/content/wfp/sce/index.md b/content/wfp/sce/index.md new file mode 100644 index 0000000..5d32033 --- /dev/null +++ b/content/wfp/sce/index.md @@ -0,0 +1,48 @@ +--- +after: main2.png +before: main2.png +color: rgba(82, 47, 17, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sce +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sce/SplinterCellEssentials.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellEssentials.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: sce +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.12.3-410-gb352f6107 + version: Any +tag: splintercell +title: Splinter Cell Essentials Fusion Mod [PPSSPP] +screenshots: + background: https://i.imgur.com/q76jDqz.jpg + images: + - https://i.imgur.com/WstoVAF.png + - https://i.imgur.com/oJP918t.jpeg + - https://i.imgur.com/F0Q1OPz.jpeg + - https://i.imgur.com/5eyw2MG.jpeg + - https://i.imgur.com/HEHcVsZ.jpeg + - https://i.imgur.com/q0DEQra.jpeg + - https://i.imgur.com/ioGds9n.png + - https://i.imgur.com/YMaRHxP.jpeg + - https://i.imgur.com/QnywfOT.jpeg + youtube: '' +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +Notes: + +* Dual analog patch, 60 fps, skip intro and improved controls +* Ultra-wide support (for PPSSPP v1.14 and above) diff --git a/screens/sce/logo.svg b/content/wfp/sce/logo.svg similarity index 100% rename from screens/sce/logo.svg rename to content/wfp/sce/logo.svg diff --git a/screens/sce/main2.jpg b/content/wfp/sce/main2.jpg similarity index 100% rename from screens/sce/main2.jpg rename to content/wfp/sce/main2.jpg diff --git a/screens/sce/main2.png b/content/wfp/sce/main2.png similarity index 100% rename from screens/sce/main2.png rename to content/wfp/sce/main2.png diff --git a/screens/sce/stripe.jpg b/content/wfp/sce/stripe.jpg similarity index 100% rename from screens/sce/stripe.jpg rename to content/wfp/sce/stripe.jpg diff --git a/content/wfp/scpt/index.md b/content/wfp/scpt/index.md new file mode 100644 index 0000000..8680aa6 --- /dev/null +++ b/content/wfp/scpt/index.md @@ -0,0 +1,45 @@ +--- +after: main2.png +before: main1.png +color: rgba(82, 47, 17, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/scpt +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/scpt/SplinterCellPandoraTomorrow.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SplinterCellPandoraTomorrow.WidescreenFix.zip?branch=master +- name: HD Textures from PS3 version + url: https://mega.nz/#!ogImgBgR!CTtkslHS220EJ8q7ocHJcp3jveb7EEkbK_WleJss8Wk +icons: +- name: scgoggles + tooltip: Official website + url: http://www.splintercell.com/ +id: scpt +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: splintercell +title: Splinter Cell Pandora Tomorrow Widescreen Fix +screenshots: + background: https://i.imgur.com/7OAyYVD.jpg + images: + - https://i.imgur.com/siMckN1.jpg + - https://i.imgur.com/jzZh2nW.jpg + - https://i.imgur.com/jAYvSFI.jpg + - https://i.imgur.com/gOtoJva.jpg + - https://i.imgur.com/eSqRSE6.jpg + - https://i.imgur.com/xoeq2YX.png + - https://i.imgur.com/IV9dmJE.jpg + - https://i.imgur.com/NaJA4ek.jpg + - https://i.imgur.com/Cpkit7r.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Includes [dgVoodoo](http://dege.freeweb.hu/dgVoodoo2/) to fix buffered shadows. diff --git a/screens/scpt/logo.png b/content/wfp/scpt/logo.png similarity index 100% rename from screens/scpt/logo.png rename to content/wfp/scpt/logo.png diff --git a/screens/scpt/logo.svg b/content/wfp/scpt/logo.svg similarity index 100% rename from screens/scpt/logo.svg rename to content/wfp/scpt/logo.svg diff --git a/screens/scpt/logo2.svg b/content/wfp/scpt/logo2.svg similarity index 100% rename from screens/scpt/logo2.svg rename to content/wfp/scpt/logo2.svg diff --git a/screens/scpt/main1.jpg b/content/wfp/scpt/main1.jpg similarity index 100% rename from screens/scpt/main1.jpg rename to content/wfp/scpt/main1.jpg diff --git a/screens/scpt/main1.png b/content/wfp/scpt/main1.png similarity index 100% rename from screens/scpt/main1.png rename to content/wfp/scpt/main1.png diff --git a/screens/scpt/main2.jpg b/content/wfp/scpt/main2.jpg similarity index 100% rename from screens/scpt/main2.jpg rename to content/wfp/scpt/main2.jpg diff --git a/screens/scpt/main2.png b/content/wfp/scpt/main2.png similarity index 100% rename from screens/scpt/main2.png rename to content/wfp/scpt/main2.png diff --git a/screens/scpt/stripe.jpg b/content/wfp/scpt/stripe.jpg similarity index 100% rename from screens/scpt/stripe.jpg rename to content/wfp/scpt/stripe.jpg diff --git a/content/wfp/secondsight/index.md b/content/wfp/secondsight/index.md new file mode 100644 index 0000000..8d513a3 --- /dev/null +++ b/content/wfp/secondsight/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/secondsight +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/secondsight/SecondSight.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SecondSight.WidescreenFix.zip?branch=master +icons: [] +id: secondsight +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Second Sight Widescreen Fix +screenshots: + background: https://i.imgur.com/z3JM9Ie.jpg + images: + - https://i.imgur.com/4aphWuw.jpg + - https://i.imgur.com/EUTqEP2.jpg + - https://i.imgur.com/wQKiHX1.jpg + - https://i.imgur.com/DqScHCC.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Decreasing the FOV multiplier is recommended to hide rendering issues. diff --git a/screens/secondsight/logo.png b/content/wfp/secondsight/logo.png similarity index 100% rename from screens/secondsight/logo.png rename to content/wfp/secondsight/logo.png diff --git a/screens/secondsight/logo.svg b/content/wfp/secondsight/logo.svg similarity index 100% rename from screens/secondsight/logo.svg rename to content/wfp/secondsight/logo.svg diff --git a/screens/secondsight/main1.jpg b/content/wfp/secondsight/main1.jpg similarity index 100% rename from screens/secondsight/main1.jpg rename to content/wfp/secondsight/main1.jpg diff --git a/screens/secondsight/main1.png b/content/wfp/secondsight/main1.png similarity index 100% rename from screens/secondsight/main1.png rename to content/wfp/secondsight/main1.png diff --git a/screens/secondsight/main2.jpg b/content/wfp/secondsight/main2.jpg similarity index 100% rename from screens/secondsight/main2.jpg rename to content/wfp/secondsight/main2.jpg diff --git a/screens/secondsight/main2.png b/content/wfp/secondsight/main2.png similarity index 100% rename from screens/secondsight/main2.png rename to content/wfp/secondsight/main2.png diff --git a/content/wfp/sh2/index.md b/content/wfp/sh2/index.md new file mode 100644 index 0000000..28a0d1f --- /dev/null +++ b/content/wfp/sh2/index.md @@ -0,0 +1,47 @@ +--- +after: main2.png +before: main1.png +color: rgba(94, 32, 18, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sh2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sh2/SilentHill2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SilentHill2.WidescreenFix.zip?branch=master +- name: FMV Enhancement Pack + url: http://widescreenfix.townofsilenthill.com/SH2/files/SH2_Enhanced_FMV_Pack_16-10_Aspect_Ratio.rar +icons: +- name: shill + tooltip: Official website + url: http://www.konami.jp/gs/game/sh2/home.html +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: sh2 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: silenthill +title: Silent Hill 2 Widescreen Fix +screenshots: + background: https://i.imgur.com/sVAGP7U.jpg + images: + - https://i.imgur.com/pa7gGLv.jpg + - https://i.imgur.com/yn4XSqs.png + - https://i.imgur.com/cWBanMl.jpg + - https://i.imgur.com/LmjQGgH.png + - https://i.imgur.com/SgfkcOM.jpg + - https://i.imgur.com/ftNbyqd.jpg + - https://i.imgur.com/sWbNLjR.jpg + - https://i.imgur.com/Gst7jNE.png + - https://i.imgur.com/ftVsTDA.jpg + youtube: https://www.youtube.com/embed/Phu63fdOKwc +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* This project is a part of [**Silent Hill 2: Enhanced Edition**](https://enhanced.townofsilenthill.com/SH2/). It is recommended to use it instead. +* [**Silent Hill 2 Remake**](https://store.steampowered.com/app/2124490) is also available. diff --git a/screens/sh2/logo.png b/content/wfp/sh2/logo.png similarity index 100% rename from screens/sh2/logo.png rename to content/wfp/sh2/logo.png diff --git a/screens/sh2/logo.svg b/content/wfp/sh2/logo.svg similarity index 100% rename from screens/sh2/logo.svg rename to content/wfp/sh2/logo.svg diff --git a/screens/sh2/main1.jpg b/content/wfp/sh2/main1.jpg similarity index 100% rename from screens/sh2/main1.jpg rename to content/wfp/sh2/main1.jpg diff --git a/screens/sh2/main1.png b/content/wfp/sh2/main1.png similarity index 100% rename from screens/sh2/main1.png rename to content/wfp/sh2/main1.png diff --git a/screens/sh2/main2.jpg b/content/wfp/sh2/main2.jpg similarity index 100% rename from screens/sh2/main2.jpg rename to content/wfp/sh2/main2.jpg diff --git a/screens/sh2/main2.png b/content/wfp/sh2/main2.png similarity index 100% rename from screens/sh2/main2.png rename to content/wfp/sh2/main2.png diff --git a/screens/sh2/stripe.jpg b/content/wfp/sh2/stripe.jpg similarity index 100% rename from screens/sh2/stripe.jpg rename to content/wfp/sh2/stripe.jpg diff --git a/content/wfp/sh3/index.md b/content/wfp/sh3/index.md new file mode 100644 index 0000000..385843e --- /dev/null +++ b/content/wfp/sh3/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(92, 44, 30, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sh3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sh3/SilentHill3.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SilentHill3.WidescreenFix.zip?branch=master +icons: +- name: shill + tooltip: Official website + url: http://www.konami.jp/gs/game/sh3/index.html +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: sh3 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: silenthill +title: Silent Hill 3 Widescreen Fix +screenshots: + background: https://i.imgur.com/DGj7DYJ.jpg + images: + - https://i.imgur.com/cSDC38M.jpg + - https://i.imgur.com/DuvIgpH.jpg + - https://i.imgur.com/vfP9jja.jpg + - https://i.imgur.com/p39rmpA.png + - https://i.imgur.com/KqwK6hb.jpg + - https://i.imgur.com/xhrKqU6.jpg + - https://i.imgur.com/sfDfpeb.jpg + - https://i.imgur.com/ZGFSTiM.jpg + - https://i.imgur.com/ik5Ck1t.jpg + youtube: https://www.youtube.com/embed/6ukv-o_FLyk +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/sh3/logo.png b/content/wfp/sh3/logo.png similarity index 100% rename from screens/sh3/logo.png rename to content/wfp/sh3/logo.png diff --git a/screens/sh3/logo.svg b/content/wfp/sh3/logo.svg similarity index 100% rename from screens/sh3/logo.svg rename to content/wfp/sh3/logo.svg diff --git a/screens/sh3/main1.jpg b/content/wfp/sh3/main1.jpg similarity index 100% rename from screens/sh3/main1.jpg rename to content/wfp/sh3/main1.jpg diff --git a/screens/sh3/main1.png b/content/wfp/sh3/main1.png similarity index 100% rename from screens/sh3/main1.png rename to content/wfp/sh3/main1.png diff --git a/screens/sh3/main2.jpg b/content/wfp/sh3/main2.jpg similarity index 100% rename from screens/sh3/main2.jpg rename to content/wfp/sh3/main2.jpg diff --git a/screens/sh3/main2.png b/content/wfp/sh3/main2.png similarity index 100% rename from screens/sh3/main2.png rename to content/wfp/sh3/main2.png diff --git a/screens/sh3/stripe.jpg b/content/wfp/sh3/stripe.jpg similarity index 100% rename from screens/sh3/stripe.jpg rename to content/wfp/sh3/stripe.jpg diff --git a/content/wfp/sh4/index.md b/content/wfp/sh4/index.md new file mode 100644 index 0000000..80870bc --- /dev/null +++ b/content/wfp/sh4/index.md @@ -0,0 +1,46 @@ +--- +after: main2.png +before: main1.png +color: rgba(79, 76, 69, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sh4 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sh4/SilentHill4.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SilentHill4.WidescreenFix.zip?branch=master +icons: +- name: shill + tooltip: Official website + url: http://www.silenthill4.net/ +- name: github + tooltip: Collaboration with Aero + url: https://github.com/AeroWidescreen +id: sh4 +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: silenthill +title: Silent Hill 4 Widescreen Fix +screenshots: + background: https://i.imgur.com/U87Ccy5.jpg + images: + - https://i.imgur.com/k5wxOS8.jpg + - https://i.imgur.com/MUaCZ4G.jpg + - https://i.imgur.com/NSSjaPR.jpg + - https://i.imgur.com/jwOhymN.jpg + - https://i.imgur.com/DjwLmkP.jpg + - https://i.imgur.com/Z6PGLRw.jpg + - https://i.imgur.com/aT0vqhI.jpg + - https://i.imgur.com/8A9nUGR.jpg + - https://i.imgur.com/6bo31el.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* A couple of post-processing effects could not be scaled properly, so they are disabled when Fix2D is used. diff --git a/screens/sh4/logo.png b/content/wfp/sh4/logo.png similarity index 100% rename from screens/sh4/logo.png rename to content/wfp/sh4/logo.png diff --git a/screens/sh4/logo.svg b/content/wfp/sh4/logo.svg similarity index 100% rename from screens/sh4/logo.svg rename to content/wfp/sh4/logo.svg diff --git a/screens/sh4/main1.jpg b/content/wfp/sh4/main1.jpg similarity index 100% rename from screens/sh4/main1.jpg rename to content/wfp/sh4/main1.jpg diff --git a/screens/sh4/main1.png b/content/wfp/sh4/main1.png similarity index 100% rename from screens/sh4/main1.png rename to content/wfp/sh4/main1.png diff --git a/screens/sh4/main2.jpg b/content/wfp/sh4/main2.jpg similarity index 100% rename from screens/sh4/main2.jpg rename to content/wfp/sh4/main2.jpg diff --git a/screens/sh4/main2.png b/content/wfp/sh4/main2.png similarity index 100% rename from screens/sh4/main2.png rename to content/wfp/sh4/main2.png diff --git a/screens/sh4/stripe.jpg b/content/wfp/sh4/stripe.jpg similarity index 100% rename from screens/sh4/stripe.jpg rename to content/wfp/sh4/stripe.jpg diff --git a/content/wfp/sniperelite/index.md b/content/wfp/sniperelite/index.md new file mode 100644 index 0000000..fca83ef --- /dev/null +++ b/content/wfp/sniperelite/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sniperelite +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sniperelite/SniperElite.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SniperElite.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/3700/ +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/sniper_elite_berlin_1945 +id: sniperelite +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Sniper Elite Widescreen Fix +screenshots: + background: https://i.imgur.com/BY2n2fb.jpg + images: + - https://i.imgur.com/ZrIbeZl.jpg + - https://i.imgur.com/KvFAnFy.jpg + - https://i.imgur.com/CAalcDy.jpg + - https://i.imgur.com/lYM6tmd.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/sniperelite/logo.png b/content/wfp/sniperelite/logo.png similarity index 100% rename from screens/sniperelite/logo.png rename to content/wfp/sniperelite/logo.png diff --git a/screens/sniperelite/logo.svg b/content/wfp/sniperelite/logo.svg similarity index 100% rename from screens/sniperelite/logo.svg rename to content/wfp/sniperelite/logo.svg diff --git a/screens/sniperelite/main1.jpg b/content/wfp/sniperelite/main1.jpg similarity index 100% rename from screens/sniperelite/main1.jpg rename to content/wfp/sniperelite/main1.jpg diff --git a/screens/sniperelite/main1.png b/content/wfp/sniperelite/main1.png similarity index 100% rename from screens/sniperelite/main1.png rename to content/wfp/sniperelite/main1.png diff --git a/screens/sniperelite/main2.jpg b/content/wfp/sniperelite/main2.jpg similarity index 100% rename from screens/sniperelite/main2.jpg rename to content/wfp/sniperelite/main2.jpg diff --git a/screens/sniperelite/main2.png b/content/wfp/sniperelite/main2.png similarity index 100% rename from screens/sniperelite/main2.png rename to content/wfp/sniperelite/main2.png diff --git a/content/wfp/sonicheroes/index.md b/content/wfp/sonicheroes/index.md new file mode 100644 index 0000000..3c6ad77 --- /dev/null +++ b/content/wfp/sonicheroes/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/sonicheroes +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/sonicheroes/SonicHeroes.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/SonicHeroes.WidescreenFix.zip?branch=master +icons: +- name: github + tooltip: Created by xan1242 + url: https://github.com/xan1242 +id: sonicheroes +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Sonic Heroes Widescreen Fix +screenshots: + background: https://i.imgur.com/dPuwR8h.jpg + images: + - https://i.imgur.com/xxiSk8c.png + - https://i.imgur.com/CfND7aY.jpeg + - https://i.imgur.com/vlQpx9C.jpg + - https://i.imgur.com/ffbpSZM.jpg + - https://i.imgur.com/fSBMETS.jpg + - https://i.imgur.com/QkeTuQ4.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/sonicheroes/logo.png b/content/wfp/sonicheroes/logo.png similarity index 100% rename from screens/sonicheroes/logo.png rename to content/wfp/sonicheroes/logo.png diff --git a/screens/sonicheroes/logo.svg b/content/wfp/sonicheroes/logo.svg similarity index 100% rename from screens/sonicheroes/logo.svg rename to content/wfp/sonicheroes/logo.svg diff --git a/screens/sonicheroes/main1.jpg b/content/wfp/sonicheroes/main1.jpg similarity index 100% rename from screens/sonicheroes/main1.jpg rename to content/wfp/sonicheroes/main1.jpg diff --git a/screens/sonicheroes/main1.png b/content/wfp/sonicheroes/main1.png similarity index 100% rename from screens/sonicheroes/main1.png rename to content/wfp/sonicheroes/main1.png diff --git a/screens/sonicheroes/main2.jpg b/content/wfp/sonicheroes/main2.jpg similarity index 100% rename from screens/sonicheroes/main2.jpg rename to content/wfp/sonicheroes/main2.jpg diff --git a/screens/sonicheroes/main2.png b/content/wfp/sonicheroes/main2.png similarity index 100% rename from screens/sonicheroes/main2.png rename to content/wfp/sonicheroes/main2.png diff --git a/content/wfp/spyro/index.md b/content/wfp/spyro/index.md new file mode 100644 index 0000000..142aa39 --- /dev/null +++ b/content/wfp/spyro/index.md @@ -0,0 +1,37 @@ +--- +after: main2.png +before: main1.png +color: rgba(87, 51, 22, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/spyro +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/spyro/Condemned.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/Condemned.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/996580/ +- name: github + tooltip: Created by xan1242 + url: https://github.com/xan1242 +id: spyro +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: other +title: Spyro Reignited Trilogy Widescreen Fix +screenshots: + background: https://spyrothedragon.com/content/dam/atvi/spyro/common/3-games/3in1-bg.png + images: + - https://i.imgur.com/bJkoZTW.jpeg + - https://i.imgur.com/N3HGWAA.jpeg + - https://i.imgur.com/SMA9KIZ.jpeg + - https://i.imgur.com/OdXy6aP.jpeg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/spyro/logo.svg b/content/wfp/spyro/logo.svg similarity index 100% rename from screens/spyro/logo.svg rename to content/wfp/spyro/logo.svg diff --git a/screens/spyro/main1.jpg b/content/wfp/spyro/main1.jpg similarity index 100% rename from screens/spyro/main1.jpg rename to content/wfp/spyro/main1.jpg diff --git a/screens/spyro/main1.png b/content/wfp/spyro/main1.png similarity index 100% rename from screens/spyro/main1.png rename to content/wfp/spyro/main1.png diff --git a/screens/spyro/main2.jpg b/content/wfp/spyro/main2.jpg similarity index 100% rename from screens/spyro/main2.jpg rename to content/wfp/spyro/main2.jpg diff --git a/screens/spyro/main2.png b/content/wfp/spyro/main2.png similarity index 100% rename from screens/spyro/main2.png rename to content/wfp/spyro/main2.png diff --git a/screens/spyro/stripe.jpg b/content/wfp/spyro/stripe.jpg similarity index 100% rename from screens/spyro/stripe.jpg rename to content/wfp/spyro/stripe.jpg diff --git a/content/wfp/srs/index.md b/content/wfp/srs/index.md new file mode 100644 index 0000000..59fa6c4 --- /dev/null +++ b/content/wfp/srs/index.md @@ -0,0 +1,35 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/srs +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/srs/StreetRacingSyndicate.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/StreetRacingSyndicate.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/292410/ +id: srs +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Street Racing Syndicate Widescreen Fix +screenshots: + background: https://i.imgur.com/blrjqrD.jpg + images: + - https://i.imgur.com/S5SceTL.jpg + - https://i.imgur.com/pKykBMM.png + - https://i.imgur.com/fkvQI0w.jpg + - https://i.imgur.com/HwL1ZUp.jpg + - https://i.imgur.com/CNd6qNI.jpg + - https://i.imgur.com/ih1DDJO.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/srs/logo.png b/content/wfp/srs/logo.png similarity index 100% rename from screens/srs/logo.png rename to content/wfp/srs/logo.png diff --git a/screens/srs/logo.svg b/content/wfp/srs/logo.svg similarity index 100% rename from screens/srs/logo.svg rename to content/wfp/srs/logo.svg diff --git a/screens/srs/main1.jpg b/content/wfp/srs/main1.jpg similarity index 100% rename from screens/srs/main1.jpg rename to content/wfp/srs/main1.jpg diff --git a/screens/srs/main1.png b/content/wfp/srs/main1.png similarity index 100% rename from screens/srs/main1.png rename to content/wfp/srs/main1.png diff --git a/screens/srs/main2.jpg b/content/wfp/srs/main2.jpg similarity index 100% rename from screens/srs/main2.jpg rename to content/wfp/srs/main2.jpg diff --git a/screens/srs/main2.png b/content/wfp/srs/main2.png similarity index 100% rename from screens/srs/main2.png rename to content/wfp/srs/main2.png diff --git a/content/wfp/stubbsthezombie/index.md b/content/wfp/stubbsthezombie/index.md new file mode 100644 index 0000000..2bb9e9c --- /dev/null +++ b/content/wfp/stubbsthezombie/index.md @@ -0,0 +1,33 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/stubbsthezombie +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/stubbsthezombie/StubbstheZombie.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/StubbstheZombie.WidescreenFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/7800/ +id: stubbsthezombie +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Stubbs the Zombie Widescreen Fix +screenshots: + background: https://i.imgur.com/VJsLHtz.jpg + images: + - https://i.imgur.com/iAWnohi.jpg + - https://i.imgur.com/HHWee6o.jpg + - https://i.imgur.com/WYUoM4B.jpg + - https://i.imgur.com/BbpBKjD.jpg + youtube: https://www.youtube.com/embed/dNFRNfmR8M0 +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/stubbsthezombie/logo.png b/content/wfp/stubbsthezombie/logo.png similarity index 100% rename from screens/stubbsthezombie/logo.png rename to content/wfp/stubbsthezombie/logo.png diff --git a/screens/stubbsthezombie/logo.svg b/content/wfp/stubbsthezombie/logo.svg similarity index 100% rename from screens/stubbsthezombie/logo.svg rename to content/wfp/stubbsthezombie/logo.svg diff --git a/screens/stubbsthezombie/main1.jpg b/content/wfp/stubbsthezombie/main1.jpg similarity index 100% rename from screens/stubbsthezombie/main1.jpg rename to content/wfp/stubbsthezombie/main1.jpg diff --git a/screens/stubbsthezombie/main1.png b/content/wfp/stubbsthezombie/main1.png similarity index 100% rename from screens/stubbsthezombie/main1.png rename to content/wfp/stubbsthezombie/main1.png diff --git a/screens/stubbsthezombie/main2.jpg b/content/wfp/stubbsthezombie/main2.jpg similarity index 100% rename from screens/stubbsthezombie/main2.jpg rename to content/wfp/stubbsthezombie/main2.jpg diff --git a/screens/stubbsthezombie/main2.png b/content/wfp/stubbsthezombie/main2.png similarity index 100% rename from screens/stubbsthezombie/main2.png rename to content/wfp/stubbsthezombie/main2.png diff --git a/content/wfp/thaw/index.md b/content/wfp/thaw/index.md new file mode 100644 index 0000000..9b249d1 --- /dev/null +++ b/content/wfp/thaw/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thaw +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thaw/TonyHawksAmericanWasteland.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksAmericanWasteland.WidescreenFix.zip?branch=master +icons: [] +id: thaw +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's American Wasteland Widescreen Fix +screenshots: + background: https://i.imgur.com/3mBoGfe.jpg + images: + - https://i.imgur.com/lqBLgLE.jpg + - https://i.imgur.com/jR7kNdy.jpg + - https://i.imgur.com/w2xMDsY.jpg + - https://i.imgur.com/123wWfZ.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/thaw/logo.png b/content/wfp/thaw/logo.png similarity index 100% rename from screens/thaw/logo.png rename to content/wfp/thaw/logo.png diff --git a/screens/thaw/logo.svg b/content/wfp/thaw/logo.svg similarity index 100% rename from screens/thaw/logo.svg rename to content/wfp/thaw/logo.svg diff --git a/screens/thaw/main1.jpg b/content/wfp/thaw/main1.jpg similarity index 100% rename from screens/thaw/main1.jpg rename to content/wfp/thaw/main1.jpg diff --git a/screens/thaw/main1.png b/content/wfp/thaw/main1.png similarity index 100% rename from screens/thaw/main1.png rename to content/wfp/thaw/main1.png diff --git a/screens/thaw/main2.jpg b/content/wfp/thaw/main2.jpg similarity index 100% rename from screens/thaw/main2.jpg rename to content/wfp/thaw/main2.jpg diff --git a/screens/thaw/main2.png b/content/wfp/thaw/main2.png similarity index 100% rename from screens/thaw/main2.png rename to content/wfp/thaw/main2.png diff --git a/content/wfp/thegodfather/index.md b/content/wfp/thegodfather/index.md new file mode 100644 index 0000000..f458110 --- /dev/null +++ b/content/wfp/thegodfather/index.md @@ -0,0 +1,46 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thegodfather +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thegodfather/TheGodfather.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TheGodfather.WidescreenFix.zip?branch=master +icons: +- name: link + tooltip: SilentPatch (movies crash fix) + url: https://github.com/CookiePLMonster/SilentPatchGF/releases/latest +- name: ea + tooltip: Official website + url: https://www.ea.com/games/godfather/the-godfather +id: thegodfather +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: The Godfather Widescreen Fix +screenshots: + background: https://media.contentapi.ea.com/content/dam/gin/images/2017/01/the-godfather-keyart.jpg + images: + - https://i.imgur.com/MkpG6fW.jpg + - https://i.imgur.com/wODB5Ay.jpg + - https://i.imgur.com/2msYCTg.jpg + - https://i.imgur.com/2CioEmd.jpg + - https://i.imgur.com/fv5AQzl.jpg + - https://i.imgur.com/o4N6tqV.jpg + - https://i.imgur.com/eI5R3Ka.jpg + - https://i.imgur.com/V5PmoFM.jpg + - https://i.imgur.com/cRXFKDt.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Download [SilentPatchGF](https://github.com/CookiePLMonster/SilentPatchGF#readme) and extract to the game directory. +3. Check the download link below for all available features. + +Notes: + +* SilentPatchGF can also be [downloaded by modupdater](https://gfycat.com/NeglectedHonoredGrasshopper) after the game is launched. diff --git a/screens/thegodfather/logo.png b/content/wfp/thegodfather/logo.png similarity index 100% rename from screens/thegodfather/logo.png rename to content/wfp/thegodfather/logo.png diff --git a/screens/thegodfather/logo.svg b/content/wfp/thegodfather/logo.svg similarity index 100% rename from screens/thegodfather/logo.svg rename to content/wfp/thegodfather/logo.svg diff --git a/screens/thegodfather/main1.jpg b/content/wfp/thegodfather/main1.jpg similarity index 100% rename from screens/thegodfather/main1.jpg rename to content/wfp/thegodfather/main1.jpg diff --git a/screens/thegodfather/main1.png b/content/wfp/thegodfather/main1.png similarity index 100% rename from screens/thegodfather/main1.png rename to content/wfp/thegodfather/main1.png diff --git a/screens/thegodfather/main2.jpg b/content/wfp/thegodfather/main2.jpg similarity index 100% rename from screens/thegodfather/main2.jpg rename to content/wfp/thegodfather/main2.jpg diff --git a/screens/thegodfather/main2.png b/content/wfp/thegodfather/main2.png similarity index 100% rename from screens/thegodfather/main2.png rename to content/wfp/thegodfather/main2.png diff --git a/content/wfp/thematrixpathofneo/index.md b/content/wfp/thematrixpathofneo/index.md new file mode 100644 index 0000000..a468094 --- /dev/null +++ b/content/wfp/thematrixpathofneo/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thematrixpathofneo +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thematrixpathofneo/TheMatrixPathOfNeo.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TheMatrixPathOfNeo.WidescreenFix.zip?branch=master +icons: [] +id: thematrixpathofneo +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: 'The Matrix: Path of Neo Widescreen Fix' +screenshots: + background: https://i.imgur.com/zRqtN12.jpg + images: + - https://i.imgur.com/DBiZaWD.jpg + - https://i.imgur.com/3dhjwd4.jpg + - https://i.imgur.com/ovx1veS.jpg + - https://i.imgur.com/OtzWlr6.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/thematrixpathofneo/logo.png b/content/wfp/thematrixpathofneo/logo.png similarity index 100% rename from screens/thematrixpathofneo/logo.png rename to content/wfp/thematrixpathofneo/logo.png diff --git a/screens/thematrixpathofneo/logo.svg b/content/wfp/thematrixpathofneo/logo.svg similarity index 100% rename from screens/thematrixpathofneo/logo.svg rename to content/wfp/thematrixpathofneo/logo.svg diff --git a/screens/thematrixpathofneo/main1.jpg b/content/wfp/thematrixpathofneo/main1.jpg similarity index 100% rename from screens/thematrixpathofneo/main1.jpg rename to content/wfp/thematrixpathofneo/main1.jpg diff --git a/screens/thematrixpathofneo/main1.png b/content/wfp/thematrixpathofneo/main1.png similarity index 100% rename from screens/thematrixpathofneo/main1.png rename to content/wfp/thematrixpathofneo/main1.png diff --git a/screens/thematrixpathofneo/main2.jpg b/content/wfp/thematrixpathofneo/main2.jpg similarity index 100% rename from screens/thematrixpathofneo/main2.jpg rename to content/wfp/thematrixpathofneo/main2.jpg diff --git a/screens/thematrixpathofneo/main2.png b/content/wfp/thematrixpathofneo/main2.png similarity index 100% rename from screens/thematrixpathofneo/main2.png rename to content/wfp/thematrixpathofneo/main2.png diff --git a/content/wfp/thesaboteur/index.md b/content/wfp/thesaboteur/index.md new file mode 100644 index 0000000..30dd9fe --- /dev/null +++ b/content/wfp/thesaboteur/index.md @@ -0,0 +1,32 @@ +--- +after: main2.png +before: main1.png +color: rgba(26, 41, 51, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thesaboteur +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thesaboteur/TheSaboteur.FusionFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TheSaboteur.FusionFix.zip?branch=master +icons: +- name: steam + tooltip: Works with Steam version + url: https://store.steampowered.com/app/24880/ +id: thesaboteur +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: '' + version: Any +tag: mods +title: The Saboteur Fusion Fix +screenshots: + background: https://i.imgur.com/xOzKkHU.jpeg + images: [] + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +* FOV Fix (Hor+ for all aspect ratios) diff --git a/screens/thesaboteur/logo.svg b/content/wfp/thesaboteur/logo.svg similarity index 100% rename from screens/thesaboteur/logo.svg rename to content/wfp/thesaboteur/logo.svg diff --git a/screens/thesaboteur/main1.jpg b/content/wfp/thesaboteur/main1.jpg similarity index 100% rename from screens/thesaboteur/main1.jpg rename to content/wfp/thesaboteur/main1.jpg diff --git a/screens/thesaboteur/main1.png b/content/wfp/thesaboteur/main1.png similarity index 100% rename from screens/thesaboteur/main1.png rename to content/wfp/thesaboteur/main1.png diff --git a/screens/thesaboteur/main2.jpg b/content/wfp/thesaboteur/main2.jpg similarity index 100% rename from screens/thesaboteur/main2.jpg rename to content/wfp/thesaboteur/main2.jpg diff --git a/screens/thesaboteur/main2.png b/content/wfp/thesaboteur/main2.png similarity index 100% rename from screens/thesaboteur/main2.png rename to content/wfp/thesaboteur/main2.png diff --git a/screens/thesaboteur/main3.jpg b/content/wfp/thesaboteur/main3.jpg similarity index 100% rename from screens/thesaboteur/main3.jpg rename to content/wfp/thesaboteur/main3.jpg diff --git a/screens/thesaboteur/main3.png b/content/wfp/thesaboteur/main3.png similarity index 100% rename from screens/thesaboteur/main3.png rename to content/wfp/thesaboteur/main3.png diff --git a/screens/thesaboteur/stripe.jpg b/content/wfp/thesaboteur/stripe.jpg similarity index 100% rename from screens/thesaboteur/stripe.jpg rename to content/wfp/thesaboteur/stripe.jpg diff --git a/content/wfp/thesuffering/index.md b/content/wfp/thesuffering/index.md new file mode 100644 index 0000000..eb75080 --- /dev/null +++ b/content/wfp/thesuffering/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thesuffering +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thesuffering/TheSuffering.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TheSuffering.WidescreenFix.zip?branch=master +icons: +- name: gog + tooltip: 'Works with GOG version
(The Suffering: Ties That Bind)' + url: https://www.gog.com/game/the_suffering_ties_that_bind +- name: gog + tooltip: Works with GOG version
(The Suffering) + url: https://www.gog.com/game/the_suffering +id: thesuffering +logo: logo.png +support: + tooltip: '' + version: Any +tag: other +title: The Suffering Widescreen Fix +screenshots: + background: https://i.imgur.com/H77SXLf.jpg + images: + - https://i.imgur.com/S9GpAkk.jpg + - https://i.imgur.com/W8Oob9e.jpg + - https://i.imgur.com/SPtrOOP.jpg + - https://i.imgur.com/RQcdf4Z.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/thesuffering/logo.png b/content/wfp/thesuffering/logo.png similarity index 100% rename from screens/thesuffering/logo.png rename to content/wfp/thesuffering/logo.png diff --git a/screens/thesuffering/main1.jpg b/content/wfp/thesuffering/main1.jpg similarity index 100% rename from screens/thesuffering/main1.jpg rename to content/wfp/thesuffering/main1.jpg diff --git a/screens/thesuffering/main1.png b/content/wfp/thesuffering/main1.png similarity index 100% rename from screens/thesuffering/main1.png rename to content/wfp/thesuffering/main1.png diff --git a/screens/thesuffering/main2.jpg b/content/wfp/thesuffering/main2.jpg similarity index 100% rename from screens/thesuffering/main2.jpg rename to content/wfp/thesuffering/main2.jpg diff --git a/screens/thesuffering/main2.png b/content/wfp/thesuffering/main2.png similarity index 100% rename from screens/thesuffering/main2.png rename to content/wfp/thesuffering/main2.png diff --git a/content/wfp/thewarriors/index.md b/content/wfp/thewarriors/index.md new file mode 100644 index 0000000..acbfa38 --- /dev/null +++ b/content/wfp/thewarriors/index.md @@ -0,0 +1,39 @@ +--- +after: main2.png +before: main1.png +color: rgba(15, 34, 61, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thewarriors +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thewarriors/TheWarriors.PPSSPP.FusionMod.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TheWarriors.PPSSPP.FusionMod.zip?branch=master +icons: +- name: ppsspp + tooltip: Works with PPSSPP + url: https://www.ppsspp.org/ +- name: rockstar + tooltip: Official website + url: https://www.rockstargames.com/games/thewarriors/ +id: thewarriors +logo: logo.svg +stripe: stripe.jpg +support: + tooltip: Tested with PPSSPP build v1.12.3-410-gb352f6107 + version: Any (tested on ULUS-10213) +tag: mods +title: The Warriors Fusion Mod [PPSSPP] +screenshots: + background: https://media-rockstargames-com.akamaized.net/rockstargames-newsite/img/global/downloads/wallpapers/games/thewarriors_poster_1600x1200.jpg + images: + - https://i.imgur.com/MX8DYHv.jpeg + youtube: '' +--- + +1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. +2. Check the download link below for all available features. +3. Launch the game. + +* Skip Intro. +* Dual Analog Patch, 60 fps. +* Adds an option to fix incorrect aspect ratio. diff --git a/screens/thewarriors/logo.svg b/content/wfp/thewarriors/logo.svg similarity index 100% rename from screens/thewarriors/logo.svg rename to content/wfp/thewarriors/logo.svg diff --git a/screens/thewarriors/main1.jpg b/content/wfp/thewarriors/main1.jpg similarity index 100% rename from screens/thewarriors/main1.jpg rename to content/wfp/thewarriors/main1.jpg diff --git a/screens/thewarriors/main1.png b/content/wfp/thewarriors/main1.png similarity index 100% rename from screens/thewarriors/main1.png rename to content/wfp/thewarriors/main1.png diff --git a/screens/thewarriors/main2.jpg b/content/wfp/thewarriors/main2.jpg similarity index 100% rename from screens/thewarriors/main2.jpg rename to content/wfp/thewarriors/main2.jpg diff --git a/screens/thewarriors/main2.png b/content/wfp/thewarriors/main2.png similarity index 100% rename from screens/thewarriors/main2.png rename to content/wfp/thewarriors/main2.png diff --git a/screens/thewarriors/stripe.jpg b/content/wfp/thewarriors/stripe.jpg similarity index 100% rename from screens/thewarriors/stripe.jpg rename to content/wfp/thewarriors/stripe.jpg diff --git a/content/wfp/thps2/index.md b/content/wfp/thps2/index.md new file mode 100644 index 0000000..f3493de --- /dev/null +++ b/content/wfp/thps2/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thps2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thps2/TonyHawksProSkater2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksProSkater2.WidescreenFix.zip?branch=master +icons: [] +id: thps2 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's Pro Skater 2 Widescreen Fix +screenshots: + background: https://i.imgur.com/7ymaT52.jpg + images: + - https://i.imgur.com/fvdKFM7.png + - https://i.imgur.com/uxH2iia.jpg + - https://i.imgur.com/MBEYeZu.png + - https://i.imgur.com/7LMdZvw.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Use [Tony Hawk's� Pro Skater� 1 + 2](https://store.steampowered.com/app/2395210/Tony_Hawks_Pro_Skater_1__2/) instead. diff --git a/screens/thps2/logo.png b/content/wfp/thps2/logo.png similarity index 100% rename from screens/thps2/logo.png rename to content/wfp/thps2/logo.png diff --git a/screens/thps2/logo.svg b/content/wfp/thps2/logo.svg similarity index 100% rename from screens/thps2/logo.svg rename to content/wfp/thps2/logo.svg diff --git a/screens/thps2/main1.jpg b/content/wfp/thps2/main1.jpg similarity index 100% rename from screens/thps2/main1.jpg rename to content/wfp/thps2/main1.jpg diff --git a/screens/thps2/main1.png b/content/wfp/thps2/main1.png similarity index 100% rename from screens/thps2/main1.png rename to content/wfp/thps2/main1.png diff --git a/screens/thps2/main2.jpg b/content/wfp/thps2/main2.jpg similarity index 100% rename from screens/thps2/main2.jpg rename to content/wfp/thps2/main2.jpg diff --git a/screens/thps2/main2.png b/content/wfp/thps2/main2.png similarity index 100% rename from screens/thps2/main2.png rename to content/wfp/thps2/main2.png diff --git a/content/wfp/thps3/index.md b/content/wfp/thps3/index.md new file mode 100644 index 0000000..269eabe --- /dev/null +++ b/content/wfp/thps3/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thps3 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thps3/TonyHawksProSkater3.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksProSkater3.WidescreenFix.zip?branch=master +icons: [] +id: thps3 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's Pro Skater 3 Widescreen Fix +screenshots: + background: https://i.imgur.com/d3zJcii.jpg + images: + - https://i.imgur.com/60ptBPL.png + - https://i.imgur.com/kjQifyx.jpg + - https://i.imgur.com/94Quc8d.jpg + - https://i.imgur.com/s5OncyP.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Use [Tony Hawk's� Pro Skater� 3 + 4](https://store.steampowered.com/app/2545710/Tony_Hawks_Pro_Skater_3__4/) instead. diff --git a/screens/thps3/logo.png b/content/wfp/thps3/logo.png similarity index 100% rename from screens/thps3/logo.png rename to content/wfp/thps3/logo.png diff --git a/screens/thps3/logo.svg b/content/wfp/thps3/logo.svg similarity index 100% rename from screens/thps3/logo.svg rename to content/wfp/thps3/logo.svg diff --git a/screens/thps3/main1.jpg b/content/wfp/thps3/main1.jpg similarity index 100% rename from screens/thps3/main1.jpg rename to content/wfp/thps3/main1.jpg diff --git a/screens/thps3/main1.png b/content/wfp/thps3/main1.png similarity index 100% rename from screens/thps3/main1.png rename to content/wfp/thps3/main1.png diff --git a/screens/thps3/main2.jpg b/content/wfp/thps3/main2.jpg similarity index 100% rename from screens/thps3/main2.jpg rename to content/wfp/thps3/main2.jpg diff --git a/screens/thps3/main2.png b/content/wfp/thps3/main2.png similarity index 100% rename from screens/thps3/main2.png rename to content/wfp/thps3/main2.png diff --git a/content/wfp/thps4/index.md b/content/wfp/thps4/index.md new file mode 100644 index 0000000..10a2213 --- /dev/null +++ b/content/wfp/thps4/index.md @@ -0,0 +1,34 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thps4 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thps4/TonyHawksProSkater4.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksProSkater4.WidescreenFix.zip?branch=master +icons: [] +id: thps4 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's Pro Skater 4 Widescreen Fix +screenshots: + background: https://i.imgur.com/wXvoK9m.jpg + images: + - https://i.imgur.com/gHojsOV.jpg + - https://i.imgur.com/vSQYNK7.jpg + - https://i.imgur.com/8Xqj4rP.jpg + - https://i.imgur.com/Ashp0ab.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Use [Tony Hawk's� Pro Skater� 3 + 4](https://store.steampowered.com/app/2545710/Tony_Hawks_Pro_Skater_3__4/) instead. diff --git a/screens/thps4/logo.png b/content/wfp/thps4/logo.png similarity index 100% rename from screens/thps4/logo.png rename to content/wfp/thps4/logo.png diff --git a/screens/thps4/logo.svg b/content/wfp/thps4/logo.svg similarity index 100% rename from screens/thps4/logo.svg rename to content/wfp/thps4/logo.svg diff --git a/screens/thps4/main1.jpg b/content/wfp/thps4/main1.jpg similarity index 100% rename from screens/thps4/main1.jpg rename to content/wfp/thps4/main1.jpg diff --git a/screens/thps4/main1.png b/content/wfp/thps4/main1.png similarity index 100% rename from screens/thps4/main1.png rename to content/wfp/thps4/main1.png diff --git a/screens/thps4/main2.jpg b/content/wfp/thps4/main2.jpg similarity index 100% rename from screens/thps4/main2.jpg rename to content/wfp/thps4/main2.jpg diff --git a/screens/thps4/main2.png b/content/wfp/thps4/main2.png similarity index 100% rename from screens/thps4/main2.png rename to content/wfp/thps4/main2.png diff --git a/content/wfp/thug/index.md b/content/wfp/thug/index.md new file mode 100644 index 0000000..7b56313 --- /dev/null +++ b/content/wfp/thug/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thug +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thug/TonyHawksUnderground.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksUnderground.WidescreenFix.zip?branch=master +icons: [] +id: thug +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's Underground Widescreen Fix +screenshots: + background: https://i.imgur.com/P8ljKtL.jpg + images: + - https://i.imgur.com/pV9DA4o.jpg + - https://i.imgur.com/RSoxVbl.jpg + - https://i.imgur.com/qYxjbhh.jpg + - https://i.imgur.com/vA5UMSm.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/thug/logo.png b/content/wfp/thug/logo.png similarity index 100% rename from screens/thug/logo.png rename to content/wfp/thug/logo.png diff --git a/screens/thug/logo.svg b/content/wfp/thug/logo.svg similarity index 100% rename from screens/thug/logo.svg rename to content/wfp/thug/logo.svg diff --git a/screens/thug/main1.jpg b/content/wfp/thug/main1.jpg similarity index 100% rename from screens/thug/main1.jpg rename to content/wfp/thug/main1.jpg diff --git a/screens/thug/main1.png b/content/wfp/thug/main1.png similarity index 100% rename from screens/thug/main1.png rename to content/wfp/thug/main1.png diff --git a/screens/thug/main2.jpg b/content/wfp/thug/main2.jpg similarity index 100% rename from screens/thug/main2.jpg rename to content/wfp/thug/main2.jpg diff --git a/screens/thug/main2.png b/content/wfp/thug/main2.png similarity index 100% rename from screens/thug/main2.png rename to content/wfp/thug/main2.png diff --git a/content/wfp/thug2/index.md b/content/wfp/thug2/index.md new file mode 100644 index 0000000..a3454fd --- /dev/null +++ b/content/wfp/thug2/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/thug2 +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/thug2/TonyHawksUnderground2.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TonyHawksUnderground2.WidescreenFix.zip?branch=master +icons: [] +id: thug2 +logo: logo.svg +support: + tooltip: '' + version: Any +tag: tonyhawk +title: Tony Hawk's Underground 2 Widescreen Fix +screenshots: + background: https://i.imgur.com/pb3bMe8.jpg + images: + - https://i.imgur.com/FqXJma3.jpg + - https://i.imgur.com/p9xlJKC.jpg + - https://i.imgur.com/IcTddpE.jpg + - https://i.imgur.com/C2Jfgmt.jpg + youtube: '' +--- + +1. Download and extract the archive to the 'Game' folder, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/thug2/logo.png b/content/wfp/thug2/logo.png similarity index 100% rename from screens/thug2/logo.png rename to content/wfp/thug2/logo.png diff --git a/screens/thug2/logo.svg b/content/wfp/thug2/logo.svg similarity index 100% rename from screens/thug2/logo.svg rename to content/wfp/thug2/logo.svg diff --git a/screens/thug2/main1.jpg b/content/wfp/thug2/main1.jpg similarity index 100% rename from screens/thug2/main1.jpg rename to content/wfp/thug2/main1.jpg diff --git a/screens/thug2/main1.png b/content/wfp/thug2/main1.png similarity index 100% rename from screens/thug2/main1.png rename to content/wfp/thug2/main1.png diff --git a/screens/thug2/main2.jpg b/content/wfp/thug2/main2.jpg similarity index 100% rename from screens/thug2/main2.jpg rename to content/wfp/thug2/main2.jpg diff --git a/screens/thug2/main2.png b/content/wfp/thug2/main2.png similarity index 100% rename from screens/thug2/main2.png rename to content/wfp/thug2/main2.png diff --git a/content/wfp/tod/index.md b/content/wfp/tod/index.md new file mode 100644 index 0000000..54d2ead --- /dev/null +++ b/content/wfp/tod/index.md @@ -0,0 +1,36 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/tod +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/tod/TotalOverdose.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TotalOverdose.WidescreenFix.zip?branch=master +icons: +- name: gog + tooltip: Works with GOG version + url: https://www.gog.com/game/total_overdose_a_gunslingers_tale_in_mexico +- name: earth + tooltip: Official website + url: http://www.deadlinegames.com/games/total-overdose/ +id: tod +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Total Overdose Widescreen Fix +screenshots: + background: https://i.imgur.com/oZ1BFU6.jpg + images: + - https://i.imgur.com/7yA1MjH.jpg + - https://i.imgur.com/IyieJh7.jpg + - https://i.imgur.com/zvqHZ7b.jpg + - https://i.imgur.com/IBb9rBs.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/tod/logo.png b/content/wfp/tod/logo.png similarity index 100% rename from screens/tod/logo.png rename to content/wfp/tod/logo.png diff --git a/screens/tod/logo.svg b/content/wfp/tod/logo.svg similarity index 100% rename from screens/tod/logo.svg rename to content/wfp/tod/logo.svg diff --git a/screens/tod/main1.jpg b/content/wfp/tod/main1.jpg similarity index 100% rename from screens/tod/main1.jpg rename to content/wfp/tod/main1.jpg diff --git a/screens/tod/main1.png b/content/wfp/tod/main1.png similarity index 100% rename from screens/tod/main1.png rename to content/wfp/tod/main1.png diff --git a/screens/tod/main2.jpg b/content/wfp/tod/main2.jpg similarity index 100% rename from screens/tod/main2.jpg rename to content/wfp/tod/main2.jpg diff --git a/screens/tod/main2.png b/content/wfp/tod/main2.png similarity index 100% rename from screens/tod/main2.png rename to content/wfp/tod/main2.png diff --git a/content/wfp/truecrimenyc/index.md b/content/wfp/truecrimenyc/index.md new file mode 100644 index 0000000..e4be393 --- /dev/null +++ b/content/wfp/truecrimenyc/index.md @@ -0,0 +1,42 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/truecrimenyc +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/truecrimenyc/TrueCrimeNewYorkCity.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TrueCrimeNewYorkCity.WidescreenFix.zip?branch=master +icons: +- name: pcsx2 + tooltip: Works with PCSX2 Fork With Plugins + url: https://github.com/ASI-Factory/PCSX2-Fork-With-Plugins/releases/tag/latest +id: truecrimenyc +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: True Crime New York City Widescreen Fix[+PCSX2F] +screenshots: + background: https://i.imgur.com/DoXeZaa.jpg + images: + - https://i.imgur.com/ydHgeyQ.jpg + - https://i.imgur.com/v0z6m7h.jpg + - https://i.imgur.com/hk7RsOJ.jpg + - https://i.imgur.com/svcXWEo.jpg + - https://i.imgur.com/9LuB8MO.jpg + - https://i.imgur.com/e7OKwWk.jpg + - https://i.imgur.com/07g9gnp.jpg + - https://i.imgur.com/W9Wg82W.jpg + - https://i.imgur.com/RDTkLVa.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. + +Notes: + +* Added few options to customize fps, game speed and mouse movement speed (untested, high framerate causes in-game issues). diff --git a/screens/truecrimenyc/logo.png b/content/wfp/truecrimenyc/logo.png similarity index 100% rename from screens/truecrimenyc/logo.png rename to content/wfp/truecrimenyc/logo.png diff --git a/screens/truecrimenyc/logo.svg b/content/wfp/truecrimenyc/logo.svg similarity index 100% rename from screens/truecrimenyc/logo.svg rename to content/wfp/truecrimenyc/logo.svg diff --git a/screens/truecrimenyc/main1.jpg b/content/wfp/truecrimenyc/main1.jpg similarity index 100% rename from screens/truecrimenyc/main1.jpg rename to content/wfp/truecrimenyc/main1.jpg diff --git a/screens/truecrimenyc/main1.png b/content/wfp/truecrimenyc/main1.png similarity index 100% rename from screens/truecrimenyc/main1.png rename to content/wfp/truecrimenyc/main1.png diff --git a/screens/truecrimenyc/main2.jpg b/content/wfp/truecrimenyc/main2.jpg similarity index 100% rename from screens/truecrimenyc/main2.jpg rename to content/wfp/truecrimenyc/main2.jpg diff --git a/screens/truecrimenyc/main2.png b/content/wfp/truecrimenyc/main2.png similarity index 100% rename from screens/truecrimenyc/main2.png rename to content/wfp/truecrimenyc/main2.png diff --git a/content/wfp/truecrimesola/index.md b/content/wfp/truecrimesola/index.md new file mode 100644 index 0000000..9fd117c --- /dev/null +++ b/content/wfp/truecrimesola/index.md @@ -0,0 +1,30 @@ +--- +after: main2.png +before: main1.png +color: rgba(0, 0, 0, 0) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/truecrimesola +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/truecrimesola/TrueCrimeStreetsofLA.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/TrueCrimeStreetsofLA.WidescreenFix.zip?branch=master +icons: [] +id: truecrimesola +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: True Crime Streets of LA Widescreen Fix +screenshots: + background: https://i.imgur.com/kw628IE.jpg + images: + - https://i.imgur.com/zCvVUsj.jpg + - https://i.imgur.com/oMjjI71.jpg + - https://i.imgur.com/8thaX4h.jpg + - https://i.imgur.com/h4YSD1v.jpg + youtube: https://www.youtube.com/embed/6sV3YxV6qJU +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/truecrimesola/logo.png b/content/wfp/truecrimesola/logo.png similarity index 100% rename from screens/truecrimesola/logo.png rename to content/wfp/truecrimesola/logo.png diff --git a/screens/truecrimesola/logo.svg b/content/wfp/truecrimesola/logo.svg similarity index 100% rename from screens/truecrimesola/logo.svg rename to content/wfp/truecrimesola/logo.svg diff --git a/screens/truecrimesola/logo2.svg b/content/wfp/truecrimesola/logo2.svg similarity index 100% rename from screens/truecrimesola/logo2.svg rename to content/wfp/truecrimesola/logo2.svg diff --git a/screens/truecrimesola/main1.jpg b/content/wfp/truecrimesola/main1.jpg similarity index 100% rename from screens/truecrimesola/main1.jpg rename to content/wfp/truecrimesola/main1.jpg diff --git a/screens/truecrimesola/main1.png b/content/wfp/truecrimesola/main1.png similarity index 100% rename from screens/truecrimesola/main1.png rename to content/wfp/truecrimesola/main1.png diff --git a/screens/truecrimesola/main2.jpg b/content/wfp/truecrimesola/main2.jpg similarity index 100% rename from screens/truecrimesola/main2.jpg rename to content/wfp/truecrimesola/main2.jpg diff --git a/screens/truecrimesola/main2.png b/content/wfp/truecrimesola/main2.png similarity index 100% rename from screens/truecrimesola/main2.png rename to content/wfp/truecrimesola/main2.png diff --git a/content/wfp/usm/index.md b/content/wfp/usm/index.md new file mode 100644 index 0000000..8f1896e --- /dev/null +++ b/content/wfp/usm/index.md @@ -0,0 +1,31 @@ +--- +after: main2.png +before: main1.png +color: rgba(232, 81, 40, 1) +download: https://github.com/ThirteenAG/WidescreenFixesPack/releases/tag/usm +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/WidescreenFixesPack/releases/download/usm/UltimateSpiderMan.WidescreenFix.zip +- name: Developer build (untested) + url: https://ci.appveyor.com/api/projects/ThirteenAG/widescreenfixespack/artifacts/UltimateSpiderMan.WidescreenFix.zip?branch=master +icons: [] +id: usm +logo: logo.svg +support: + tooltip: '' + version: Any +tag: other +title: Ultimate Spider-Man Widescreen Fix +screenshots: + background: https://i.imgur.com/mzVTp09.jpg + images: + - https://i.imgur.com/o9Hlvc8.jpg + - https://i.imgur.com/zKSf8A6.jpg + - https://i.imgur.com/hRtuPYi.jpg + - https://i.imgur.com/1WlOVFE.jpg + - https://i.imgur.com/X53DKHU.jpg + youtube: '' +--- + +1. Download and extract the archive to the game directory, where the exe is located. +2. Check the download link below for all available features. diff --git a/screens/usm/logo.png b/content/wfp/usm/logo.png similarity index 100% rename from screens/usm/logo.png rename to content/wfp/usm/logo.png diff --git a/screens/usm/logo.svg b/content/wfp/usm/logo.svg similarity index 100% rename from screens/usm/logo.svg rename to content/wfp/usm/logo.svg diff --git a/screens/usm/main1.jpg b/content/wfp/usm/main1.jpg similarity index 100% rename from screens/usm/main1.jpg rename to content/wfp/usm/main1.jpg diff --git a/screens/usm/main1.png b/content/wfp/usm/main1.png similarity index 100% rename from screens/usm/main1.png rename to content/wfp/usm/main1.png diff --git a/screens/usm/main2.jpg b/content/wfp/usm/main2.jpg similarity index 100% rename from screens/usm/main2.jpg rename to content/wfp/usm/main2.jpg diff --git a/screens/usm/main2.png b/content/wfp/usm/main2.png similarity index 100% rename from screens/usm/main2.png rename to content/wfp/usm/main2.png diff --git a/content/wfp/xrd/index.md b/content/wfp/xrd/index.md new file mode 100644 index 0000000..6b5dd33 --- /dev/null +++ b/content/wfp/xrd/index.md @@ -0,0 +1,37 @@ +--- +after: main2.png +before: main2.png +color: rgba(0, 0, 0, 1) +download: https://github.com/ThirteenAG/XboxRainDroplets#readme +downloads: +- name: Direct Link + url: https://github.com/ThirteenAG/XboxRainDroplets +icons: [] +id: xrd +logo: 'logo.svg' +stripe: stripe.jpg +support: + tooltip: '' + version: Enhanced implementation of xbox rain droplets from SkyGFX for other games. + Various ini settings allow to customize the appearance and can be edited while + in game. +tag: mods +title: Xbox Rain Droplets +screenshots: + background: https://camo.githubusercontent.com/e09fde71c64f747854ac06b4cbed178754560a7422ceeb031565639ad900ca44/68747470733a2f2f692e696d6775722e636f6d2f4d7951417737662e706e67 + images: + - https://i.imgur.com/GynWHbN.jpeg + - https://i.imgur.com/UbCTod6.jpeg + - https://i.imgur.com/bMGzBbY.jpeg + - https://i.imgur.com/LxCMcSG.jpeg + - https://i.imgur.com/81qEQEk.jpeg + - https://i.imgur.com/ZZVAMmz.jpeg + - https://i.imgur.com/d7MTkw6.jpeg + - https://i.imgur.com/CQILSYl.jpeg + - https://i.imgur.com/fb6aubD.jpeg + - https://i.imgur.com/5rFKPmS.jpeg + - https://i.imgur.com/5YYcss4.jpeg + youtube: https://www.youtube.com/embed/IiEXixRWUMU +--- + + diff --git a/screens/xrd/logo.svg b/content/wfp/xrd/logo.svg similarity index 100% rename from screens/xrd/logo.svg rename to content/wfp/xrd/logo.svg diff --git a/screens/xrd/main2.jpg b/content/wfp/xrd/main2.jpg similarity index 100% rename from screens/xrd/main2.jpg rename to content/wfp/xrd/main2.jpg diff --git a/screens/xrd/main2.png b/content/wfp/xrd/main2.png similarity index 100% rename from screens/xrd/main2.png rename to content/wfp/xrd/main2.png diff --git a/screens/xrd/stripe.jpg b/content/wfp/xrd/stripe.jpg similarity index 100% rename from screens/xrd/stripe.jpg rename to content/wfp/xrd/stripe.jpg diff --git a/css/crt.css b/css/crt.css deleted file mode 100644 index c853cad..0000000 --- a/css/crt.css +++ /dev/null @@ -1,198 +0,0 @@ -/* - https://codepen.io/lbebber/pen/XJRdrV - CSS CRT screen effect - A Pen By Lucas Bebber -*/ - -@keyframes flicker { - 0% { - opacity: 0.96164; - } - 5% { - opacity: 0.70882; - } - 10% { - opacity: 0.16919; - } - 15% { - opacity: 0.80093; - } - 20% { - opacity: 0.13297; - } - 25% { - opacity: 0.59235; - } - 30% { - opacity: 0.02806; - } - 35% { - opacity: 0.20636; - } - 40% { - opacity: 0.52937; - } - 45% { - opacity: 0.48143; - } - 50% { - opacity: 0.51993; - } - 55% { - opacity: 0.14268; - } - 60% { - opacity: 0.68884; - } - 65% { - opacity: 0.06551; - } - 70% { - opacity: 0.43865; - } - 75% { - opacity: 0.37498; - } - 80% { - opacity: 0.23408; - } - 85% { - opacity: 0.99895; - } - 90% { - opacity: 0.99303; - } - 95% { - opacity: 0.89599; - } - 100% { - opacity: 0.54639; - } -} - -.crt-container::after { - content: " "; - display: block; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: rgba(18, 16, 16, 0.1); - opacity: 0; - z-index: 2; - pointer-events: none; -} -.crt-container::before { - content: " "; - display: block; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.06), rgba(0, 255, 0, 0.02), rgba(0, 0, 255, 0.06)); - z-index: 2; - background-size: 100% 2px, 3px 100%; - pointer-events: none; -} - -.crt-container::after { - animation: flicker 0.15s infinite; -} - -@keyframes turn-on { - 0% { - transform: scale(1, 0.8) translate3d(0, 0, 0); - -webkit-filter: brightness(30); - filter: brightness(30); - opacity: 1; - } - 3.5% { - transform: scale(1, 0.8) translate3d(0, 100%, 0); - } - 3.6% { - transform: scale(1, 0.8) translate3d(0, -100%, 0); - opacity: 1; - } - 9% { - transform: scale(1, 0.6) translate3d(0, 100%, 0); - -webkit-filter: brightness(30); - filter: brightness(30); - opacity: 0; - } - 11% { - transform: scale(1, 1) translate3d(0, 0, 0); - -webkit-filter: contrast(0) brightness(0); - filter: contrast(0) brightness(0); - opacity: 0; - } - 100% { - transform: scale(1, 1) translate3d(0, 0, 0); - -webkit-filter: contrast(1) brightness(1.2) saturate(1.3); - filter: contrast(1) brightness(1.2) saturate(1.3); - opacity: 1; - } -} -@keyframes turn-off { - 0% { - transform: scale(1, 1) translate3d(0, 0, 0); - -webkit-filter: brightness(1); - filter: brightness(1); - opacity: 1; - } - 60% { - transform: scale(1, 0.001) translate3d(0, 0, 0); - -webkit-filter: brightness(10); - filter: brightness(10); - } - 100% { - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - transform: scale(0, 0.0001) translate3d(0, 0, 0); - -webkit-filter: brightness(50); - filter: brightness(50); - } -} - -/* -.crt-container > .screen { - animation: turn-off 0.55s cubic-bezier(0.23, 1, 0.32, 1); - animation-fill-mode: forwards; -} -*/ - -.crt-container > .screen { - animation: turn-on 4s linear; - animation-fill-mode: forwards; -} - -@keyframes crt-overlay-anim { - 0% { - visibility: hidden; - } - 20% { - visibility: hidden; - } - 21% { - visibility: visible; - } - 100% { - visibility: hidden; - } -} -.crt-overlay { - color: #ff0000; - position: absolute; - top: 20px; - left: 20px; - font-size: 40px; - /*visibility: hidden;*/ - pointer-events: none; -} - -/* -.crt-container .crt-overlay { - animation: crt-overlay-anim 5s linear; - animation-fill-mode: forwards; -} -*/ diff --git a/css/icomoon/Read Me.txt b/css/icomoon/Read Me.txt deleted file mode 100644 index 8491652..0000000 --- a/css/icomoon/Read Me.txt +++ /dev/null @@ -1,7 +0,0 @@ -Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. - -To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts - -You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. - -You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/css/icomoon/demo-files/demo.css b/css/icomoon/demo-files/demo.css deleted file mode 100644 index 5ee8b18..0000000 --- a/css/icomoon/demo-files/demo.css +++ /dev/null @@ -1,155 +0,0 @@ -body { - padding: 0; - margin: 0; - font-family: sans-serif; - font-size: 1em; - line-height: 1.5; - color: #555; - background: #fff; -} -h1 { - font-size: 1.5em; - font-weight: normal; -} -small { - font-size: .66666667em; -} -a { - color: #e74c3c; - text-decoration: none; -} -a:hover, a:focus { - box-shadow: 0 1px #e74c3c; -} -.bshadow0, input { - box-shadow: inset 0 -2px #e7e7e7; -} -input:hover { - box-shadow: inset 0 -2px #ccc; -} -input, fieldset { - font-family: sans-serif; - font-size: 1em; - margin: 0; - padding: 0; - border: 0; -} -input { - color: inherit; - line-height: 1.5; - height: 1.5em; - padding: .25em 0; -} -input:focus { - outline: none; - box-shadow: inset 0 -2px #449fdb; -} -.glyph { - font-size: 16px; - width: 15em; - padding-bottom: 1em; - margin-right: 4em; - margin-bottom: 1em; - float: left; - overflow: hidden; -} -.liga { - width: 80%; - width: calc(100% - 2.5em); -} -.talign-right { - text-align: right; -} -.talign-center { - text-align: center; -} -.bgc1 { - background: #f1f1f1; -} -.fgc1 { - color: #999; -} -.fgc0 { - color: #000; -} -p { - margin-top: 1em; - margin-bottom: 1em; -} -.mvm { - margin-top: .75em; - margin-bottom: .75em; -} -.mtn { - margin-top: 0; -} -.mtl, .mal { - margin-top: 1.5em; -} -.mbl, .mal { - margin-bottom: 1.5em; -} -.mal, .mhl { - margin-left: 1.5em; - margin-right: 1.5em; -} -.mhmm { - margin-left: 1em; - margin-right: 1em; -} -.mls { - margin-left: .25em; -} -.ptl { - padding-top: 1.5em; -} -.pbs, .pvs { - padding-bottom: .25em; -} -.pvs, .pts { - padding-top: .25em; -} -.unit { - float: left; -} -.unitRight { - float: right; -} -.size1of2 { - width: 50%; -} -.size1of1 { - width: 100%; -} -.clearfix:before, .clearfix:after { - content: " "; - display: table; -} -.clearfix:after { - clear: both; -} -.hidden-true { - display: none; -} -.textbox0 { - width: 3em; - background: #f1f1f1; - padding: .25em .5em; - line-height: 1.5; - height: 1.5em; -} -#testDrive { - display: block; - padding-top: 24px; - line-height: 1.5; -} -.fs0 { - font-size: 16px; -} -.fs1 { - font-size: 32px; -} -.fs2 { - font-size: 32px; -} - diff --git a/css/icomoon/demo-files/demo.js b/css/icomoon/demo-files/demo.js deleted file mode 100644 index 6f45f1c..0000000 --- a/css/icomoon/demo-files/demo.js +++ /dev/null @@ -1,30 +0,0 @@ -if (!('boxShadow' in document.body.style)) { - document.body.setAttribute('class', 'noBoxShadow'); -} - -document.body.addEventListener("click", function(e) { - var target = e.target; - if (target.tagName === "INPUT" && - target.getAttribute('class').indexOf('liga') === -1) { - target.select(); - } -}); - -(function() { - var fontSize = document.getElementById('fontSize'), - testDrive = document.getElementById('testDrive'), - testText = document.getElementById('testText'); - function updateTest() { - testDrive.innerHTML = testText.value || String.fromCharCode(160); - if (window.icomoonLiga) { - window.icomoonLiga(testDrive); - } - } - function updateSize() { - testDrive.style.fontSize = fontSize.value + 'px'; - } - fontSize.addEventListener('change', updateSize, false); - testText.addEventListener('input', updateTest, false); - testText.addEventListener('change', updateTest, false); - updateSize(); -}()); diff --git a/css/icomoon/demo.html b/css/icomoon/demo.html deleted file mode 100644 index a835379..0000000 --- a/css/icomoon/demo.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - IcoMoon Demo - - - - - -
-

Font Name: icomoon (Glyphs: 35)

-
-
-

Grid Size: 14

-
-
- - icon-dolphin -
-
- - -
-
- liga: - -
-
-
-
- - icon-cxbxr -
-
- - -
-
- liga: - -
-
-
-
- - icon-pcsx2 -
-
- - -
-
- liga: - -
-
-
-
- - icon-ppsspp -
-
- - -
-
- liga: - -
-
-
-
- - icon-ogxbox -
-
- - -
-
- liga: - -
-
-
-
- - icon-xbox -
-
- - -
-
- liga: - -
-
-
-
- - icon-playstation -
-
- - -
-
- liga: - -
-
-
-
- - icon-gog -
-
- - -
-
- liga: - -
-
-
-
- - icon-gtaforums -
-
- - -
-
- liga: - -
-
-
-
- - icon-octiconcheck -
-
- - -
-
- liga: - -
-
-
-
- - icon-octiconinfo -
-
- - -
-
- liga: - -
-
-
-
- - icon-octiconx -
-
- - -
-
- liga: - -
-
-
-
- - icon-origin -
-
- - -
-
- liga: - -
-
-
-
- - icon-ea -
-
- - -
-
- liga: - -
-
-
-
- - icon-youtube2 -
-
- - -
-
- liga: - -
-
-
-
- - icon-notes -
-
- - -
-
- liga: - -
-
-
-
- - icon-ubisoft -
-
- - -
-
- liga: - -
-
-
-
- - icon-mafia-1-hero -
-
- - -
-
- liga: - -
-
-
-
- - icon-circle -
-
- - -
-
- liga: - -
-
-
-
- - icon-shill -
-
- - -
-
- liga: - -
-
-
-
- - icon-scgoggles -
-
- - -
-
- liga: - -
-
-
-
- - icon-rockstar -
-
- - -
-
- liga: - -
-
-
-
- - icon-steam -
-
- - -
-
- liga: - -
-
-
-
- - icon-github-issue -
-
- - -
-
- liga: - -
-
-
-
- - icon-chevron-down -
-
- - -
-
- liga: - -
-
-
-
-

Grid Size: 16

-
-
- - icon-file-music1 -
-
- - -
-
- liga: - -
-
-
-
- - icon-search2 -
-
- - -
-
- liga: - -
-
-
-
- - icon-earth -
-
- - -
-
- liga: - -
-
-
-
- - icon-link -
-
- - -
-
- liga: - -
-
-
-
- - icon-github -
-
- - -
-
- liga: - -
-
-
-
- - icon-images -
-
- - -
-
- liga: - -
-
-
-
- - icon-download -
-
- - -
-
- liga: - -
-
-
-
- - icon-twitch -
-
- - -
-
- liga: - -
-
-
-
- - icon-youtube -
-
- - -
-
- liga: - -
-
-
-
- - icon-file-music -
-
- - -
-
- liga: - -
-
-
- - -
-

Font Test Drive

- - -
  -
-
- -
-

Generated by IcoMoon

-
- - - - diff --git a/css/icomoon/fonts/icomoon.eot b/css/icomoon/fonts/icomoon.eot deleted file mode 100644 index ef81d84..0000000 Binary files a/css/icomoon/fonts/icomoon.eot and /dev/null differ diff --git a/css/icomoon/fonts/icomoon.svg b/css/icomoon/fonts/icomoon.svg deleted file mode 100644 index 0d5f28d..0000000 --- a/css/icomoon/fonts/icomoon.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/css/icomoon/fonts/icomoon.ttf b/css/icomoon/fonts/icomoon.ttf deleted file mode 100644 index 1a8fa10..0000000 Binary files a/css/icomoon/fonts/icomoon.ttf and /dev/null differ diff --git a/css/icomoon/fonts/icomoon.woff b/css/icomoon/fonts/icomoon.woff deleted file mode 100644 index 79ea7bf..0000000 Binary files a/css/icomoon/fonts/icomoon.woff and /dev/null differ diff --git a/css/icomoon/selection.json b/css/icomoon/selection.json deleted file mode 100644 index ec76258..0000000 --- a/css/icomoon/selection.json +++ /dev/null @@ -1 +0,0 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M1023.4 769.325c-3.407-11.417-24.641-80.269-60.415-146.284-47.13-86.971-87.665-149.139-155.201-212.281-21.722-20.309-42.3-38.458-63.724-54.749h0.024c0 0-0.164-0.116-0.463-0.337-0.4-0.303-0.801-0.607-1.202-0.909-7.994-6.176-41.673-34.555-29.691-65.883 4.015-10.5 13.711-19.225 25.24-26.284l62.045-0.505v-23l-0.015 0c0 0 0.008-0.001 0.008-0.001s-36.331-12.343-99.904-8.265c-59.664 3.827-113.273 38.716-123.294 43.62-32.133-9.198-68.795-17.31-111.672-24.584-148.304-25.161-273.82 14.948-336.802 58.663-82.55 57.296-80.266 110.684-87.072 137.388-4.215 16.543-41.704 47.132-41.255 68.591v22.59l7.745 7.98 29.198-9.924 3.492-12.179c12.011-4.295 25.162-10.266 37.108-15.18 29.808-12.26 32.105-18.929 113.567-31.084 37.478-5.592 76.921-7.197 106.288-7.443 11.428 24.13 39.84 73.73 89.067 97.521 32.014 15.472 67.87 23.398 96.442 27.457l-3.747 18.84 56.834 8.423v-22.985l-0.043-0.018c0.011 0 0.018 0 0.018 0s-47.717-19.824-77.073-49.178c-19.978-19.976-24.759-50.32-25.776-67.671l0.18 0.017c48.096 9.139 90.107 15.734 190.578 54.212 18.583 7.116 35.914 14.918 51.703 22.794l-2.967 1.675 45.288 36.522 54.091 44.764v-22.985l-0.179-0.166c-0.798-0.991-62.399-77.302-165.913-128.356-85.551-42.196-155.793-63.043-253.115-67.764-106.378-5.159-184.761 8.5-184.761 8.5s2.192-47.269 82.501-84.94c69.833-32.758 179.694-38.24 305.779-6.075 178.13 45.443 238.883 122.823 315.506 202.786 48.613 50.732 93.303 122.115 121.476 171.505l-4.745-2.13 14.595 37.693 20.877 44.548v-23.132l-0.619-1.802z","M963 646c-47.13-86.971-87.665-149.139-155.201-212.281-21.723-20.31-42.301-38.459-63.725-54.75l0.024 0.005c0 0-0.17-0.12-0.481-0.349-0.386-0.293-0.774-0.586-1.16-0.878-7.952-6.139-41.707-34.542-29.714-65.901 13.16-34.411 87.278-49.791 87.278-49.791s-36.331-12.343-99.904-8.265c-59.664 3.827-113.273 38.716-123.294 43.62-32.133-9.198-68.795-17.31-111.672-24.584-148.304-25.161-273.82 14.948-336.802 58.663-82.55 57.296-80.266 110.684-87.072 137.388-4.897 19.216-54.694 57.386-37.767 78.183 10.561 12.975 45.706-4.644 74.056-16.306 29.808-12.26 32.105-18.93 113.566-31.084 37.478-5.592 76.921-7.197 106.288-7.443 11.428 24.13 39.84 73.73 89.067 97.521 66.467 32.123 149.503 31.719 149.503 31.719s-47.717-19.824-77.073-49.178c-19.978-19.976-24.759-50.32-25.776-67.671l0.18 0.017c48.096 9.139 90.107 15.734 190.578 54.212 87.908 33.667 147.955 82.628 147.955 82.628s-61.74-76.99-165.933-128.38c-85.551-42.195-155.793-63.043-253.115-67.763-106.378-5.159-184.761 8.5-184.761 8.5s2.192-47.269 82.501-84.94c69.833-32.758 179.694-38.24 305.779-6.075 178.13 45.443 238.883 122.823 315.506 202.787 81.553 85.11 152.073 228.342 152.073 228.342s-21.745-75.678-60.905-147.943z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"grid":14,"tags":["dolphin"],"colorPermutations":{}},"attrs":[],"properties":{"order":556,"id":16,"name":"dolphin","prevSize":32,"code":59673,"codes":[59673]},"setIdx":0,"setId":1,"iconIdx":0},{"icon":{"paths":["M511.329 0h10.737c0 0.98 0 2.953 0 3.932-3.597 0.013-7.167 0.027-10.737 0.027 0-0.993 0-2.966 0-3.959z","M446.252 6.536c3.1-0.443 6.187-0.846 9.341-1.208-3.127 0.376-6.267 0.792-9.341 1.208z","M567.038 5.422c3.073 0.416 6.227 0.886 9.341 1.369-3.154-0.456-6.227-0.939-9.341-1.369z","M422.001 10.549c1.758-0.429 3.516-0.846 5.301-1.208-1.758 0.429-3.53 0.832-5.301 1.208z","M596.564 9.287c2.711 0.362 5.422 0.886 8.093 1.543-2.724-0.429-5.422-0.899-8.093-1.543z","M402.044 14.709c1.772-0.389 3.556-0.738 5.355-1.1-1.785 0.403-3.57 0.792-5.355 1.1z","M619.339 13.568c1.798 0.389 3.597 0.805 5.382 1.248-1.798-0.403-3.583-0.832-5.382-1.248z","M635.444 17.433c1.798 0.443 3.61 0.913 5.409 1.396-1.825-0.456-3.61-0.926-5.409-1.396z","M382.624 20.453c-0.98-2.147 1.382-4.228 3.476-3.919 1.074 2.188-1.369 4.254-3.476 3.919z","M369.687 22.721c1.785-0.456 3.57-0.886 5.395-1.248-1.812 0.389-3.61 0.819-5.395 1.248z","M651.549 21.513c1.785 0.47 3.583 0.993 5.368 1.543-1.798-0.523-3.583-1.047-5.368-1.543z","M663.681 25.218c1.772 0.577 3.57 1.194 5.355 1.812-1.798-0.591-3.583-1.194-5.355-1.812z","M675.746 29.271c1.785 0.577 3.57 1.181 5.368 1.798-1.812-0.591-3.583-1.194-5.368-1.798z","M687.811 33.324c1.785 0.617 3.57 1.275 5.355 1.959-1.798-0.644-3.57-1.315-5.355-1.959z","M321.413 39.323c1.772-0.778 3.556-1.543 5.341-2.282-1.772 0.778-3.556 1.53-5.341 2.282z","M707.942 41.202c1.745 0.752 3.516 1.543 5.247 2.362-1.758-0.792-3.503-1.584-5.247-2.362z","M716.129 44.946c1.745 0.805 3.503 1.637 5.247 2.456-1.772-0.792-3.516-1.61-5.247-2.456z","M293.35 51.616c1.731-0.859 3.476-1.678 5.247-2.469-1.758 0.819-3.503 1.651-5.247 2.469z","M285.271 55.602c1.704-0.886 3.422-1.745 5.167-2.577-1.718 0.859-3.449 1.718-5.167 2.577z","M277.232 59.668c1.704-0.899 3.422-1.772 5.154-2.617-1.718 0.886-3.436 1.758-5.154 2.617z","M269.233 63.896c1.704-0.939 3.409-1.865 5.14-2.751-1.704 0.913-3.422 1.839-5.14 2.751z","M756.458 64.862c1.704 0.913 3.409 1.852 5.127 2.792-1.731-0.913-3.436-1.852-5.127-2.792z","M764.39 69.184c1.691 0.926 3.395 1.865 5.073 2.859-1.704-0.953-3.382-1.906-5.073-2.859z","M785.098 81.866c1.141-4.281 5.596 0.416 0.819 0.564l-0.819-0.564z","M229.078 88.241c1.624-1.127 3.261-2.201 4.912-3.275-1.637 1.1-3.275 2.188-4.912 3.275z","M796.667 89.087c1.664 1.033 3.315 2.107 4.925 3.221-1.637-1.087-3.275-2.161-4.925-3.221z","M812.946 100.91c1.57 1.154 3.167 2.308 4.751 3.489-1.61-1.154-3.194-2.308-4.751-3.489z","M200.908 108.399c1.57-1.181 3.167-2.322 4.778-3.463-1.584 1.168-3.181 2.308-4.778 3.463z","M829.051 112.976c1.597 1.127 3.208 2.268 4.791 3.449-1.61-1.141-3.208-2.282-4.791-3.449z","M176.549 128.503c2.979-2.59 6.080-5.046 9.287-7.355-2.926 2.657-6.026 5.113-9.287 7.355z","M864.83 145.051c7.261 3.65 13.152 9.542 16.789 16.816-6.348-4.805-11.998-10.455-16.789-16.816z","M121.135 185.823c2.308-3.208 4.778-6.294 7.368-9.274-2.241 3.248-4.711 6.335-7.368 9.274z","M906.166 188.856c1.154 1.584 2.282 3.208 3.422 4.831-1.168-1.597-2.295-3.221-3.422-4.831z","M920.083 204.854c1.959 0.966 2.738 3.999 0.778 5.409-1.852-1.060-2.711-3.999-0.778-5.409z","M96.938 217.805c1.114-1.624 2.241-3.221 3.395-4.818-1.127 1.61-2.255 3.221-3.395 4.818z","M930.444 220.985c1.114 1.61 2.188 3.261 3.234 4.939-1.074-1.651-2.161-3.301-3.234-4.939z","M940.376 236.674c0.067-4.791 4.818-0.349 0.55 0.805l-0.55-0.805z","M72.968 254.161c0.98-1.704 2-3.382 3.047-5.046-1.020 1.678-2.040 3.369-3.047 5.046z","M950.763 253.088c1.020 1.678 2.027 3.355 3.060 5.046-1.047-1.664-2.080-3.355-3.060-5.046z","M979.296 309.347c0.752 1.772 1.49 3.543 2.214 5.341-0.738-1.785-1.503-3.57-2.214-5.341z","M41.134 318.728c0.738-1.798 1.503-3.583 2.295-5.341-0.765 1.772-1.53 3.556-2.295 5.341z","M987.308 329.519c0.684 1.772 1.342 3.543 2 5.341-0.671-1.785-1.355-3.57-2-5.341z","M33.324 338.873c0.631-1.798 1.302-3.57 1.986-5.341-0.658 1.772-1.329 3.556-1.986 5.341z","M991.656 341.503c0.671 1.785 1.342 3.57 2.027 5.368-0.711-1.785-1.396-3.57-2.027-5.368z","M29.217 350.925c0.591-1.798 1.208-3.583 1.825-5.355-0.591 1.785-1.208 3.57-1.825 5.355z","M25.392 363.057c0.51-1.812 1.060-3.61 1.637-5.395-0.55 1.785-1.1 3.583-1.637 5.395z","M999.91 365.647c0.537 1.798 1.060 3.583 1.584 5.395-0.55-1.798-1.087-3.597-1.584-5.395z","M16.575 390.14c-0.295-2.094 1.798-4.469 3.946-3.476 0.309 2.107-1.745 4.563-3.946 3.476z","M1007.962 397.897c0.403 1.798 0.792 3.597 1.194 5.409-0.403-1.798-0.832-3.61-1.194-5.409z","M13.622 411.439c0.376-1.798 0.738-3.583 1.154-5.355-0.336 1.785-0.738 3.57-1.154 5.355z","M1012.15 417.975c0.389 1.758 0.792 3.516 1.141 5.301-0.416-1.758-0.805-3.543-1.141-5.301z","M9.542 431.368c0.282-1.798 0.658-3.57 1.047-5.328-0.349 1.758-0.684 3.543-1.047 5.328z","M1015.88 442.279c0.429 3.087 0.792 6.16 1.275 9.301-0.456-3.1-0.939-6.2-1.275-9.301z","M4.254 455.19c2.188-0.711 2.926 0.040 2.228 2.228-2.188 0.698-2.926-0.054-2.228-2.228z","M5.664 463.806c0.268-1.825 0.604-3.624 0.966-5.422-0.309 1.798-0.658 3.61-0.966 5.422z","M1018.591 487.373c4.59-2.979 4.711 5.207 0.040 2.335 0-0.577-0.027-1.745-0.040-2.335z","M1019.048 495.009c1.181 0.389 2.375 0.792 3.583 1.194-0.349 4.066-0.658 8.146-0.899 12.24-1.57-4.295-2.188-8.925-2.684-13.434z","M1018.914 511.597c0.711-0.067 2.161-0.215 2.872-0.282 0.268 7.046 0.537 14.119 0.819 21.178-0.953 0.107-2.859 0.336-3.811 0.443 0.013-7.126 0.054-14.239 0.121-21.339z","M5.207 559.040c0.389 3.060 0.859 6.080 1.288 9.193-0.497-3.060-1.020-6.106-1.288-9.193z","M1014.753 579.694c0.081-1.731 0.255-5.18 0.336-6.912 0.564 0.725 1.691 2.188 2.241 2.912-0.081 1.785-0.953 3.114-2.577 3.999z","M9.529 591.33c0.322 1.758 0.617 3.503 0.899 5.288-0.309-1.772-0.631-3.53-0.899-5.288z","M1012.096 604.589c0.349-1.785 0.738-3.53 1.141-5.288-0.336 1.758-0.711 3.53-1.141 5.288z","M1007.909 624.6c0.295-1.798 0.698-3.57 1.1-5.341-0.376 1.772-0.725 3.556-1.1 5.341z","M17.782 632.223l0.282 0.926c-1.181 4.738-4.724-0.805-0.282-0.926z","M1003.99 639.242c0.148-1.852 1.114-2.724 2.885-2.604-0.027 1.946-0.98 2.818-2.885 2.604z","M999.641 656.93c0.497-1.798 1.047-3.583 1.543-5.382-0.483 1.785-0.993 3.597-1.543 5.382z","M25.218 659.641c0.604 1.785 1.221 3.57 1.812 5.368-0.631-1.785-1.235-3.583-1.812-5.368z","M995.629 669.036c0.577-1.798 1.208-3.583 1.839-5.355-0.617 1.785-1.221 3.57-1.839 5.355z","M29.311 671.693c0.644 1.785 1.288 3.57 1.919 5.368-0.658-1.785-1.302-3.583-1.919-5.368z","M991.589 681.101c0.564-1.798 1.181-3.583 1.798-5.355-0.604 1.785-1.194 3.57-1.798 5.355z","M987.361 693.166c0.631-1.798 1.302-3.583 1.959-5.368-0.644 1.785-1.288 3.583-1.959 5.368z","M41.081 703.956c0.752 1.772 1.517 3.543 2.255 5.341-0.778-1.772-1.53-3.57-2.255-5.341z","M979.229 713.297c0.752-1.785 1.53-3.556 2.295-5.328-0.752 1.772-1.503 3.556-2.295 5.328z","M957.339 758.283c-4.375 1.503-2.053-4.55 0.483-0.899l-0.483 0.899z","M81.786 784.32c-1.168-5.623 6.174-2 1.919 1.194-0.483-0.295-1.436-0.899-1.919-1.194z","M96.898 804.88c1.154 1.584 2.308 3.167 3.449 4.778-1.168-1.584-2.322-3.181-3.449-4.778z","M918.258 817.697c1.141-1.61 2.295-3.194 3.463-4.778-1.141 1.597-2.282 3.194-3.463 4.778z","M108.949 820.998c1.168 1.584 2.322 3.167 3.476 4.778-1.181-1.584-2.335-3.181-3.476-4.778z","M129.107 845.129c1.181 1.57 2.322 3.181 3.476 4.791-1.181-1.584-2.335-3.194-3.476-4.791z","M172.711 890.169c1.678 0.926 3.382 1.852 5.113 2.738-1.745-0.859-3.463-1.745-5.113-2.738z","M178.804 893.376c2.080 0.376 3.811 3.006 2.214 4.858-2.080-0.443-3.825-3.033-2.214-4.858z","M833.104 905.683c1.57-1.181 3.154-2.349 4.764-3.489-1.584 1.181-3.181 2.335-4.764 3.489z","M196.144 910.434c2.174-1.382 5.315 0.899 4.509 3.409-2.134 0.040-3.892-1.423-4.509-3.409z","M814.583 919.359c5.919-0.282 0.443 6.321-1.785 1.476 0.443-0.362 1.329-1.114 1.785-1.476z","M213.054 922.244c1.584 1.141 3.181 2.295 4.764 3.463-1.61-1.154-3.194-2.295-4.764-3.463z","M779.408 945.838c-0.537-1.798 0.161-3.006 2.080-3.597 0.309 1.839-0.389 3.047-2.080 3.597z","M249.115 946.643c1.678 1.007 3.369 2.027 5.046 3.047-1.704-0.993-3.382-2.013-5.046-3.047z","M756.311 957.46c1.678-0.966 3.369-1.933 5.086-2.859-1.691 0.953-3.395 1.906-5.086 2.859z","M748.459 961.916c1.664-1.007 3.355-1.973 5.060-2.899-1.691 0.966-3.382 1.919-5.060 2.899z","M716.035 977.591c1.798-0.738 3.57-1.503 5.382-2.214-1.785 0.752-3.583 1.49-5.382 2.214z","M696.884 987.16c-1.208-2.134 1.047-4.281 3.127-4.321 1.235 2.094-1.007 4.389-3.127 4.321z","M333.505 987.348c1.785 0.698 3.57 1.436 5.368 2.174-1.812-0.711-3.597-1.436-5.368-2.174z","M371.633 998.675c2.12-0.228 4.026 2.188 2.899 4.16-2.282 0.617-4.053-2.282-2.899-4.16z","M386.396 1002.393c4.764-2.053 5.127 5.489 0.389 2.389-0.094-0.604-0.295-1.798-0.389-2.389z","M636.598 1006.15c-1.127-2.161 1.221-4.415 3.382-4.013 1.020 2.134-1.329 4.174-3.382 4.013z","M401.923 1008.029c1.798 0.322 3.597 0.684 5.409 0.993-1.812-0.309-3.624-0.617-5.409-0.993z","M425.020 1011.103c1.825 0.134 2.55 1.127 2.174 2.979-1.865-0.134-2.59-1.127-2.174-2.979z","M595.356 1013.116c1.745-0.349 3.503-0.671 5.274-0.953-1.758 0.322-3.53 0.644-5.274 0.953z","M450.211 1016.055c1.852 0.282 3.691 0.671 5.529 1.114-1.865-0.309-3.704-0.684-5.529-1.114z","M567.132 1017.29c1.785-0.336 3.556-0.658 5.368-0.913-1.798 0.309-3.583 0.617-5.368 0.913z","M455.593 5.328c18.507-1.852 37.149-1.382 55.736-1.369 3.57 0 7.14-0.013 10.737-0.027 14.991 0 30.036-0.188 44.973 1.49 3.114 0.429 6.187 0.913 9.341 1.369 6.697 1.033 13.448 1.61 20.185 2.496 2.671 0.644 5.368 1.114 8.093 1.543 4.885 0.846 9.784 1.758 14.682 2.738 1.798 0.416 3.583 0.846 5.382 1.248 3.583 0.859 7.1 1.718 10.723 2.617 1.798 0.47 3.583 0.939 5.409 1.396 3.556 0.913 7.073 1.745 10.696 2.684 1.785 0.497 3.57 1.020 5.368 1.543 2.255 0.698 4.509 1.409 6.764 2.161 1.772 0.617 3.556 1.221 5.355 1.812 2.228 0.765 4.469 1.49 6.71 2.241 1.785 0.604 3.556 1.208 5.368 1.798 2.214 0.752 4.456 1.476 6.697 2.255 1.785 0.644 3.556 1.315 5.355 1.959 4.966 1.865 9.891 3.825 14.776 5.919 1.745 0.778 3.489 1.57 5.247 2.362 0.738 0.349 2.201 1.033 2.939 1.382 1.731 0.846 3.476 1.664 5.247 2.456 11.918 5.368 23.661 11.112 35.082 17.46 1.691 0.939 3.395 1.879 5.127 2.792 0.698 0.376 2.107 1.141 2.805 1.53 1.691 0.953 3.369 1.906 5.073 2.859 5.301 3.14 10.549 6.348 15.635 9.824l0.819 0.564c3.516 2.282 7.207 4.375 10.75 6.657 1.651 1.060 3.288 2.134 4.925 3.221 3.932 2.671 7.516 5.811 11.354 8.603 1.557 1.181 3.14 2.335 4.751 3.489 3.825 2.792 7.489 5.825 11.354 8.576 1.584 1.168 3.181 2.308 4.791 3.449 11.381 8.375 19.769 20.064 30.988 28.626 4.791 6.361 10.441 12.012 16.789 16.816 7.395 9.703 17.474 17.017 24.546 26.989 1.127 1.61 2.255 3.234 3.422 4.831 2.912 4.214 6.509 7.932 10.495 11.166-1.933 1.409-1.074 4.348 0.778 5.409 3.543 3.234 6.898 6.724 9.582 10.723 1.074 1.637 2.161 3.288 3.234 4.939 2.282 3.556 4.402 7.18 6.697 10.75l0.55 0.805c3.516 5.046 6.616 10.361 9.837 15.608 0.98 1.691 2.013 3.382 3.060 5.046 9.743 16.4 18.118 33.619 25.473 51.213 0.711 1.772 1.476 3.556 2.214 5.341 1.986 4.925 3.919 9.864 5.798 14.83 0.644 1.772 1.329 3.556 2 5.341 0.792 2.214 1.53 4.442 2.349 6.643 0.631 1.798 1.315 3.583 2.027 5.368 2.496 6.106 4.536 12.374 6.227 18.776 0.497 1.798 1.033 3.597 1.584 5.395 2.671 8.831 4.657 17.823 6.469 26.855 0.362 1.798 0.792 3.61 1.194 5.409 0.966 4.872 1.959 9.77 2.993 14.669 0.336 1.758 0.725 3.543 1.141 5.301 1.1 6.294 1.664 12.656 2.59 19.004 0.336 3.1 0.819 6.2 1.275 9.301 1.396 11.864 1.624 23.849 1.436 35.793 0.013 0.591 0.040 1.758 0.040 2.335 0.107 1.772 0.242 3.53 0.416 5.301 0.497 4.509 1.114 9.14 2.684 13.434 0.013 0.725 0.040 2.147 0.054 2.872-0.711 0.067-2.161 0.215-2.872 0.282-0.067 7.1-0.107 14.213-0.121 21.339-0.107 14.253-0.215 28.532-1.463 42.758-0.55-0.725-1.678-2.188-2.241-2.912-0.081 1.731-0.255 5.18-0.336 6.912-0.268 6.549-0.872 13.072-1.517 19.608-0.403 1.758-0.792 3.503-1.141 5.288-1.033 4.872-2.067 9.77-3.087 14.669-0.403 1.772-0.805 3.543-1.1 5.341-0.55 3.999-0.832 7.958-1.033 12.038-1.772-0.121-2.738 0.752-2.885 2.604-0.832 4.134-1.879 8.16-2.805 12.307-0.497 1.798-1.047 3.583-1.543 5.382-0.711 2.255-1.423 4.509-2.174 6.751-0.631 1.772-1.262 3.556-1.839 5.355-0.778 2.228-1.503 4.469-2.241 6.71-0.617 1.772-1.235 3.556-1.798 5.355-0.765 2.228-1.49 4.469-2.268 6.697-0.658 1.785-1.329 3.57-1.959 5.368-1.879 4.952-3.825 9.891-5.838 14.803-0.765 1.772-1.543 3.543-2.295 5.328-6.536 14.978-14.186 29.432-21.406 44.087-2.537-3.65-4.858 2.402-0.483 0.899-11.622 18.373-22.708 37.108-35.619 54.636-1.168 1.584-2.322 3.167-3.463 4.778-5.502 7.019-11.381 13.756-16.387 21.164-10.361 11.944-22.278 22.413-33.216 33.82-10.307 9.784-19.473 20.856-30.787 29.512-1.61 1.141-3.194 2.308-4.764 3.489-6.147 4.603-11.81 9.864-18.521 13.676-0.456 0.362-1.342 1.114-1.785 1.476-8.925 9.099-20.238 15.34-31.311 21.406-1.919 0.591-2.617 1.798-2.080 3.597-6.348 2.161-12.173 5.516-18.011 8.764-1.718 0.926-3.409 1.892-5.086 2.859-0.698 0.389-2.094 1.168-2.792 1.557-1.704 0.926-3.395 1.892-5.060 2.899-8.63 5.221-17.702 9.676-27.043 13.461-1.812 0.711-3.583 1.476-5.382 2.214-5.194 2.161-10.535 3.946-16.024 5.247-2.080 0.040-4.335 2.188-3.127 4.321-19.514 2.993-36.894 14.696-56.904 14.978-2.161-0.403-4.509 1.852-3.382 4.013-12.025 1.798-23.929 4.281-35.967 6.012-1.772 0.282-3.53 0.604-5.274 0.953-7.623 1.141-15.273 2.027-22.855 3.261-1.812 0.255-3.583 0.577-5.368 0.913-37.028 2.282-74.378 2.456-111.392-0.121-1.839-0.443-3.677-0.832-5.529-1.114-7.65-0.993-15.353-1.423-23.017-1.973 0.376-1.852-0.349-2.845-2.174-2.979-5.905-0.658-11.824-1.288-17.688-2.080-1.812-0.309-3.61-0.671-5.409-0.993-5.073-1.033-10.133-2.094-15.139-3.248 4.738 3.1 4.375-4.442-0.389-2.389-3.946 0.268-7.945 0.228-11.864 0.443 1.127-1.973-0.778-4.389-2.899-4.16-11.3-1.476-22.211-4.952-32.76-9.153-1.798-0.738-3.583-1.476-5.368-2.174-27.499-10.186-53.495-23.902-79.343-37.659-1.678-1.020-3.369-2.040-5.046-3.047-10.656-6.643-21.218-13.461-31.297-20.936-1.584-1.168-3.181-2.322-4.764-3.463-4.053-2.912-7.878-6.227-12.401-8.401 0.805-2.51-2.335-4.791-4.509-3.409-4.362-4.791-9.166-9.462-15.125-12.199 1.597-1.852-0.134-4.483-2.214-4.858l-0.98-0.47c-1.731-0.886-3.436-1.812-5.113-2.738-6.724-4.268-11.716-10.629-17.393-16.132-7.636-7.972-16.226-15.125-22.735-24.117-1.154-1.61-2.295-3.221-3.476-4.791-4.952-6.965-11.676-12.428-16.682-19.353-1.154-1.61-2.308-3.194-3.476-4.778-2.778-3.852-5.811-7.502-8.603-11.34-1.141-1.61-2.295-3.194-3.449-4.778-4.764-6.2-9.059-12.736-13.193-19.366 4.254-3.194-3.087-6.818-1.919-1.194-13.676-24.546-27.835-48.918-38.45-75.022-0.738-1.798-1.503-3.57-2.255-5.341-3.905-8.737-6.549-17.943-9.851-26.895-0.631-1.798-1.275-3.583-1.919-5.368-0.792-2.228-1.53-4.456-2.282-6.684-0.591-1.798-1.208-3.583-1.812-5.368-2.832-8.71-4.939-17.635-7.153-26.492l-0.282-0.926c-3.382-11.676-5.865-23.553-7.355-35.605-0.282-1.785-0.577-3.53-0.899-5.288-1.127-7.69-1.933-15.42-3.033-23.097-0.429-3.114-0.899-6.133-1.288-9.193-1.852-31.673-2.698-63.628 0.456-95.233 0.309-1.812 0.658-3.624 0.966-5.422 1.382-8.952 1.812-18.037 2.912-27.016 0.362-1.785 0.698-3.57 1.047-5.328 1.007-4.885 2.013-9.757 3.033-14.602 0.416-1.785 0.819-3.57 1.154-5.355 0.805-5.301 1.275-10.643 1.798-15.944 2.201 1.087 4.254-1.369 3.946-3.476 0.765-8.012 2.684-15.877 4.872-23.607 0.537-1.812 1.087-3.61 1.637-5.395 0.711-2.255 1.436-4.509 2.188-6.737 0.617-1.785 1.235-3.57 1.825-5.355 0.765-2.241 1.49-4.483 2.282-6.697 0.658-1.785 1.329-3.57 1.986-5.341 1.865-4.979 3.811-9.904 5.825-14.803 0.765-1.785 1.53-3.57 2.295-5.341 9.153-20.064 18.977-39.86 29.539-59.226 1.007-1.678 2.027-3.369 3.047-5.046 6.603-10.669 13.515-21.178 20.923-31.311 1.141-1.597 2.268-3.208 3.395-4.818 6.751-9.207 13.166-18.655 20.802-27.164 2.657-2.939 5.127-6.026 7.368-9.274 7.22-9.18 16.038-16.897 24.157-25.231 7.865-7.703 15.192-16.011 23.889-22.815 3.261-2.241 6.361-4.697 9.287-7.355 5.127-4.12 9.73-8.885 15.071-12.75 1.597-1.154 3.194-2.295 4.778-3.463 7.663-5.744 15.595-11.126 23.392-16.695 1.637-1.087 3.275-2.174 4.912-3.275 11.448-7.529 23.11-14.709 35.243-21.071 1.718-0.913 3.436-1.839 5.14-2.751 0.711-0.376 2.147-1.114 2.859-1.476 1.718-0.859 3.436-1.731 5.154-2.617 0.725-0.362 2.161-1.087 2.885-1.449 1.718-0.859 3.449-1.718 5.167-2.577 0.725-0.349 2.188-1.060 2.912-1.409 1.745-0.819 3.489-1.651 5.247-2.469 7.556-3.382 15.152-6.657 22.815-9.824 1.785-0.752 3.57-1.503 5.341-2.282 13.904-5.878 28.277-10.696 42.933-14.32 1.785-0.429 3.583-0.859 5.395-1.248 2.483-0.51 5.006-0.805 7.542-1.020 2.107 0.336 4.55-1.731 3.476-3.919 5.315-0.51 10.629-1.1 15.944-1.825 1.785-0.309 3.57-0.698 5.355-1.1 4.858-0.993 9.73-2.013 14.602-3.060 1.772-0.376 3.543-0.778 5.301-1.208 6.267-1.208 12.615-1.865 18.95-2.805 3.073-0.416 6.214-0.832 9.341-1.208M500.297 42.262c-9.703 1.382-19.5 1.731-29.257 2.282-49.106 3.825-97.139 16.749-142.608 35.323-35.578 16.494-70.177 35.672-101.125 59.856-7.1 3.973-12.575 9.972-18.306 15.595-4.764 4.805-11.206 7.422-16.065 12.105-5.986 5.637-11.569 11.689-17.514 17.38-9.18 8.079-13.864 19.863-23.433 27.593-15.474 18.319-28.277 38.746-41.671 58.635-9.998 17.487-18.091 35.994-27.486 53.804-7.623 13.917-11.072 29.512-16.454 44.329-5.234 14.441-8.375 29.512-12.173 44.369-4.885 20.493-5.261 41.658-8.63 62.366-4.59 33.74 0.859 67.479 3.838 101.071 7.73 53.629 24.936 105.822 50.395 153.627 8.911 20.601 22.855 38.289 34.827 57.105 3.785 5.717 9.448 9.891 13.219 15.635 7.851 14.347 23.285 22.372 31.109 36.732 2.912 4.67 8.388 6.522 12.454 9.998 11.703 9.784 20.48 22.936 33.968 30.572 7.811 6.522 16.467 11.931 24.184 18.574 14.011 8.75 28.546 16.722 42.45 25.674 19.702 12.267 42.248 18.453 63.279 27.875 26.882 10.401 55.347 15.944 83.611 21.044 37.055 7.824 75.156 3.785 112.707 4.469 45.684-4.093 90.697-15.071 133.67-31.056 16.548-8.737 34.988-13.313 50.771-23.58 12.629-8.777 27.244-14.213 39.524-23.553 11.502-9.046 23.204-17.85 35.162-26.278 7.381-5.878 12.83-13.917 20.748-19.178 8.254-4.805 15.581-11.354 20.99-19.272 7.932-14.629 23.674-22.788 31.7-37.39 10.643-12.857 19.151-27.271 28.6-40.987 7.918-11.099 13.085-23.795 19.326-35.833 17.742-33.431 30.317-69.466 38.96-106.279 6.147-22.923 6.751-46.825 10.119-70.204 2.067-25.848 2.859-52.153-1.892-77.746-3.087-34.169-9.341-68.204-20.842-100.588-4.764-13.26-8.039-27.096-14.28-39.779-13.609-26.721-26.009-54.193-42.812-79.102-8.173-10.24-15.93-20.829-23.54-31.498-4.724-5.865-10.978-10.388-15.125-16.736-5.154-9.394-13.528-16.185-20.856-23.768-4.657-4.63-9.032-9.649-14.548-13.3-11.34-5.945-18.011-17.675-29.324-23.674-14.843-12.105-31.391-21.876-47.174-32.693-36.464-19.366-73.666-38.665-114.25-47.724-27.11-6.147-54.314-13.085-82.256-13.689-18.064 0.228-35.994-6.053-53.992-2.107z","M331.277 197.915c37.632-1.329 75.29-0.349 112.949-0.631 124.678 0.242 249.357-0.483 374.022 0.362-8.307 9.743-17.85 18.319-26.707 27.553-5.476 5.932-13.206 8.965-18.87 14.655-19.031 18.99-37.873 38.168-57.051 57.011-8.415 6.214-16.991 14.333-28.412 13.072-108.278 0.255-216.57-0.027-324.848 0.094 0 134.194-0.013 268.401 0.013 402.594 142.568 0.282 285.136-0.497 427.691 0.389-3.355 3.973-7.113 7.596-10.629 11.421-5.086 5.328-7.972 12.36-13.394 17.433-11.676 11.582-23.312 23.218-34.948 34.854-5.69 5.811-12.079 11.086-16.628 17.903-4.603 8.187-11.582 14.561-18.158 21.138-2.953 2.671-5.986 5.999-10.616 5.113-29.016 1.396-58.085 0.040-87.127 0.47-95.851-0.362-191.728 0.725-287.566-0.55-9.851-10.857-20.601-20.856-30.787-31.391-5.462-5.932-13.206-8.965-18.87-14.655-10.374-10.227-20.453-20.748-30.827-30.948-6.080-6.147-15.085-8.777-19.97-16.172-0.282-3.060-0.846-9.193-1.127-12.253-0.362-53.71 0.188-107.419-0.040-161.116 0.604-15.407-4.885-30.197-4.147-45.604 0.107-60.407 0.242-120.813-0.067-181.206 0.832-6.294-2.040-14.561 3.744-19.165 8.267-7.797 15.702-16.534 24.614-23.62 15.93-9.086 25.942-25.164 40.262-36.222 16.199-9.22 26.211-25.727 40.96-36.719 6.335-3.53 11.837-8.307 16.534-13.81z","M591.773 397.776c19.541-2.872 39.256-4.187 59.024-2.993 2.201 6.885 7.596 11.716 11.649 17.433 3.489 5.757 8.213 10.602 12.092 16.078 4.389 7.757 11.864 13.26 15.407 21.58 1.865 3.865 4.281 9.14 0.765 12.683-11.287 12.132-19.541 26.707-30.478 39.121 12.401 11.099 23.352 23.688 35.753 34.786 0.684 18.453 0.604 36.92 0.564 55.387-20.131 0.013-40.262 0-60.38-0.013-0.027-15.595-0.027-31.176-0.121-46.758-5.999-5.154-10.857-11.609-17.272-16.266-18.36-2.818-37.122-0.107-55.468-3.073-15.367-2.818-31.096-3.181-46.65-2.268-5.033-0.725-9.22 1.825-13.367 4.013-0.040 17.89 0.268 35.78 0.107 53.683 3.57 11.73-9.126 14.696-16.212 19.983-13.743 7.153-27.177 14.816-40.021 23.486-0.228-73.68-0.846-147.386 0.322-221.052 1.49-1.449 2.966-2.926 4.415-4.415 46.597-1.892 93.301 0.966 139.871-1.396M503.277 434.844c-0.013 16.091-0.013 32.196 0 48.301 38.531-0.832 77.209 1.745 115.646-1.181 7.958-5.462 10.777-15.394 17.917-21.688-6.684-10.777-15.89-22.426-29.942-22.52-11.877-3.248-24.332-2.832-36.518-3.047-22.372 0.027-44.731 0.174-67.104 0.134z"],"attrs":[],"grid":14,"tags":["cxbxr"],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{}},"attrs":[],"properties":{"order":554,"id":7,"name":"cxbxr","prevSize":32,"code":59672,"codes":[59672]},"setIdx":0,"setId":1,"iconIdx":1},{"icon":{"paths":["M488.565 105.090c11.212-8.481 27.91-8.382 38.886 0.447 6.877 5.299 15.993 8.455 20.774 15.968 1.366 5.345 0.823 11.585-4.284 14.788-31.443 22.161-63.449 43.525-95.079 65.43-11.001 7.749-22.633 14.627-33.019 23.247-5.604 4.284-5.749 13.847-0.564 18.513 5.227 4.922 11.374 8.667 17.076 13.002 10.716 9.587 27.533 12.082 39.638 3.534 40.556-28.474 80.926-57.254 121.505-85.707 10.53-8.243 26.565-7.797 37.213 0 43.926 28.971 87.612 58.29 131.47 87.379 7.115 4.476 10.575 15.404 4.709 22.161-33.255 25.696-66.087 51.931-99.369 77.579-4.688 3.7-10.481 5.91-16.486 5.816-15.544 1.391-26.591-11.539-38.555-19.218-6.877-3.979-11.163-11.636-9.325-19.62 1.226-2.872 2.872-5.629 5.49-7.467 10.433-8.667 21.669-16.299 32.22-24.775 6.665-6.122 15.471-10.458 19.947-18.654 2.613-8.221-5.227-14.53-11.139-18.747-11.115-7.183-21.996-17.733-36.272-16.464-10.953-0.284-19.006 7.959-27.461 13.614-33.090 24.402-66.392 48.469-99.529 72.751-10.433 6.83-19.782 17.83-33.348 17.262-10.458 0.823-19.006-6.028-26.591-12.248-38.508-28.992-76.849-58.268-115.404-87.214-2.592-2.023-4.238-4.922-5.863-7.725-1.93-6.856 2.236-13.614 7.959-17.1 58.409-38.955 117.007-77.627 175.416-116.558z","M178.881 498.624c18.938-1.341 38.062 1.154 56.924-1.79 2.189 3.297 4.31 6.665 6.358 10.080-8.879 6.784-21.996 13.283-21.763 26.213-0.398 10.53 9.846 16.32 16.627 22.564 20.702 17.971 41.24 36.128 61.869 54.17 4.124 4.052 9.562 7.606 11.212 13.423 2.779 9.94-1.366 20.066-9.894 25.696-13.992 9.562-26.307 25.789-44.985 24.449-12.2 0.186-21.008-9.163-29.017-17.050-32.48-29.51-64.793-59.185-97.2-88.791-8.951-8.526-18.654-16.299-27.083-25.39-2.545-6.313-2.639-14.012 1.625-19.62 5.393-7.208 13.521-11.492 20.584-16.791l0.517 0.118c17.1 3.297 34.787 1.956 52.074 1.226 0.709-2.825 1.413-5.676 2.142-8.502z","M341.483 666.69c4.947-4.544 12.626-4.828 18.581-2.447 8.481 6.22 16.061 13.566 23.999 20.465 61.493 53.818 122.989 107.657 184.435 161.543 3.813 3.415 4.874 8.905 3.839 13.78-10.788 12.507-24.045 22.704-35.94 34.198-10.67 11.26-29.203 14.461-42.346 5.676-9.469-6.877-17.64-15.311-26.26-23.197-45.643-41.544-91.075-83.348-136.623-125.013-9.422-8.62-19.15-16.91-28.028-26.095-5.935-5.842-5.49-14.907-3.581-22.354 2.427-4.004 5.37-7.749 9.115-10.597 10.903-8.692 21.763-17.452 32.808-25.954z","M548.223 121.508c2.261 14.53-0.093 29.654 0.352 44.418 0.612 5.325-1.507 10.644-6.028 13.659-36.743 25.624-73.481 51.273-110.198 76.897-5.7-4.334-11.846-8.077-17.076-13.002-5.18-4.663-5.040-14.226 0.564-18.513 10.385-8.62 22.022-15.497 33.019-23.247 31.63-21.903 63.639-43.263 95.079-65.43 5.112-3.202 5.651-9.444 4.284-14.788z","M305.191 238.747c1.625 2.805 3.274 5.7 5.863 7.725 38.555 28.946 76.897 58.222 115.404 87.214 7.586 6.22 16.134 13.071 26.591 12.248 13.566 0.564 22.918-10.433 33.348-17.262 33.137-24.284 66.439-48.354 99.529-72.751 8.455-5.651 16.512-13.895 27.461-13.614 14.271-1.273 25.153 9.278 36.272 16.464 5.91 4.217 13.754 10.53 11.139 18.747-4.476 8.196-13.283 12.529-19.947 18.654-9.045-6.101-18.535-13.895-30.239-12.341-10.882 0.517-18.513 8.926-26.969 14.627-34.291 25.437-68.513 50.989-102.829 76.358-5.842 4.124-11.26 9.444-18.441 11.001-8.879 2.075-18.773 0.709-26.026-5.086-38.389-29.183-76.403-58.879-114.747-88.129-4.595-3.861-10.763-7.183-11.942-13.589-1.697-13.376-2.758-26.849-4.476-40.252z","M766.878 283.853l1.863-0.564c-1.532 12.553-3.016 25.131-5.536 37.52-0.709 3.581-3.839 5.816-6.406 8.056-30.312 24.495-61.047 48.421-91.431 72.824-11.73 9.821-29.981 7.819-40.981-2.189-7.913-6.949-19.29-11.28-23.409-21.597-0.564-16.464 1.154-33.019 2.168-49.482-1.837 7.983 2.447 15.637 9.325 19.62 11.964 7.679 23.011 20.609 38.555 19.218 6.008 0.093 11.799-2.121 16.486-5.816 33.281-25.649 66.113-51.884 99.369-77.579z","M208.508 366.284c11.704-8.642 29.183-8.056 39.661 2.261 7.441 7.586 19.549 12.082 22.068 23.362 1.247 9.019-6.431 15.146-13.024 19.668-5.91-5.017-12.626-10.058-20.822-9.821-13.283-1.439-23.881 7.749-33.866 15.051-44.019 30.595-87.968 61.283-131.94 91.922-10.644 7.348-26.26 9.587-36.718 0.754-6.923-6.499-14.416-12.434-20.822-19.43-5.133-12.791-9.231-26.119-12.268-39.568 11.28 8.879 20.092 23.506 35.657 24.728 13.589 1.294 24.635-7.844 35.045-15.146 45.715-31.232 91.24-62.696 137.027-93.785z","M383.546 389.363c1.863 12.481 2.003 25.153 3.084 37.731 0.236 5.133 1.226 10.575-0.777 15.497-2.566 5.040-7.42 8.243-11.776 11.565-45.763 33.727-91.122 68.017-137.048 101.532-6.784-6.24-17.029-12.035-16.627-22.564-0.236-12.93 12.884-19.43 21.763-26.213 43.806-31.771 87.472-63.732 131.112-95.74 7.208-4.595 13.097-12.905 10.27-21.81z","M681.693 436.61c0.823-14.085 2.66-28.097 3.959-42.135 0.378 4.498 2.825 8.196 6.691 10.481 65.993 47.812 132.267 95.221 198.261 143.008 5.299 4.476 12.837 7.183 19.523 4.17 4.806-2.968 8.692-7.135 12.858-10.903 23.881-22.354 48.421-43.997 72.234-66.418 8.642-7.844 17.898-15.098 25.365-24.165-4.854 14.131-8.056 28.921-13.919 42.631-33.634 32.336-68.489 63.401-102.57 95.29-5.159 5.438-14.131 5.299-19.9 0.968-66.227-48.354-132.292-96.942-198.519-145.27-2.447-1.672-4.544-4.522-3.979-7.653z","M531.761 467.651c6.431-5.086 14.25-9.163 22.704-8.289 12.671 0.048 21.572 9.987 31.232 16.698 7.441 5.418 16.77 11.492 16.677 21.903-0.186 9.68-9.019 15.191-15.544 20.867-5.418-4.522-10.835-9.045-16.557-13.164-7.538-5.749-17.83-6.691-26.804-4.45-7.725 2.189-13.614 7.983-19.689 12.905-42.89 34.15-85.92 68.162-128.758 102.38-9.257 7.115-22.658 8.15-33.116 3.156-8.642-5.18-15.239-13.024-23.176-19.15-5.7-4.027-9.49-10.458-9.49-17.52-0.331-9.846-3.674-19.642-2.686-29.441 5.511 7.135 13.002 12.268 19.689 18.205 4.734 4.052 9.49 8.502 15.569 10.458 10.481 3.462 22.399 0.988 31.021-5.794 46.373-36.174 92.559-72.565 138.932-108.765z","M718.457 508.657c3.084 4.334-0.093 10.080-0.212 14.98-2.334 9.469 0.025 21.386-8.362 28.309-43.407 37.141-86.836 74.283-130.313 111.352-10.903-7.276-14.368-24.189-4.052-33.491 47.412-40.629 95.715-80.289 142.936-121.153z","M101.935 542.192c8.432 9.091 18.136 16.863 27.083 25.39 32.407 29.604 64.721 59.282 97.2 88.791 8.010 7.89 16.816 17.241 29.017 17.050 18.677 1.341 30.994-14.887 44.985-24.449 8.526-5.629 12.671-15.756 9.894-25.696 2.592 2.168 1.32 6.313 2.049 9.211 0.657 12.553 3.674 24.848 4.498 37.379-1.247 11.565-11.799 18.205-20.066 24.848-10.126 7.606-20.303 18.205-34.174 16.677-9.94 0.447-17.31-6.737-24.092-12.884-38.272-35.516-76.731-70.821-115.051-106.266-5.040-4.756-11.353-9.231-12.646-16.532-2.991-11.139-5.935-22.302-8.692-33.514z","M847.665 610.425c4.806 0.141 0.352 6.949 0.447 9.728-3.415 9.728-2.308 21.738-10.151 29.441-64.509 59.494-128.852 119.103-193.433 178.479-7.394 7.467-18.747 9.562-28.732 7.183-11.471-3.132-19.006-13.050-28.168-19.927-41.592-36.106-83.399-71.929-125.038-107.938-6.618-5.961-15.522-11.446-16.77-21.033-1.107-13.376-1.107-26.804-2.142-40.158 0.093-2.944-1.2-6.644 1.602-8.74 0.683 6.877-2.52 15.214 3.202 20.609 7.797 8.715 17.686 15.166 26.26 23.056 43.475 37.354 87.332 74.329 130.901 111.611 8.998 7.374 21.717 8.74 32.618 5.438 8.103-2.805 13.659-9.655 19.879-15.146 63.356-57.347 125.886-115.642 189.521-172.611z","M301.373 736.075c-1.294-10.856-5.277-22.022-1.812-32.832-1.909 7.441-2.354 16.512 3.581 22.354 8.879 9.185 18.607 17.475 28.028 26.095 45.55 41.663 90.981 83.468 136.623 125.013 8.62 7.89 16.791 16.32 26.26 23.197 13.143 8.785 31.678 5.583 42.346-5.676 11.896-11.492 25.153-21.691 35.94-34.198-0.543 11.212-0.73 22.492-2.003 33.654-0.259 3.508-3.229 5.769-5.49 8.077-10.67 9.749-21.198 19.642-31.915 29.344-11.305 10.644-31.253 11.374-42.301-0.141-60.39-54.761-119.761-110.623-179.938-165.617-8.382-7.348-7.089-19.36-9.325-29.276z","M226.81 280.67c8.998-3.016 19.502-1.65 27.108 4.145 37.354 29.369 74.801 58.62 112.201 87.943 6.147 5.112 13.826 9.115 17.427 16.605 2.825 8.905-3.063 17.215-10.27 21.81-43.64 32.009-87.307 63.966-131.112 95.74-2.049-3.415-4.17-6.784-6.358-10.080-18.866 2.944-37.991 0.447-56.924 1.79-0.73 2.825-1.439 5.676-2.142 8.502-17.287 0.73-34.973 2.075-52.074-1.226 43.736-32.030 88.719-62.388 132.551-94.328 6.593-4.522 14.271-10.644 13.024-19.668-2.52-11.28-14.627-15.782-22.068-23.362-10.481-10.317-27.957-10.903-39.661-2.261-45.784 31.087-91.311 62.553-137.027 93.785-10.41 7.301-21.458 16.439-35.045 15.146-15.569-1.226-24.377-15.85-35.657-24.728-6.902-9.325-0.754-21.857 8.315-27.036 65.993-43.831 132.008-87.612 198.049-131.397 6.22-4.31 12.367-9.045 19.668-11.374z","M796.719 304.225c11.021-5.889 24.894-3.601 34.787 3.581 59.8 40.060 119.905 79.7 179.749 119.667 7.467 4.709 13.164 14.416 9.325 23.176-7.467 9.065-16.723 16.32-25.365 24.165-23.813 22.421-48.354 44.065-72.234 66.418-4.17 3.768-8.056 7.938-12.858 10.903-6.691 3.016-14.226 0.305-19.523-4.17-65.993-47.785-132.267-95.197-198.261-143.008-3.861-2.285-6.313-5.982-6.691-10.481 1.18-2.805 3.39-4.993 5.7-6.877 35.352-27.507 69.786-56.193 105.371-83.373z","M519.772 387.903c7.348-5.345 14.059-12.057 22.938-14.788 9.376-2.545 19.972-0.895 27.744 5.086 47.459 34.907 94.748 70.020 142.279 104.852 7.844 5.345 10.151 15.685 7.042 24.423-0.331 0.284-0.988 0.895-1.32 1.18-47.222 40.862-95.528 80.523-142.936 121.153-10.317 9.304-6.856 26.213 4.052 33.491 9.469 6.902 17.784 15.425 27.931 21.361 11.187 6.22 25.743 4.284 35.233-4.145 46.187-40.226 92.136-80.715 138.248-120.986 12.719-8.998 30.76-5.604 41.663 4.734 9.821 8.642 24.351 13.685 29.085 26.824 2.52 6.028 0.166 12.412-2.189 18.064-0.471 0.305-1.413 0.942-1.883 1.273-63.639 56.975-126.166 115.264-189.521 172.611-6.22 5.49-11.776 12.341-19.879 15.146-10.903 3.297-23.621 1.93-32.618-5.438-43.574-37.282-87.425-74.259-130.901-111.611-8.574-7.89-18.467-14.343-26.26-23.056-5.723-5.393-2.52-13.732-3.202-20.609 3.25-8.362 11.73-12.951 18.302-18.535 40.981-33.491 82.244-66.63 123.247-100.098 6.524-5.676 15.357-11.187 15.544-20.867 0.093-10.41-9.231-16.486-16.677-21.903-9.655-6.711-18.561-16.65-31.232-16.698-8.455-0.87-16.273 3.202-22.704 8.289-46.373 36.2-92.559 72.586-138.932 108.765-8.62 6.784-20.536 9.257-31.021 5.794-6.075-1.956-10.835-6.406-15.569-10.458-6.691-5.935-14.178-11.069-19.689-18.205-3.959-8.548-0.802-19.17 6.618-24.753 62.201-46.94 124.402-93.903 186.603-140.888z"],"attrs":[],"grid":14,"tags":["pcsx2"],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":553,"id":6,"name":"pcsx2","prevSize":32,"code":59671,"codes":[59671]},"setIdx":0,"setId":1,"iconIdx":2},{"icon":{"paths":["M569.88 31.6l58.52 257.4-124.52 200.2-198.44-126.5-58.52-257.4z","M26.7 454l257.4-58.52 200.2 124.52-126.5 198.44-257.4 58.52z","M451.080 998.94l-58.52-257.4 124.52-200.2 198.44 126.5 58.52 257.4z","M998.88 575l-257.4 58.52-200.2-124.52 126.5-198.44 257.4-58.52z","M544.88 75.2l44.88 196.68-99.66 155.32-156.64-97.020-44.88-196.68z","M69.68 480l196.68-44.88 155.32 99.66-97.020 156.64-196.68 44.88z","M476.68 956.014l-44.88-196.68 99.66-155.32 156.64 97.020 44.88 196.68z","M956.28 550.4l-196.68 44.88-155.32-99.66 97.020-156.64 196.68-44.88z"],"attrs":[{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":14,"tags":["ppsspp"],"colorPermutations":{"182216551466337194108831":[{},{},{},{},{},{},{},{}]}},"attrs":[{},{},{},{},{},{},{},{}],"properties":{"order":552,"id":5,"name":"ppsspp","prevSize":32,"code":59670},"setIdx":0,"setId":1,"iconIdx":3},{"icon":{"paths":["M116.44 12.983c181.952 89.899 362.289 204.561 560.929 244.397 206.137-75.692 382.575-161.646 548.692-262.864l-13.603 7.701c-102.281 157.189-285.848 255.163-370.364 419.351 140.577 224.882 296.273 419.945 471.588 595.402l-0.021-0.021c-240.629-126.505-446.805-306.304-655.673-478.027-191.889 181.219-407.1 341.215-639.741 474.2l-16.47 8.672c136.905-139.352 265.013-288.628 382.671-446.164l8.149-11.407c34.991-54.37 105.511-115.2 79.133-186.797-118.43-121.122-244.935-234.707-355.291-364.442z"],"attrs":[],"width":1315,"grid":14,"tags":["ogxbox"],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":521,"id":4,"name":"ogxbox","prevSize":32,"code":59669},"setIdx":0,"setId":1,"iconIdx":4},{"icon":{"paths":["M175.019 897.408c89.984 78.848 208 126.592 336.981 126.592 129.109 0 246.997-47.744 337.152-126.592 80.085-81.579-184.149-371.584-337.152-487.125-152.832 115.541-417.237 405.547-336.981 487.125zM651.179 282.752c106.667 126.336 319.317 440.021 259.243 550.912 70.997-87.851 113.579-199.595 113.579-321.493 0-142.507-58.24-271.445-152.32-364.203 0 0-1.152-0.939-3.499-1.792-2.688-0.939-6.485-1.92-11.989-1.92-25.259 0-84.693 18.517-205.013 138.496zM155.904 146.176c-2.432 0.853-3.499 1.749-3.669 1.792-93.995 92.757-152.235 221.696-152.235 364.203 0 121.771 42.581 233.515 113.536 321.408-59.776-111.147 152.704-424.576 259.413-550.827-120.32-120.021-179.883-138.453-205.056-138.453-5.589 0-9.515 0.896-11.989 1.963v-0.085zM512 151.509s-125.653-73.515-223.787-77.013c-38.528-1.408-62.037 12.587-64.896 14.464 91.52-61.397 188.8-88.96 288-88.96h0.683c99.584 0 196.48 27.563 288.683 88.96-2.901-1.963-26.24-15.872-64.853-14.464-98.133 3.499-223.829 76.757-223.829 76.757v0.256z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["xbox"],"grid":14,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":522,"id":0,"prevSize":32,"code":59665,"name":"xbox"},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M383.36 110.763v748.715l167.040 53.803v-627.925c0-29.44 12.971-49.109 33.877-42.283 27.136 7.723 32.427 34.731 32.427 64.213v250.709c104.149 50.901 186.112-0.085 186.112-134.528 0-138.112-48.043-199.467-189.355-248.619-55.765-19.115-159.061-50.603-230.016-64.085h-0.085zM582.016 803.755l268.629-97.067c30.507-11.008 35.243-26.667 10.496-34.901-25.003-8.192-69.845-5.931-100.565 5.248l-179.413 63.957v-101.76l10.24-3.627s51.243-17.92 124.288-26.24c72.363-7.68 161.493 1.237 231.979 28.203 78.848 25.643 87.083 62.805 67.243 88.405s-69.205 44.203-69.205 44.203l-364.544 132.565v-98.005l0.853-0.981zM77.141 793.6c-81.067-23.253-94.464-71.168-57.685-99.029 34.176-24.96 92.117-44.843 92.117-44.843l239.616-85.888v98.688l-171.733 62.805c-30.080 11.563-35.2 26.965-10.197 35.243 25.003 8.32 69.845 6.4 99.968-5.12l82.688-30.123v88.491c-5.163 1.237-10.923 1.877-16.683 3.115-82.688 14.123-170.453 8.363-257.579-20.437l-0.512-2.901z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["playstation"],"grid":14,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":523,"id":1,"prevSize":32,"code":59664,"name":"playstation"},"setIdx":0,"setId":1,"iconIdx":6},{"icon":{"paths":["M982.775 14.748h-892.131c-20.919 0-39.968 8.516-53.677 22.236-13.719 13.7-22.244 32.759-22.236 53.677v842.707c-0.007 20.937 8.516 39.987 22.236 53.696 13.709 13.719 32.759 22.244 53.677 22.236h892.131c20.927 0.007 39.977-8.516 53.677-22.236 13.719-13.709 22.244-32.759 22.244-53.696v-842.707c0-20.919-8.526-39.977-22.244-53.677-13.7-13.719-32.749-22.236-53.677-22.236v22.189c14.87 0.007 28.229 6.003 37.998 15.735 9.741 9.768 15.726 23.128 15.735 37.988v842.707c-0.007 14.888-5.994 28.247-15.735 37.998-9.768 9.741-23.128 15.735-37.998 15.735h-892.131c-14.87 0-28.229-5.994-37.988-15.735-9.741-9.751-15.726-23.11-15.735-37.998v-842.707c0.007-14.86 5.994-28.219 15.735-37.988 9.76-9.732 23.128-15.726 37.988-15.735h892.131v-22.189z","M534.058 650.112h-85.164c-9.327 0-16.812 7.531-16.812 16.876v84.936c0 9.29 7.486 16.923 16.812 16.923l0.184-0.102v0.102h84.786v-0.102l0.194 0.102c9.29 0 16.775-7.633 16.775-16.923v-84.936c0-9.345-7.486-16.876-16.775-16.876zM579.946 255.96h-86.402c-9.484 0-17.080 7.67-17.080 17.116v86.25c0 9.465 7.596 17.153 17.080 17.153h86.402c9.511 0 16.913-7.688 16.913-17.153v-86.25c0-9.447-7.403-17.116-16.913-17.116zM935.483 492.617v-249.534c0-24.555-19.961-44.498-44.47-44.498h-146.297c-24.601 0-44.498 19.942-44.498 44.498v146.275c0 24.583 19.896 44.47 44.498 44.47h98.928v-57.351h-69.016c-9.354 0-16.996-7.688-16.996-17.153v-86.241c0-9.446 7.642-17.125 16.996-17.125h86.449c9.502 0 17.116 7.679 17.116 17.125v189.54c0 9.428-7.615 17.134-17.116 17.134h-160.854v57.37h190.801c24.509 0 44.47-19.86 44.47-44.507zM935.33 825.362v-231.761h-238.862c-24.26 0-43.844 19.63-43.844 43.724v188.186h56.523v-158.512c0-9.345 7.476-16.876 16.831-16.876h39.747v175.237h56.532v-158.364c0-9.345 7.458-16.876 16.812-16.876h39.719v175.237h56.54zM609.876 433.833h-146.349c-24.556 0-44.443-19.887-44.443-44.47v-146.275c0-24.556 19.887-44.498 44.443-44.498h146.349c24.509 0 44.452 19.943 44.452 44.498v146.275c0 24.583-19.943 44.47-44.452 44.47zM607.354 781.538c0 24.196-19.63 43.817-43.817 43.817h-144.139c-24.279 0-43.854-19.621-43.854-43.817v-144.22c0-24.095 19.574-43.724 43.854-43.724h144.139c24.187 0 43.817 19.63 43.817 43.724v144.22zM373.197 492.617v-249.534c0-24.555-19.943-44.498-44.507-44.498h-146.29c-24.592 0-44.47 19.942-44.47 44.498v146.275c0 24.583 19.878 44.47 44.47 44.47h98.987v-57.351h-69.063c-9.447 0-17.043-7.688-17.043-17.153v-86.241c0-9.446 7.596-17.125 17.043-17.125h86.444c9.474 0 17.060 7.679 17.060 17.125v189.54c0 9.428-7.587 17.134-17.060 17.134h-160.841v57.37h190.764c24.565 0 44.507-19.86 44.507-44.507zM330.291 650.11v-56.523h-148.337c-24.251 0-43.881 19.63-43.881 43.724v144.22c0 24.196 19.63 43.817 43.881 43.817l148.337 0.147v-56.587h-118.857c-9.337 0-16.822-7.642-16.822-16.941l0.037-0.044h-0.037v-84.816h0.037l-0.037-0.12c0-9.345 7.486-16.876 16.822-16.876h118.851z"],"width":1073,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["gog"],"grid":14,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":524,"id":2,"name":"gog","prevSize":32,"code":59649},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M511.068 0.606c-39.058 0-78.116 5.095-113.778 11.887-67.927 15.284-139.25 49.247-200.385 95.098-25.473 18.68-74.72 67.927-95.098 95.098-144.345 193.592-137.552 455.111 16.982 640.212 81.512 98.494 208.876 164.723 336.239 178.308 78.116 8.491 161.327-1.698 232.65-28.869 159.629-59.436 283.595-200.385 320.955-365.108 16.982-78.116 16.982-159.629-1.698-234.348-49.247-205.479-222.461-360.013-431.337-387.184-16.982-5.095-40.756-5.095-64.531-5.095v0zM482.199 117.78l11.887 3.396c10.189 1.698 18.68 5.095 25.473 8.491 0 0 11.887-1.698 15.284-3.396 0 0 0-1.698 1.698-1.698s1.698 1.698 6.793 1.698c6.793-1.698 28.869-6.793 28.869-6.793v1.698l-1.698 1.698-18.68 6.793 1.698 1.698-3.396 1.698v1.698l-1.698-1.698-5.095 1.698v1.698h-1.698l-3.396-1.698-1.698 1.698 22.076 5.095 20.378-10.189 6.793 1.698-5.095 10.189 5.095-1.698 3.396 1.698-8.491 5.095v3.396h-3.396l-1.698 3.396h-3.396l-3.396-3.396-23.774-1.698-10.189-3.396h-8.491v5.095h-1.698l5.095 5.095h3.396c0 1.698-1.698 1.698-1.698 1.698l-3.396-1.698-1.698-1.698h-1.698c-1.698 0-3.396-1.698-3.396-1.698v1.698c0 0-3.396 0-5.095 0-3.396 0-5.095 0-6.793 0-1.698-1.698 0-3.396 0-5.095h5.095l-3.396-1.698-1.698 1.698h-3.396c-1.698 0-5.095 0-8.491-1.698 0-1.698 0-3.396 1.698-3.396h6.793l-3.396-3.396-5.095-3.396c-5.095-1.698-8.491-1.698-11.887-3.396-5.095 0-6.793-3.396-10.189-3.396l-3.396-3.396c-1.698-1.698-1.698-3.396 1.698-3.396 1.698 0 1.698 0 5.095-1.698l3.396-5.095zM356.534 170.424h93.4v139.25c3.396 0 11.887 0 16.982 0 0-10.189 0-56.040 0-69.625 5.095 0 11.887 0 11.887 0v-10.189h57.738l3.396 69.625 22.076-1.698-1.698-96.796c0 0 96.796-22.076 108.683-13.585v135.854c10.189 0 5.095-1.698 8.491 0 0 6.793 1.698 88.305 1.698 96.796 6.793 0 11.887 0 11.887 0v-149.439h20.378c0-8.491 3.396-16.982 3.396-16.982s18.68-6.793 22.076-6.793h57.738c1.698 0 1.698 129.061 1.698 144.345 1.698 0 10.189 28.869 16.982 28.869 0-10.189 0-57.738 0-71.323 5.095 0 3.396-1.698 13.585-1.698 0-5.095 0-1.698 0-8.491 0 0 11.887 0 20.378 0 1.698 0 0-27.171 0-42.454h15.284c1.698 0 1.698 42.454 1.698 42.454 5.095 0 13.585 0 13.585 0 3.396 0 0 10.189 1.698 10.189 3.396 0 32.265 1.698 32.265 1.698l1.698 122.269 16.982 1.698-1.698-37.36c3.396 0 11.887 0 20.378-1.698 3.396 23.774 8.491 49.247 8.491 74.72 0 30.567-3.396 61.134-8.491 90.003s-15.284 57.738-25.473 83.211c-11.887 27.171-25.473 52.643-40.756 76.418s-33.964 45.851-54.342 66.229c-20.378 20.378-42.454 39.058-66.229 54.342s-49.247 30.567-76.418 40.756c-27.171 11.887-54.342 20.378-83.211 25.473s-59.436 8.491-90.003 8.491-61.134-3.396-90.003-8.491c-28.869-5.095-57.738-15.284-83.211-25.473-27.171-11.887-52.643-25.473-76.418-40.756s-45.851-33.964-66.229-54.342c-20.378-20.378-39.058-42.454-54.342-66.229s-30.567-49.247-40.756-76.418c-11.887-27.171-20.378-54.342-25.473-83.211s-8.491-59.436-8.491-90.003c0-8.491 1.698-15.284 1.698-23.774h3.396v-23.774h22.076v27.171h10.189v15.284h5.095c0 0 0-79.814 0-151.138 0-10.189 42.454 0 61.134-1.698 16.982 0 33.964 20.378 39.058 20.378 0 15.284 1.698 30.567 1.698 42.454h13.585c0 0 3.396-78.116 1.698-146.043 5.095 0 10.189 0 16.982 0 0-6.793 8.491-11.887 8.491-16.982h16.982v-3.396h5.095c0-11.887 0-42.454 0-49.247h13.585c1.698 0 0 37.36 1.698 49.247 1.698 0 3.396 0 5.095 0 0 3.396 0 1.698 0 5.095h28.869v15.284h6.793c0 67.927 1.698 154.534 1.698 164.723 5.095 0 11.887 0 16.982 0 0-8.491 0-11.887 1.698-15.284 3.396-1.698 10.189-3.396 10.189-3.396l-5.095-244.537zM735.227 177.217c16.982 0 52.643 5.095 67.927 10.189-33.964-1.698-27.171-1.698-28.869 0 6.793 0 13.585 3.396 16.982 5.095 10.189 5.095-1.698 8.491-8.491 10.189 0 0 3.396 3.396 1.698 3.396-5.095 0-20.378-1.698-23.774-1.698-1.698 0 1.698-3.396 0-3.396-5.095 0-8.491-1.698-8.491-3.396l-5.095-5.095-10.189-3.396c0 3.396-8.491 3.396-10.189 0 0-6.793 5.095-5.095 8.491-3.396l28.869 3.396c1.698-5.095-11.887-8.491-28.869-11.887v0zM156.149 292.692c13.585 0 27.171 0 27.171 1.698s-18.68 1.698-20.378 3.396l23.774-1.698c1.698-1.698 5.095-1.698 5.095 1.698s-5.095 3.396-6.793 1.698l-13.585 1.698-6.793 6.793c0 0-1.698 0-3.396 0 0 0 1.698 3.396 0 3.396-3.396 0-11.887 0-15.284 0 0 0 1.698-1.698 1.698-1.698-1.698 0-3.396 0-3.396-1.698s-5.095 0 0-5.095l8.491-3.396c-5.095-1.698-22.076-1.698-22.076-3.396-1.698-3.396 11.887-3.396 25.473-3.396v0zM488.991 365.714c-8.491 0-18.68 0-28.869 1.698-10.189 15.284-28.869 15.284-47.549 11.887 0 0 0 0 0 0 16.982 11.887 37.36 27.171 37.36 27.171-6.793 35.662 3.396 73.022 30.567 108.683-3.396 18.68-11.887 33.964-27.171 49.247l-67.927 13.585-62.833 125.665c0-23.774-3.396-35.662-3.396-57.738h10.189v-35.662h-11.887l-45.851-113.778c-5.095-5.095-10.189 1.698-15.284-1.698l-15.284-39.058-22.076 10.189 11.887 33.964c-3.396 0-5.095 0-8.491 1.698 0 28.869 15.284 71.323 15.284 71.323s-10.189 22.076-11.887 33.964l6.793 27.171-30.567 62.833 22.076 10.189c11.887-22.076 23.774-28.869 37.36-49.247 0 1.698-8.491 18.68-10.189 23.774 1.698 6.793 1.698 5.095 1.698 11.887 0 10.189 1.698 15.284 0 25.473 3.396 6.793 11.887 5.095 13.585 10.189 1.698 3.396 3.396-10.189 5.095-6.793s1.698 22.076 1.698 25.473c6.793 20.378 11.887 44.153 23.774 57.738 15.284 1.698 22.076 11.887 35.662 5.095 11.887-5.095 28.869-27.171 37.36-35.662l47.549-40.756-6.793-27.171 16.982 22.076c10.189 10.189 20.378 20.378 27.171 27.171 8.491 25.473 28.869 39.058 23.774 62.833v25.473c1.698 0 25.473 39.058 40.756 59.436 23.774 0 47.549-1.698 69.625-6.793 25.473-5.095 49.247-13.585 73.022-22.076 23.774-10.189 45.851-22.076 66.229-35.662 1.698-1.698 3.396-3.396 5.095-3.396 3.396-6.793 5.095-13.585 8.491-22.076l-15.284-71.323c5.095-30.567-3.396-67.927-6.793-98.494-16.982-8.491-39.058-16.982-40.756-23.774 15.284 0 86.607 8.491 100.192 10.189s23.774 11.887 28.869 16.982c3.396 3.396 5.095 10.189 8.491 16.982 1.698 5.095 13.585 35.662 22.076 61.134 11.887-18.68 23.774-39.058 32.265-59.436 0 0 0 0 0-1.698-5.095-20.378-8.491-40.756-13.585-57.738s-11.887-16.982-15.284-27.171c-18.68-10.189-3.396-6.793-69.625-30.567l-37.36-15.284-122.269-16.982c-3.396-5.095-8.491-10.189-11.887-15.284-6.793-8.491-10.189-18.68-8.491-27.171h-16.982c-3.396-6.793 0 3.396-1.698 0 10.189-62.833 0-105.287-25.473-105.287-10.189-3.396-22.076-5.095-37.36-5.095-5.095 1.698-13.585 1.698-22.076 1.698v0z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["gtaforums"],"grid":14,"colorPermutations":{"182216551466337194108831":[]}},"attrs":[],"properties":{"order":525,"id":3,"name":"gtaforums","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":8},{"icon":{"paths":["M768 320l-512 512-256-256 96-96 160 160 416-416 96 96z"],"width":768,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["octiconcheck"],"grid":14},"attrs":[{}],"properties":{"order":536,"id":0,"name":"octiconcheck","prevSize":32,"code":59666},"setIdx":0,"setId":1,"iconIdx":19},{"icon":{"paths":["M403.2 364.16c-11.084-10.938-17.949-26.127-17.949-42.919 0-0.661 0.011-1.32 0.032-1.976l-0.002 0.096c0-17.92 5.76-33.28 17.92-44.8s26.88-17.92 44.8-17.92c17.92 0 33.28 5.76 44.8 17.92s17.92 26.88 17.92 44.8c0 17.92-5.76 33.28-17.92 44.8-11.418 11.645-27.232 18.942-44.752 19.199l-0.048 0.001c-17.92 0-33.28-7.040-44.8-19.2zM512 511.36c-1.28-16-7.040-30.72-19.84-44.16-12.8-12.16-26.88-19.2-44.16-19.84h-64c-17.28 1.28-30.72 8.32-44.16 19.84-12.8 12.8-19.2 28.16-19.84 44.16h64v192c1.28 17.28 7.040 32 19.84 44.16 12.8 12.8 26.88 19.84 44.16 19.84h64c17.28 0 30.72-7.040 44.16-19.84 12.8-12.16 19.2-26.88 19.84-44.16h-64v-192zM448 147.2c-200.96 0-364.8 162.56-364.8 363.52s163.84 364.8 364.8 364.8 364.8-163.2 364.8-364.8c0-201.6-163.84-364.16-364.8-364.16v0.64zM448 62.72c247.040 0 448 200.96 448 448s-200.96 448-448 448-448-199.68-448-448 200.96-448 448-448z"],"width":896,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["octiconinfo"],"grid":14},"attrs":[{}],"properties":{"order":537,"id":1,"name":"octiconinfo","prevSize":32,"code":59667},"setIdx":0,"setId":1,"iconIdx":20},{"icon":{"paths":["M478.72 512l240 240-94.72 94.72-240-240-240 240-94.72-94.72 240-240-240-240 94.72-94.72 240 240 240-240 94.72 94.72-240 240z"],"width":768,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"tags":["octiconx"],"grid":14},"attrs":[{}],"properties":{"order":538,"id":2,"name":"octiconx","prevSize":32,"code":59668},"setIdx":0,"setId":1,"iconIdx":21},{"icon":{"paths":["M762.922 438.585c15.868 76.165 6.982 157.197-24.965 228.073-67.702 144.714-181.95 267.213-321.587 344.86-4.443 2.116-11.002 2.116-14.175-2.327-3.597-4.655-2.116-11.425 1.481-15.656 18.83-26.235 31.947-56.489 39.14-88.013 1.269-6.559 3.174-13.117 2.75-19.888-2.327-2.962-6.136-2.116-9.309-1.904-67.914 6.77-137.732-5.289-198.876-35.332-65.587-31.736-121.441-83.359-158.255-146.195-34.063-57.759-52.046-125.25-50.777-192.317 0.212-61.567 17.137-122.711 46.757-176.661 68.76-132.655 176.873-244.364 307.623-316.509 5.501-2.962 13.54-0.846 15.445 5.501 2.116 5.289-1.481 9.944-4.443 13.964-20.311 28.985-33.851 62.413-40.198 97.111-3.808 1.693-5.078 5.712-3.808 9.521 1.904 0.635 3.808 1.269 5.712 1.904 39.564-3.385 79.55-2.75 118.479 5.501 70.876 14.175 137.098 50.142 187.874 101.342 50.988 50.988 86.744 116.787 101.131 187.028zM538.023 556.43c18.407-56.701-3.597-123.134-51.623-158.255-30.255-23.061-69.818-33.217-107.266-27.716-40.41 5.501-77.646 29.197-100.073 62.836-15.233 23.273-24.542 50.777-24.331 78.704-1.058 37.448 13.752 74.896 39.564 101.765 22.638 24.331 53.95 40.198 86.744 44.43 33.428 4.443 68.337-3.385 96.688-21.792 28.562-18.407 50.565-47.18 60.298-79.974z"],"width":787,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["origin"],"grid":14},"attrs":[{}],"properties":{"order":539,"id":3,"name":"origin","prevSize":32,"code":59663},"setIdx":0,"setId":1,"iconIdx":22},{"icon":{"paths":["M632.672 267.84l-410.88 0.64-66.88 106.88h410.24l67.52-107.52zM455.072 656.64c-4.8 0-243.2 0.64-259.52 0.64 8-12.48 53.44-83.52 55.68-87.36h168.64l67.84-107.2-387.84 0.32-67.52 106.88h90.56l-122.88 193.92h516.8c9.28-14.4 180.8-288.64 188.8-301.12 7.040 10.56 53.12 83.84 60.8 96h-53.76l-67.2 106.88h189.12c2.88 4.48 58.56 92.16 61.44 96.64h128l-318.72-502.080c-12.48 19.52-247.36 391.68-250.24 396.48z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["ea"],"grid":14},"attrs":[{}],"properties":{"order":540,"id":4,"name":"ea","prevSize":32,"code":59661},"setIdx":0,"setId":1,"iconIdx":23},{"icon":{"paths":["M554.857 710.857v120.571c0 25.714-7.429 38.286-22.286 38.286-8.571 0-17.143-4-25.714-12.571v-172c8.571-8.571 17.143-12.571 25.714-12.571 14.857 0 22.286 13.143 22.286 38.286zM748 711.429v26.286h-51.429v-26.286c0-25.714 8.571-38.857 25.714-38.857s25.714 13.143 25.714 38.857zM196 586.857h61.143v-53.714h-178.286v53.714h60v325.143h57.143v-325.143zM360.571 912h50.857v-282.286h-50.857v216c-11.429 16-22.286 24-32.571 24-6.857 0-10.857-4-12-12-0.571-1.714-0.571-8-0.571-20v-208h-50.857v223.429c0 20 1.714 33.143 4.571 41.714 4.571 14.286 16.571 21.143 33.143 21.143 18.286 0 37.714-11.429 58.286-34.857v30.857zM605.714 827.429v-112.571c0-26.286-1.143-45.143-5.143-56.571-6.286-21.143-20.571-32-40.571-32-18.857 0-36.571 10.286-53.143 30.857v-124h-50.857v378.857h50.857v-27.429c17.143 21.143 34.857 31.429 53.143 31.429 20 0 34.286-10.857 40.571-31.429 4-12 5.143-30.857 5.143-57.143zM798.857 821.714v-7.429h-52c0 20.571-0.571 32-1.143 34.857-2.857 13.714-10.286 20.571-22.857 20.571-17.714 0-26.286-13.143-26.286-39.429v-49.714h102.286v-58.857c0-30.286-5.143-52-15.429-66.286-14.857-19.429-34.857-29.143-60.571-29.143-26.286 0-46.286 9.714-61.143 29.143-10.857 14.286-16 36-16 66.286v98.857c0 30.286 5.714 52.571 16.571 66.286 14.857 19.429 34.857 29.143 61.714 29.143s48-10.286 61.714-30.286c6.286-9.143 10.857-19.429 12-30.857 1.143-5.143 1.143-16.571 1.143-33.143zM451.429 300v-120c0-26.286-7.429-39.429-24.571-39.429-16.571 0-24.571 13.143-24.571 39.429v120c0 26.286 8 40 24.571 40 17.143 0 24.571-13.714 24.571-40zM862.286 729.143c0 65.714-0.571 136-14.857 200-10.857 45.143-47.429 78.286-91.429 82.857-105.143 12-211.429 12-317.143 12s-212 0-317.143-12c-44-4.571-81.143-37.714-91.429-82.857-14.857-64-14.857-134.286-14.857-200v0c0-66.286 0.571-136 14.857-200 10.857-45.143 47.429-78.286 92-83.429 104.571-11.429 210.857-11.429 316.571-11.429s212 0 317.143 11.429c44 5.143 81.143 38.286 91.429 83.429 14.857 64 14.857 133.714 14.857 200zM292 0h58.286l-69.143 228v154.857h-57.143v-154.857c-5.143-28-16.571-68-34.857-121.143-12.571-35.429-25.143-71.429-37.143-106.857h60.571l40.571 150.286zM503.429 190.286v100c0 30.286-5.143 53.143-16 67.429-14.286 19.429-34.286 29.143-60.571 29.143-25.714 0-45.714-9.714-60-29.143-10.857-14.857-16-37.143-16-67.429v-100c0-30.286 5.143-52.571 16-66.857 14.286-19.429 34.286-29.143 60-29.143 26.286 0 46.286 9.714 60.571 29.143 10.857 14.286 16 36.571 16 66.857zM694.857 97.714v285.143h-52v-31.429c-20.571 24-40 35.429-58.857 35.429-16.571 0-28.571-6.857-33.714-21.143-2.857-8.571-4.571-22.286-4.571-42.857v-225.143h52v209.714c0 12 0 18.857 0.571 20 1.143 8 5.143 12.571 12 12.571 10.286 0 21.143-8 32.571-24.571v-217.714h52z"],"width":878,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["youtube"],"grid":14},"attrs":[{}],"properties":{"order":541,"id":5,"prevSize":32,"code":59660,"name":"youtube2"},"setIdx":0,"setId":1,"iconIdx":24},{"icon":{"paths":["M591.951 313.187h-443.823c-12.284 0-22.237-9.953-22.237-22.237s9.953-22.237 22.237-22.237h443.823c12.281 0 22.237 9.953 22.237 22.237s-9.956 22.237-22.237 22.237z","M486.014 412.869h-337.885c-12.284 0-22.237-9.953-22.237-22.237s9.953-22.237 22.237-22.237h337.885c12.281 0 22.237 9.953 22.237 22.237s-9.959 22.237-22.237 22.237z","M259.972 711.883h-111.829c-12.284 0-22.237-9.953-22.237-22.237s9.953-22.237 22.237-22.237h111.829c12.281 0 22.237 9.953 22.237 22.237 0 12.281-9.959 22.237-22.237 22.237z","M211.495 811.535h-63.352c-12.284 0-22.237-9.953-22.237-22.237s9.953-22.237 22.237-22.237h63.352c12.281 0 22.237 9.953 22.237 22.237 0 12.281-9.956 22.237-22.237 22.237z","M988.513 103.127l-50.724-37.824c-12.773-9.523-28.478-13.514-44.246-11.205-15.762 2.298-29.685 10.594-39.205 23.364-0.006 0.006-0.012 0.015-0.015 0.021l-125.746 170.425v-169.251c0-12.284-9.953-22.237-22.237-22.237h-92.15v-34.183c0-12.284-9.956-22.237-22.237-22.237-12.284 0-22.237 9.953-22.237 22.237v34.183h-66.486v-34.183c0-12.284-9.953-22.237-22.237-22.237-12.281 0-22.237 9.953-22.237 22.237v34.183h-66.48v-34.183c0-12.284-9.953-22.237-22.237-22.237s-22.237 9.953-22.237 22.237v34.183h-66.477v-34.183c0-12.284-9.956-22.237-22.237-22.237-12.284 0-22.237 9.953-22.237 22.237v34.183h-66.48v-34.183c0-12.284-9.956-22.237-22.237-22.237-12.284 0-22.237 9.953-22.237 22.237v34.183h-92.156c-12.281 0-22.237 9.953-22.237 22.237v923.106c0 12.284 9.956 22.237 22.237 22.237h672.598c12.284 0 22.237-9.953 22.237-22.237v-443.941l272.084-371.211c0.003-0.006 0.009-0.009 0.015-0.015 19.649-26.361 14.196-63.797-12.165-83.454zM684.102 979.535h-628.124v-878.632h69.919v34.177c0 12.284 9.953 22.237 22.237 22.237 12.281 0 22.237-9.953 22.237-22.237v-34.177h66.48v34.177c0 12.284 9.953 22.237 22.237 22.237 12.281 0 22.237-9.953 22.237-22.237v-34.177h66.48v34.177c0 12.284 9.953 22.237 22.237 22.237s22.237-9.953 22.237-22.237v-34.177h66.48v34.177c0 12.284 9.956 22.237 22.237 22.237 12.284 0 22.237-9.953 22.237-22.237v-34.177h66.486v34.177c0 12.284 9.953 22.237 22.237 22.237 12.281 0 22.237-9.953 22.237-22.237v-34.177h69.913v208.038l-115.968 159.123h-420.014c-12.284 0-22.237 9.953-22.237 22.237s9.953 22.237 22.237 22.237h387.578s-126.431 173.488-126.455 173.523h0.012c-1.435 1.995-2.58 4.246-3.306 6.736l-50.849 173.95h-206.995c-12.284 0-22.237 9.953-22.237 22.237s9.953 22.237 22.237 22.237c0 0 223.898-0.018 224.016-0.018 0-0.003-0.003-0.006-0.006-0.006 4.071-0.065 8.136-1.225 11.714-3.537l166.212-107.417c2.286-1.477 4.187-3.318 5.728-5.375 0.053-0.071 128.308-176.020 128.308-176.020v360.686zM439.678 735.997l59.37 44.273-89.153 57.615 29.783-101.887zM533.266 750.309l-75.028-55.946 350.723-481.211 75.028 55.946-350.723 481.211zM910.377 233.282l-75.031-55.946 23.945-32.11 75.028 55.951-23.942 32.104zM965.021 160c-0.006 0.006-0.012 0.015-0.015 0.021l-4.103 5.5-75.028-55.951 4.101-5.497 0.018-0.018c2.419-3.247 5.96-5.358 9.965-5.942 4.012-0.581 7.996 0.433 11.24 2.849l50.727 37.824c6.704 4.996 8.091 14.513 3.095 21.214z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{},{},{},{},{}]},"tags":["notes"],"grid":14},"attrs":[{},{},{},{},{}],"properties":{"order":542,"id":6,"name":"notes","prevSize":32,"code":59659},"setIdx":0,"setId":1,"iconIdx":25},{"icon":{"paths":["M464.3 0.011c-318.011 0-455.333 283.103-455.333 283.103l40.443 28.91c0 0-50.9 96.726-49.362 220.67 0 253.117 201.601 491.625 498.237 491.625 269.571 0 492.086-219.44 492.086-491.009 0-354.302-274.799-533.298-526.071-533.298v0zM467.068 86.433c248.503 0 441.186 200.217 441.186 433.036 0 246.812-185.609 418.273-401.819 418.273-159.159 0-302.787-121.176-302.787-287.409 0-95.957 51.054-162.85 108.105-198.526l8.304 9.073c-15.685 12.302-60.281 83.962-60.281 154.392 0 130.71 102.569 221.285 231.742 221.285 164.541 0 274.338-140.398 274.338-303.248 0-189.607-167.309-350.611-368.757-350.611-111.334 0-205.907 47.978-260.344 90.267l-8.458-7.689c71.352-109.797 194.528-178.842 338.77-178.842v0zM392.948 267.736c128.557 0 254.039 85.039 285.256 205.753l-11.379 4.306c-56.282-74.274-148.395-135.785-257.269-135.785-200.217 0-305.401 181.918-290.023 333.85l-11.841 4.306c0 0-22.144-48.747-22.144-106.721 0.308-167.463 137.938-305.708 307.4-305.708v0zM477.832 478.103c60.896 0 109.489 49.362 109.489 107.798 0 48.44-31.063 77.196-31.063 77.196l36.906 25.835c0 0-36.599 57.359-111.181 57.359-71.352 0-134.401-57.513-134.401-135.016-0-79.81 68.584-133.171 130.249-133.171v0z"],"width":990,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["ubisoft"],"grid":14},"attrs":[{}],"properties":{"order":543,"id":7,"name":"ubisoft","prevSize":32,"code":59657},"setIdx":0,"setId":1,"iconIdx":26},{"icon":{"paths":["M404.451 0h13.781c2.297 2.259 4.613 4.498 6.948 6.718-1.78 8.307-2.373 16.843-4.862 25.016-2.163 7.158-0.44 14.738-1.493 22.030-2.105 7.331-8.307 12.996-9.187 20.748-6.029 41.955-12.269 83.872-19.504 125.636 1.072 0.861 3.196 2.603 4.268 3.464 2.201 12.077-7.981 21.667-5.953 33.744-0.479 0.746-1.455 2.259-1.933 3.005 2.68 2.507 5.359 4.996 8.058 7.465-2.316 15.446-4.383 30.969-7.407 46.3-1.646 12.173-3.292 24.365-5.723 36.405-1.359 11.331-3.751 22.547-4.728 33.936-0.536 1.206-1.608 3.656-2.144 4.881 12.365 0.402 24.767-0.536 37.113 0.402 7.484 2.316 13.188 8.115 19.542 12.46 6.967 4.823 12.384 12.843 10.967 21.667-1.11 11.695 1.837 23.14 1.991 34.778 4.881 10.565 11.274 20.308 17.456 30.127 3.12 4.957 3.35 10.967 4.651 16.518 3.617 12.192 10.527 24.097 8.403 37.247-3.751 22.605-7.962 45.113-12.077 67.641-0.957 3.981-1.723 8.001-2.603 12.001-1.818 8.498-5.244 16.786-4.651 25.629-0.498 7.388 4.173 13.551 6.489 20.25 2.756 7.675 8.364 14.221 15.733 17.8 3.981 0.612 7.905 1.493 11.829 2.393 1.646 1.837 3.292 3.694 4.938 5.551-4.326 10.393-15.331 13.915-24.499 18.681-7.599 3.043-15.829 2.335-23.83 2.393-3.713-0.077-7.637 0.153-10.967-1.818-2.794 0.421-6.795-1.55-8.69 1.206-1.78 4.268-2.756 8.843-4.517 13.13-0.861 1.952-1.742 3.905-2.603 5.857 0.134 5.972 0.88 11.905 1.11 17.877 0.211 4.651-2.507 8.785-2.948 13.36-0.421 5.551 0.479 11.274-1.436 16.652-1.703 7.771-3.311 15.618-4.498 23.504-0.574 12.499 5.283 24.519 3.598 37.055-3.579 5.244 2.105 11.063 0.115 16.709-3.33 11.465-0.153 23.715-4.307 35.065-1.78 5.13-2.354 11.082 0.479 15.982 1.952 7.618-4.307 12.69-7.12 18.911-1.359 10.259 0.823 20.729-1.225 30.95-2.622 11.848 0.364 24.097-1.895 35.984-2.125 10.489-0.708 21.246-1.072 31.868-0.383 0.632-1.148 1.876-1.531 2.507 1.474 4.613 1.684 9.494 1.665 14.317h-388.029c0.919-2.928 1.723-5.895 2.584-8.824 0.593-2.565 1.187-5.11 1.837-7.618 1.857-7.063 3.828-14.087 5.838-21.092 0.976-4.345 2.010-8.651 3.024-12.977 2.527-9.589 5.187-19.14 7.752-28.71 0.651-2.565 1.244-5.11 1.857-7.637 0.9-3.33 1.742-6.68 2.66-9.991 2.182-9.685 5.302-19.121 7.599-28.768 0.651-2.584 1.302-5.149 2.029-7.694 0.345-1.703 0.708-3.388 1.053-5.053 1.34-6.144 2.852-12.307 3.273-18.604-1.589-9.532-1.302-19.829-7.446-27.868-0.077-0.938-0.211-2.794-0.287-3.732-3.541-5.608-9.245-11.044-7.56-18.336 2.431-11.752 5.206-23.447 6.89-35.333 2.488-6.259 4.268-12.747 5.972-19.255 1.225-6.048 2.45-12.097 2.699-18.26 1.627-3.541 4.039-7.024 3.694-11.12 0.172-8.862-6.68-17.532-2.527-26.241 0.153-0.919 0.459-2.756 0.612-3.675 2.086-2.048 4.192-4.077 6.335-6.048 2.393-0.632 5.378-0.708 6.718-3.177 0.9-8.364-0.727-16.882 1.129-25.169 1.55-6.393-0.077-13.494 3.407-19.37 2.948-7.005 9.704-12.575 9.283-20.729 4.689-7.58 11.35-13.743 15.389-21.782-3.924-6.833-5.532-14.795-1.799-22.107 6.067-12.345 11.676-25.055 15.331-38.357 2.89-6.68 7.79-12.288 10.489-19.044 0.88-3.771 0.593-7.694 0.746-11.542 4-3.809 6.967-8.498 9.226-13.513 0.115-0.919 0.345-2.737 0.459-3.637 3.828-7.484 7.618-14.968 11.982-22.145-3.637 0.019-7.273 0.077-10.891 0.287-4.919 2.469-10.527 1.569-15.791 1.646-1.569-1.569-3.139-3.158-4.708-4.708 0-2.622 0-5.244 0-7.847 17.475-17.284 34.797-34.72 52.176-52.1 7.331-7.503 15.446-14.374 21.226-23.217-0.785-0.938-2.354-2.814-3.139-3.751-4.575-1.129-9.226-2.029-13.934-2.469-1.55-1.455-3.101-2.909-4.651-4.364-0.019-1.053-0.077-3.158-0.096-4.23 5.206-5.532 13.245-8.383 16.25-15.81-7.981 0.402-16.633 0.134-22.088-6.623 0.096-0.995 0.287-2.967 0.383-3.943 1.436-1.933 2.871-3.866 4.287-5.799-3.598-1.646-7.139-3.369-10.623-5.225 0.325-4.345 0.938-8.671 2.316-12.805 5.11-3.292 10.393-1.072 15.58 0.67 3.369-0.9 5.57-3.943 8.192-6.087 6.182 4.345 10.604 10.489 14.987 16.518 6.737 0.651 13.379 2.048 20.155 2.354 2.048-4.575 2.603-9.513 2.373-14.47-2.756-3.369-6.776-7.063-5.685-11.886 1.455-2.22 4.268-2.469 6.565-3.216 0.88 1.034 2.622 3.101 3.503 4.134 4 0.9 7.981 1.818 12.020 2.584 2.527-4.364 5.589-8.383 9.149-11.943 1.168-0.038 3.464-0.096 4.613-0.134 3.56 4.441 4.766 9.895 4.498 15.504 2.737-0.019 5.474-0.038 8.211-0.038-1.627-1.608-3.254-3.196-4.9-4.785-0.517-4.364 1.34-7.771 5.378-9.551 0.9-4.785 3.637-8.747 6.469-12.594-1.282-1.703-2.622-3.33-4.019-4.9-1.014-4.919 1.914-8.709 6.91-8.996 3.56 6.565 8.824 13.207 17.188 12.499 0.861-1.014 2.622-3.024 3.484-4.039 7.867 0.134 15.389-2.718 23.274-2.239 2.105-3.158 4.077-6.623 7.254-8.862 5.512-4.249 13.168-0.746 18.911-4.555-0.766-7.254-0.574-14.7 2.259-21.514 5.819-12.556 8.345-26.241 13.283-39.123 1.378-3.407 1.282-7.158 1.569-10.757-2.393 0.88-4.976 1.608-6.565 3.771-7.656 7.465-13.417 16.595-21.322 23.83-5.914 0.172-11.924 0.249-17.628-1.569-1.857 1.876-3.694 3.79-5.493 5.723-4.689-0.23-8.919-2.278-12.939-4.498 0.211 5.876 4.039 10.431 6.029 15.676 0.459 11.809 0.498 23.715 0.019 35.543-2.584 4.364-8.192 2.239-12.326 2.794-1.818-1.971-3.656-3.924-5.474-5.876-3.311 0.019-6.623 0.019-9.934 0.038-1.818-1.914-3.637-3.828-5.417-5.761-0.957 0.038-2.852 0.096-3.809 0.134-5.532 4.804-12.345 8.498-15.255 15.638-4.364-0.038-9.417-1.589-10.412-6.45-0.651-7.618-0.632-15.331 0-22.93 2.431-5.914 7.216-10.642 8.919-16.882 0.651-4.479 0.383-9.034 0.364-13.551-5.799 0.057-11.637 0.364-17.379-0.44-14.049-3.407-25.705 8.058-38.969 10.546-3.905 1.569-7.828 3.101-11.752 4.594-16.001 6.106-30.433 15.752-46.702 21.246-7.292 0.919-14.968 1.091-22.088-0.938-3.369-1.11-7.886-5.436-3.732-8.556 6.221-3.407 12.173-7.273 18.164-11.063 14.183-7.446 30.433-14.432 38.855-28.825 4.517 0.038 9.034 0.057 13.532-0.019 13.551-11.924 32.538-13.762 48.999-19.638 0-0.9 0-2.699 0-3.598-16.193 1.818-31.122 10.929-47.793 9.915-6.795-1.684-10.852 5.417-17.207 5.57-6.489 0.268-12.805 2.239-19.312 2.239-2.565 0.345-5.627-1.474-5.723-4.211-0.172-5.742 2.278-11.235 1.971-16.996-0.498-9.704 2.527-19.121 2.067-28.844-0.325-4.613 3.426-7.905 6.087-11.14 9.513 0.153 16.901-7.331 26.26-7.828 6.24-0.019 11.561-3.369 17.226-5.378 6.087-0.555 12.384-0.153 18.011-2.928 9.36-4.307 19.868-3.617 29.859-2.909 6.584 2.067 12.077 7.235 19.255 7.484 5.895 0.23 10.929 4.651 12.805 10.106 1.493 7.139-1.225 15.159 2.948 21.686 3.101 5.091 5.991 10.355 9.455 15.216 4.613 4.575 11.752 4.383 17.82 4.708 1.493 1.34 3.005 2.66 4.498 4 4.575-6.718 11.867-10.546 18.662-14.623 11.484-9.742 22.834-19.657 33.266-30.586 0-1.991 0-3.962 0.019-5.953 2.833-2.794 5.646-5.608 8.441-8.441 1.072-0.057 3.216-0.211 4.287-0.287 4.096-6.067 8.766-11.867 14.815-16.078 2.928-2.297 6.623-4.326 7.656-8.211 5.053-31.888 10.029-63.833 13.034-96.007 0.268-3.56 2.010-6.756 4.019-9.647zM300.941 329.154c-0.632 2.278-2.354 4.383-2.201 6.814 1.589 1.895 3.407 3.579 5.187 5.321 1.416-3.79 2.603-7.675 2.259-11.752-1.302-0.096-3.924-0.287-5.244-0.383zM323.297 345.5c6.871 5.493 11.312 14.145 9.723 23.064-2.928 4.785-6.489 9.321-11.293 12.365-1.799-0.746-3.579-1.531-5.321-2.354-1.474-5.359-6.967-7.465-10.91-10.719-3.675-3.541-9.149-2.335-13.743-2.125-2.048 1.646-3.024 4.134-4.192 6.393-1.703 4.517-4.842 8.23-7.005 12.518-2.641 0.057-5.283 0.115-7.924 0.153-2.201 1.436-4.632 2.603-6.412 4.575-0.23 5.991 0.536 12.46-3.751 17.341-0.134 0.938-0.421 2.833-0.555 3.79-1.436 2.239-2.029 4.728-1.761 7.484 1.627-1.493 3.235-3.005 4.842-4.517 1.014-0.019 3.043-0.038 4.039-0.057 3.866 3.751 7.637 7.656 10.355 12.345 0.038 3.273 0.077 6.527 0.115 9.819 1.665 2.66 3.503 5.206 5.627 7.541 0.402 5.398 0.536 11.254-3.617 15.37-0.077 2.144-0.153 4.287-0.191 6.45 6.335-0.172 12.365 2.163 18.681 2.297 1.436 4.287 3.617 8.23 6.929 11.331 2.048-0.038 4.096-0.057 6.144-0.077 7.503-7.407 15.025-14.891 20.537-23.964 1.034-1.895 2.086-3.751 3.177-5.589 0.88-8.288-1.569-17.111 1.378-25.035 0.555-1.991 1.282-3.905 2.182-5.742 0.172-0.919 0.517-2.775 0.708-3.713 3.407-9.092 4.058-19.044 3.273-28.71-0.402-0.746-1.225-2.239-1.627-2.986-0.364-9.915 0.057-19.829-0.096-29.744-6.087-6.278-13.838-11.618-16.327-20.461-0.88 4.345-1.876 8.671-2.986 12.958zM201.029 398.25c-0.402 9.187-0.287 18.509 2.125 27.466 2.029-2.22 3.771-4.689 5.072-7.388 1.569-5.933 6.623-10.929 4.192-17.513-2.182-2.163-4.307-4.402-6.661-6.374-2.297-1.034-4.708 1.684-4.728 3.809zM220.036 400.738c0.057 1.397 0.134 4.173 0.172 5.57 3.943-1.436 9.628-4.842 9.206-9.513-3.981-2.335-6.756 1.589-9.379 3.943zM279.16 478.313c1.34 2.105 2.201 4.441 2.622 6.929 1.646 2.010 3.33 4.039 4.019 6.623 0.804 0 2.412 0.038 3.196 0.057 0-2.928 0.019-5.838 0.019-8.747-1.569-1.55-3.12-3.082-4.67-4.632-1.302-0.057-3.885-0.172-5.187-0.23z","M169.391 252.402c2.125 0.153 4.058 0.804 5.819 1.952 4.479 0.23 8.958 0.249 13.456 0.249 7.197 3.981 12.039 10.833 18.183 16.135 0.957 4.632-1.397 9.895-6.871 8.824-1.857-1.302-3.713-2.603-5.57-3.885-8.594-1.493-16.614 2.412-25.131 1.895-3.484-3.503-7.005-6.986-10.546-10.451-2.278-8.077 7.312-9.168 10.661-14.719z","M148.317 262.182c2.259 2.278 4.575 4.517 6.948 6.699-0.038 2.68-0.517 7.101-4.192 6.814-6.221 0.708-10.049-5.704-9.723-11.254 2.756 0.23 5.072-0.517 6.967-2.259z","M167.63 304.329c1.933-2.048 3.885-4.096 5.819-6.144 2.010 2.22 3.809 4.613 5.225 7.254 1.665 1.608 3.771 3.235 3.196 5.895-2.546 2.029-5.838 2.335-8.938 2.814-2.105 2.718-4.402 5.321-7.12 7.465-1.053-0.019-3.158-0.077-4.211-0.115-5.436-4.039-11.082-7.847-16.346-12.097 0.268-3.139-0.555-7.101 2.948-8.747 2.66-0.287 5.359-0.211 8.039-0.249 0.823 0.976 2.507 2.948 3.33 3.943 2.699-0.019 5.378-0.019 8.058-0.019z"],"width":509,"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{},{},{},{}]},"tags":["mafia-1-hero"],"grid":14},"attrs":[{},{},{},{}],"properties":{"order":544,"id":8,"name":"mafia-1-hero","prevSize":32,"code":59658},"setIdx":0,"setId":1,"iconIdx":27},{"icon":{"paths":["M877.714 512c0 242.286-196.571 438.857-438.857 438.857s-438.857-196.571-438.857-438.857 196.571-438.857 438.857-438.857 438.857 196.571 438.857 438.857z"],"width":878,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["circle"],"grid":14},"attrs":[{}],"properties":{"order":545,"id":9,"prevSize":32,"code":59656,"name":"circle"},"setIdx":0,"setId":1,"iconIdx":28},{"icon":{"paths":["M266.061 12.1c2.719-4.894 7.477-8.157 11.284-12.1 0.136 8.701-0.136 17.538 0 26.375l0.816 1.903 1.36 2.719c2.447 4.215 5.846 7.885 7.613 12.508 1.224 2.311 2.855 4.486 4.079 6.798s2.719 4.486 4.079 6.798c1.224 2.311 2.855 4.486 4.079 6.798s2.855 4.486 4.079 6.798 2.719 4.486 4.079 6.662c1.631 3.807 3.943 7.070 5.982 10.604 2.039 2.991 3.807 6.254 5.438 9.517 2.039 4.894 5.846 8.837 8.157 13.595 2.039 3.807 4.894 6.934 6.798 10.876 1.088 1.903 2.447 3.807 3.535 5.71 2.039 4.215 5.302 7.749 7.341 11.964 2.583 4.622 6.254 8.565 8.157 13.595 1.088 1.903 2.447 3.807 3.671 5.71l1.767 3.807c1.903 3.399 4.351 6.39 6.39 9.789 1.495 3.807 4.079 7.070 5.982 10.604 1.224 2.311 2.855 4.486 4.079 6.662 2.039 5.71 7.070 9.517 9.517 14.955 1.224 3.535 3.671 6.254 5.438 9.517 1.224 3.535 3.671 6.254 5.438 9.517 1.36 4.079 4.758 7.206 6.118 11.284 1.495 2.719 3.263 5.166 4.758 7.749 0.272 0.68 0.952 2.175 1.224 2.855 1.495 2.175 2.855 4.486 4.215 6.798 1.224 2.311 2.855 4.486 4.079 6.798 1.767 3.399 4.351 6.39 6.254 9.789 0.68 1.224 1.224 2.583 1.903 3.807 0.816 1.767 1.767 3.671 2.719 5.438 0.68 1.495 1.36 2.991 2.039 4.486 3.263 5.71 8.701 9.925 11.012 16.314 0.952 1.767 1.767 3.671 2.719 5.438 1.088 2.175 2.175 4.351 3.263 6.526 1.088 1.903 2.447 3.807 3.535 5.71 1.224 2.311 2.855 4.486 4.079 6.798 2.039 4.215 5.302 7.749 7.341 11.964 1.224 2.311 2.855 4.486 4.079 6.798 2.039 3.671 4.622 7.070 6.798 10.604 7.749 5.71 15.771 11.556 21.073 19.713 1.495 2.447 7.206 4.486 4.079 7.749-1.36 2.175-2.039 4.758-1.767 7.477-5.438-1.088-6.798 5.166-4.622 8.973 1.631 2.447 3.671 4.758 5.982 6.662-1.767 2.175-3.807 4.215-5.982 6.118-2.311 0.408-4.894-0.272-6.798 1.224-3.399 0-5.030 3.671-8.429 3.263-1.767 1.767-3.399 3.399-5.030 5.302-2.719 0-5.574 0-8.293 0-2.175-2.311-5.574-0.952-8.293-1.36-3.807-3.671-7.070-8.157-11.828-10.604-1.767-1.224-0.68-3.671-1.088-5.302-1.631-0.68-3.263-1.36-4.758-2.039-1.495-1.224-3.535-0.952-5.302-1.224-1.495-1.631-3.671-1.088-5.574-1.36-2.311-1.36-4.486-2.991-6.798-4.486-2.039-1.088-4.486-0.816-6.798-0.952-1.767-1.088-3.671-2.039-5.438-2.991-4.215-1.36-10.332-2.175-13.595 1.631-6.39 0.408-12.644 0.408-19.033 0.136-1.224-0.952-2.719-1.495-4.215-1.495-3.671-2.311-7.749-4.351-10.604-7.749-1.903 0-3.807-0.272-5.574-0.952-3.535-1.903-5.438-5.574-8.837-7.341-6.934-4.486-10.876-11.964-16.722-17.538l-2.855-0.136c-1.767-2.039-4.758-0.952-7.070-1.224-2.039 5.302-7.206 9.109-11.828 12.1-3.807-1.088-8.429 2.311-5.302 6.254l1.767 2.719c0.136 0.68 0.136 2.175 0.272 2.855 0.816 1.224 1.495 2.583 2.311 3.807 1.36 3.807 2.855 7.613 4.758 11.284 0.68 1.224 1.224 2.583 1.903 3.807 2.311 4.622 7.613 7.206 8.973 12.508 0.68 1.224 1.36 2.447 2.039 3.807 0.68 1.495 1.36 2.855 2.039 4.351l2.039 3.807c0 1.495 0.544 2.991 1.495 4.215l0.272 4.079c3.263 6.118 0.136 13.867 1.224 20.529 4.894 2.447 3.535 8.021 6.254 11.964 2.175 2.719 3.127 7.206 7.070 8.021 0.272 2.039 0.952 4.079 1.903 5.982 1.631 2.311 2.583 5.166 2.583 8.021 1.903 2.311 0.408 5.574 2.039 8.021l1.631 2.583c0.952 2.311 1.767 4.622 2.583 6.934 1.495 2.855 3.127 5.71 4.894 8.429 0.952 1.903 3.671 1.903 4.486 3.807 2.039 4.215 6.662 6.39 8.293 10.876 0.816 1.903 1.767 3.671 2.719 5.438 0.952 2.311 1.631 4.758 2.855 6.934l0.408 2.719c1.224 1.767 1.088 3.943 2.583 5.574-0.136 1.088-0.408 2.311-0.544 3.399-8.157-10.74-11.692-25.423-23.384-33.309-3.807-1.224-5.438-4.758-6.934-8.157-1.224-2.447-2.447-4.758-3.399-7.206-2.447-3.127-3.943-6.662-4.622-10.604-0.816-1.495-1.495-2.855-2.175-4.351-2.719-5.030-5.302-10.061-8.157-14.955-0.816-2.311-2.175-4.894-5.030-5.030-0.136 3.263-0.272 6.662 1.767 9.381 0.952 2.991 2.311 5.71 4.215 8.157 1.903 2.855 2.039 6.118 3.127 9.381 0.952 1.767 1.903 3.535 2.855 5.438 0.408 2.039 1.088 3.943 2.039 5.71 1.088 1.631 0.952 3.535 1.224 5.438 0.816 2.039 2.855 3.535 2.583 5.846l-3.263 0.408 1.903-2.311c-0.952-1.224-2.311-2.039-3.807-2.039-0.816-2.039-1.631-3.943-2.583-5.846-3.671-4.758-5.846-10.196-9.245-15.091-0.272-0.816-0.952-2.583-1.224-3.399h-2.583l-0.136-3.399c-2.175-2.855-0.816-7.070-2.855-10.196h-6.526c0.408 2.855-0.952 6.39 1.224 8.837l0.408 2.719 1.36 3.943c-2.855-1.224-2.855-4.215-4.079-6.662l-0.408-2.719c-0.816-1.224-1.36-2.583-1.495-4.079-0.68-1.224-1.088-2.583-1.088-4.079 2.447-1.903 4.351-4.486 5.438-7.477 2.583-1.767 4.894-3.943 7.070-6.118-1.224-1.088-1.767-2.719-1.631-4.351-2.991-3.671-6.526-6.662-9.245-10.468-2.583-3.127-6.662-4.486-10.468-3.535-1.36 1.903-3.127 3.399-5.166 4.486-1.631-2.719-5.846-2.039-8.293-0.816l-2.719 1.495c-1.495 0.136-2.855 0.68-4.079 1.36-2.991 0-4.758 2.447-6.798 4.215-1.903 0.272-3.671 0.272-5.574 0.408-1.495 1.631-3.807 1.088-5.71 1.36-0.408 1.631-1.36 3.127-2.583 4.351-0.544-2.175-1.903-3.943-3.127-5.71 1.088-3.263 2.991-6.662 6.662-7.341-0.68-3.535 1.631-8.701-1.631-11.148 1.631-1.224 3.535-2.447 5.302-3.399 1.088 1.903 2.311 1.903 3.807 0.136 4.622-0.136 9.245 0 13.867 0-0.544-2.447 5.846-5.166 1.36-5.982 3.127-2.583 6.798-4.351 10.061-6.798-2.447-3.127-5.982-4.758-9.245-6.798-0.408-0.68-1.224-2.175-1.495-2.855-0.136-0.68-0.272-2.039-0.408-2.719-0.952-3.535-3.671-5.982-4.215-9.517-1.224-3.127-1.36-6.526-3.263-9.381 0.816-3.263-0.816-7.749-4.486-8.021 0-0.544 0-1.767 0-2.447-2.039 0.272-4.486-0.544-6.118 1.224l-2.855 0.408c-2.719 1.631-5.438 2.991-8.293 4.215-3.807 2.855-8.293 4.215-12.236 6.934-2.039 0.816-3.943 2.175-5.438 3.807l-3.399-1.767c-0.68-3.399 2.039-4.758 4.622-6.118 1.903-4.622 7.206-6.118 10.74-9.109-0.544-0.952-1.495-2.855-2.039-3.807l-2.855 1.36c-1.36 0.272-2.855 0.68-4.079 1.36-3.399 1.36-6.934 2.583-9.653 5.030-1.36 0.408-2.719 0.816-4.079 0.952-1.088-1.224-2.311-2.311-3.399-3.535 0.136-1.631-0.136-4.079 2.039-4.351 6.118-1.495 10.196-7.206 16.178-9.109-0.544-0.816-1.495-2.311-2.039-2.991 0.68-1.495 1.631-2.719 2.855-3.807l0.136 3.263h3.535c1.495-1.495 2.991-3.127 4.486-4.486-0.408-2.583 0.544-5.302 2.583-6.934 1.224-1.36-3.127-3.671 0.408-3.671-1.36-2.311-2.855-4.622-4.622-6.662-2.311 0.136-4.894-0.272-7.070 0.816-2.583 1.495-4.351 4.215-7.341 5.030-0.272 0.816-0.68 2.311-0.816 3.127-1.088-0.816-2.039-1.631-3.127-2.447-0.136 1.224-0.272 3.807-0.272 5.030-3.263-2.991-2.855-7.477-2.719-11.42h2.311l1.767-3.127c-3.127-3.127-1.903-9.789-7.613-9.381-2.719-2.311-7.070 0.544-9.381-2.311-1.631 0-3.263 0-4.894 0 0.68-1.36 1.36-2.719 1.903-4.079l-2.991-0.136c-0.408-2.175 0.816-5.574-2.039-6.39-2.039-0.544-4.215-1.088-6.254-1.631 1.631-2.039 1.36-4.622 1.495-7.070-4.215 1.224-5.846 5.302-8.701 8.021l-0.952-1.224 1.631-4.215c-2.311 1.903-4.622 3.807-7.749 4.215-0.272-2.175 1.495-7.206-1.495-7.341l0.952-2.719c1.36-2.447 3.263-4.622 4.215-7.206l-3.943-0.136c-1.36 1.495-2.719 2.855-4.079 4.351-1.495-3.943-4.486 0.544-6.254 1.767-3.399-2.583-7.749-1.224-11.692-1.224-0.408-2.991 0.68-6.118 2.855-8.293 2.991-3.399 5.166-7.341 8.565-10.468 0.544-1.088 1.088-2.175 1.631-3.263-1.224-1.631-2.175-3.535-2.991-5.302l-1.224-2.991c-1.903-0.544-4.215-2.991-5.71-0.408-3.127 0.544-6.934-1.088-9.517 1.224-2.311-0.272-4.758 0-6.934 0.544-0.544-1.36-0.952-2.719-1.495-4.079 2.447-2.039 5.982-1.088 8.429-2.991l4.079-0.272c1.36-1.631 3.535-1.088 5.438-1.495 1.224-0.816 2.719-1.36 4.215-1.36 1.495-1.903 3.535-3.399 5.846-4.351 0-0.544 0-1.903 0-2.447-1.631-0.136-3.399 0.272-4.758 1.36l-2.719 0.272c-1.36 1.631-3.671 1.088-5.438 1.36-3.535 2.039-9.381 2.039-12.1-1.36-2.447-0.68-5.030-0.136-7.477-0.272v-2.719l-3.399-0.136c-1.495-1.903-4.079-1.088-6.254-1.36v-3.943c-2.447 0-4.894 0-7.341 0 5.574-5.302 9.381-11.964 13.731-18.218 0.816-1.903 1.767-3.671 2.719-5.438 1.088-2.311 2.311-4.758 3.535-7.070 1.36-2.039 2.175-4.351 2.719-6.798 0.952-1.767 1.903-3.535 2.855-5.438 1.495-2.311-0.136-6.934 3.671-7.477 3.535-0.952 5.574 2.583 8.701 3.671 2.311 1.224 4.486 2.855 6.798 4.079 3.127 1.088 5.71 3.263 8.565 4.894 3.807 1.903 7.070 4.758 10.876 6.798 2.583 1.224 4.622 3.127 7.341 4.215-0.952 2.039-1.767 3.943-2.719 5.982 7.070 5.982 15.907 9.653 22.84 16.042-3.671 0.816-1.903 4.622-3.127 7.070l-2.311-2.311-2.991-0.136c-2.039-2.991-4.622 0-5.166 2.311 5.438 2.039 9.109 7.341 14.819 8.973 3.807 1.903 7.070 4.894 10.876 6.798 2.311 1.224 4.486 2.719 6.662 4.079-0.136-3.127-0.952-6.798 1.903-8.973 2.719-1.224 5.574 0.544 8.157 1.224 4.351 5.030 11.556 7.885 13.731 14.547-1.36 0.68-1.767 2.175-1.224 3.535 0.136 0.272 0.272 0.544 0.544 0.68 0.816 1.767 2.175 3.263 3.943 3.943 2.311 1.224 4.894 0.68 7.477 0.816 0 0.68 0 1.903 0 2.583 3.127-0.272 6.118 0.68 8.701 2.447 5.302 2.039 8.837 6.526 13.867 9.109l3.263 1.224c0 0.544 0 1.767 0 2.447h5.166c0.68 1.767 1.36 3.671 2.039 5.438h2.311v3.263l3.263-2.991-0.272 4.351c1.495-1.36 2.991-2.991 4.351-4.486h3.535c0 0.816 0 2.175 0.136 2.991 1.767 0.136 3.535-0.408 5.030-1.495l3.127 1.767c0-0.68 0-2.039 0-2.719l-3.399-1.088c-3.943-2.855-7.613-6.254-12.1-8.293-3.943-2.175-7.070-5.71-11.148-7.613-2.719-1.36-5.166-3.263-7.885-4.622-2.175-0.816-3.807-2.583-5.438-4.215-2.039-0.272-3.943-0.952-5.846-1.903-2.447-1.767-5.302-2.719-8.293-2.583-3.535-6.934-7.749-14.003-14.683-18.218-6.934-8.293-18.354-9.381-27.055-15.091-1.903-1.088-3.807-2.447-5.71-3.535-2.447-1.224-4.622-2.991-7.070-4.215 0.272-1.767 0.544-3.535 0.816-5.302l-2.175-1.903 1.767-0.408 3.943 2.311c2.311 0.952 4.622 1.767 6.934 2.583l2.719 1.495c1.903 0.816 3.807 1.903 5.574 3.127 0.952-1.36 2.311-2.311 3.807-2.719 0.136-0.68 0.544-2.039 0.816-2.719 3.535-0.68 6.39 1.631 8.973 3.671 1.495-1.495 3.127 0.544 4.758 0.272 1.631 0 3.263 0.272 4.758 0.952 2.311 1.224 4.622 2.447 7.070 3.535 2.991 1.631 6.118 3.127 9.245 4.622 2.719 1.36 5.438 2.583 8.157 4.215 1.767 0.816 3.671 1.495 5.71 2.039l3.943 1.224c-2.311-2.991-5.982-4.758-9.245-6.662-3.807-2.039-6.934-4.894-10.876-6.798-2.311-1.36-4.486-2.855-6.798-4.079-1.903-1.088-3.807-2.447-5.71-3.535-2.311-1.224-4.486-2.719-6.798-4.079-4.215-1.903-7.477-5.71-12.1-6.934-1.495-0.816-2.855-1.767-4.215-2.719-2.175-1.088-4.486-2.175-6.662-3.127-3.127 0-6.254 0-9.517 0-1.631 0.68-3.671 1.224-4.758 2.719 0.136 2.039 0.408 4.079 0.816 6.118-2.719-2.039-5.574-3.943-8.565-5.71-2.719-1.36-5.166-3.263-7.749-4.758-4.894-1.224-9.245-4.215-13.595-6.798-1.495-0.68-2.991-1.36-4.486-1.903-3.399-2.311-6.798-4.351-10.468-6.118-1.36-0.816-5.030-1.767-2.719-3.671 1.903-1.495 4.486-0.68 6.662-1.088 1.495-1.767 3.943-1.088 5.982-1.224 0.272-2.039-0.68-4.622 1.36-5.982 0.272-3.671-0.68-7.477 0.816-10.876 5.71-7.477 10.876-15.363 18.082-21.481 0.272-2.039 0.952-4.079 1.903-5.846s1.903-3.535 2.719-5.438c2.855-5.846 5.71-11.692 8.021-17.674l1.495-2.719c1.088-2.175 2.175-4.351 3.263-6.526 0.408-2.447 1.36-4.758 2.719-6.798 0.68-1.495 1.495-2.855 2.175-4.351 0.952-1.767 1.767-3.671 2.719-5.438 0.816-2.311 1.631-4.622 2.583-6.798 0.68-1.224 1.36-2.447 2.039-3.807l1.767-2.855c0.136-0.68 0.272-2.175 0.408-2.855 1.088-1.767 2.039-3.671 2.991-5.574 1.224-2.039 2.175-4.351 2.583-6.798 0.408-0.68 1.088-2.039 1.36-2.855l2.039-3.807c1.36-3.807 2.855-7.613 4.758-11.148 0.816-2.719 1.903-5.438 3.263-7.885 0.68-1.495 1.495-2.855 2.175-4.351 0.544-1.36 1.088-2.719 1.36-4.079 0.544-3.671 3.671-5.982 3.943-9.517l1.495-2.719 1.36-2.719c0.544-3.399 1.767-5.438 2.719-7.749zM185.44 277.888c-1.767 2.447-3.535 4.894-5.030 7.613l-1.36 2.719c-0.272 0.952-0.816 2.855-1.224 3.807 3.127-3.535 8.293-4.894 10.332-9.381 2.039-2.175-0.136-5.574-2.719-4.758zM327.647 307.254c0.952 1.224 2.447 1.767 3.943 1.631 0.816-1.903-3.671-4.215-3.943-1.631zM305.215 425.806c-1.224 1.903-3.807 1.495-5.438 2.719-1.903 0.136-3.671 0.408-5.438 1.088-2.583 0.816-4.215 3.535-3.671 6.254 1.767 0.136 3.535-0.408 4.894-1.495h2.719l2.039 1.36c2.175-2.311 5.302-3.399 8.429-2.855-0.272-0.816-0.816-2.447-1.224-3.263-0.408-1.495-1.36-2.719-2.311-3.807v0zM268.236 431.38c-0.816 1.088-1.631 2.175-2.311 3.399l-0.952 2.039c0.816 4.351 5.574 2.311 8.157 0.952 0-0.816 0-2.447 0-3.263-1.903-0.408-3.263-1.903-4.894-3.127v0z","M121.542 302.632c3.535-1.495 6.934-3.263 10.196-5.302-4.622 8.429-5.166 18.082-7.613 27.327 0.952 2.447 0.272 5.030-1.495 6.934-0.136 0.68-0.408 2.039-0.408 2.719-0.68 1.36-1.224 2.719-1.495 4.215-1.224 2.039-0.68 4.622-1.903 6.662-1.224 2.311-1.903 5.030-4.079 6.798l-0.544-3.671c-4.486 4.215-9.653 8.565-11.148 14.683-1.36 2.039-0.952 4.486-1.088 6.798-1.767 1.631-1.088 4.079-1.224 6.254-0.136 5.438 0.272 10.74 1.088 16.042-0.272-1.631-0.952-3.263-1.903-4.622-0.816-1.36-1.224-2.855-2.719-3.535-1.495 1.224-1.767 3.127-2.175 4.894-2.039 3.399-1.767 7.885-4.622 10.876-0.136 0.68-0.544 2.039-0.816 2.719-1.224 1.631-0.952 3.535-1.224 5.438-1.495 1.224-2.039 4.622 0.408 5.166-1.903 1.224-3.127 3.263-3.263 5.574-1.088 0.816-1.224 2.447-0.408 3.535 0.136 0.136 0.272 0.272 0.408 0.408 0.272 1.767 0.952 3.399 1.903 4.894l-3.943-0.136c-0.544 1.903-1.767 3.535-1.631 5.574-0.136 7.477 0.136 14.955-0.136 22.432-1.767 1.36-1.767 2.719 0 3.943 0 2.311 0 4.622 0.136 6.934-1.631 0.68-3.399 1.36-5.030 2.039-1.36-1.495-2.039-3.263-2.039-5.302-1.36-0.544-2.719-1.224-3.943-1.903 0.68 4.351-1.36 9.517 1.36 13.323-3.263 7.070-3.127 15.091-5.166 22.432-2.583 7.749-2.991 16.042-5.166 23.928-1.495 4.622-1.36 9.653-1.36 14.411-0.952 0.68-1.767 1.495-2.719 2.175-0.272-2.039-0.544-3.943-1.088-5.982 1.088-2.719-0.272-6.254 1.903-8.429 0.408-2.719-0.952-6.118 1.36-8.157 0.408-2.719-0.952-6.118 1.36-8.157 0.68-3.943-1.36-8.837 1.36-12.236 0.408-2.719-0.952-6.118 1.36-8.157 0.408-2.719-0.952-6.118 1.36-8.157 0.136-1.903 0.136-3.671 0.272-5.438 1.767-1.36 1.088-3.671 1.495-5.438 0.816-1.224 1.36-2.583 1.495-4.079 0.68-1.903 1.36-3.671 2.175-5.438l0.408-2.719c0.816-1.224 1.36-2.583 1.495-4.079 2.719-3.535-0.816-8.837 2.311-12.1 0.408-2.719-0.952-6.118 1.36-8.157 0.408-2.719-0.952-6.118 1.36-8.157l0.272-4.079c1.495-1.36 1.088-3.671 1.631-5.438 1.224-1.631 2.311-3.399 3.399-5.302 0.952-2.855 3.807-4.351 4.894-7.206 0.68-1.224 1.36-2.583 2.039-3.807 0-1.495 0.544-2.991 1.495-4.215 0-0.68 0.136-2.039 0.272-2.855l2.447-3.943 0.272-2.855c1.495-2.039 2.447-4.351 2.991-6.798 1.224-1.495 0.952-3.535 1.224-5.438 1.495-1.36 1.088-3.671 1.36-5.438 1.088-2.311 1.767-4.622 2.719-6.934l2.039-3.671c1.088-2.447 2.311-4.758 3.535-7.070 0.544-1.36 0.952-2.719 1.224-4.079 0.952-1.767 1.903-3.671 2.855-5.438 1.767-2.447-0.136-5.982 2.175-8.021 0.408-2.719-0.952-6.118 1.36-8.157 0.136-1.767 0.136-3.671 0.272-5.438 1.631-1.903 1.088-4.622 2.039-6.798 1.088-1.767 2.991-3.943 3.263-6.798z","M308.886 298.417z","M283.191 675.688c-13.187-11.284-27.87-20.937-40.65-32.629-1.903 1.903-3.535 4.079-4.622 6.39 2.175 1.903 4.215 4.079 6.118 6.39l-3.943-1.495c-4.894-0.68-9.925 0.136-12.78 4.486-0.136 1.903-0.408 3.807-0.544 5.71-1.224-0.816-2.583-1.631-3.807-2.447 0.272 1.224 0.816 2.447 1.495 3.399l59.412 10.604c-0.272 0-0.544-0.136-0.68-0.408z","M709.268 1004.695c-5.846-6.526-13.323-11.42-20.257-16.586-19.169-16.586-40.786-29.774-60.227-45.816-4.079-4.215-9.517-6.934-14.003-10.604-8.021-6.662-17.266-11.692-24.472-19.033-8.293-5.166-15.635-11.556-23.52-16.994-1.495-1.224-2.719-2.719-4.215-4.079-22.432-16.45-44.049-33.988-66.073-50.982-12.916-9.109-24.608-19.849-37.795-28.686-15.091-12.236-30.454-24.472-46.632-35.484-0.68-5.438 6.39-2.175 8.701-4.758l2.855-0.272c1.224-0.816 2.583-1.495 3.807-2.175 7.341-2.175 10.74-9.381 14.819-15.091 1.767-1.767 0.816-4.351 0.952-6.39-2.039-1.767-1.088-4.486-1.495-6.798-1.903-1.903-0.544-4.894-2.311-6.798-0.272-1.903 0-3.807-1.224-5.438-0.272-1.36-0.816-2.719-1.36-3.943-1.903-2.447-1.224-5.71-2.855-8.293-0.408-1.767 0.136-4.079-1.495-5.438l-0.272-4.079c-0.952-1.224-1.495-2.719-1.495-4.215l-1.631-2.719c-1.088-2.175-0.272-4.894-2.039-6.662-0.68-4.486 1.088-9.517-1.088-13.595-0.544-2.311-1.36-4.622-2.719-6.662-0.952-1.767-1.631-3.671-2.039-5.71-1.767-2.447 0-5.846-2.039-8.021 0.816-4.758-3.807-7.070-5.574-10.74l-0.272-2.855c-1.631-1.36-1.088-3.671-1.36-5.438-0.816-1.224-1.36-2.719-1.495-4.079-1.495-3.399-3.535-6.526-6.118-9.245-1.088-4.622-4.894-7.885-6.798-12.236-0.408-0.68-1.088-2.175-1.495-2.991 1.903-5.030-1.224-9.381-3.127-13.731-2.583-7.885-5.982-15.499-6.662-23.792-1.631-0.952-3.535-1.631-4.351-3.399-0.816 1.767-1.903 3.399-3.263 4.758-0.408 7.613 3.399 14.411 5.302 21.481 2.447 5.166 2.991 11.012 5.574 16.178 0.952 2.311 1.767 4.622 2.719 6.798l1.36 3.807-2.583-1.631c0.952 2.311 1.36 4.758 1.224 7.206 2.311 1.224 4.215 3.127 6.798 3.807-0.544 1.088-1.088 2.039-1.631 3.127 0.816 1.224 1.631 2.447 2.311 3.671 0.408 1.495 1.903 2.855 1.495 4.351-2.311 2.583-4.894 4.758-7.206 7.341h-3.127c-0.272 3.399-4.215 4.351-5.846 7.070h-3.127c-1.36-7.477-2.039-14.955-2.991-22.568 0.544-2.447 0.816-4.894 1.224-7.206-1.767-7.749-4.758-15.227-9.109-21.888-0.408 0.816-1.224 2.447-1.631 3.263 0.544 5.438-0.136 11.012-2.039 16.042-1.36 2.991-0.68 6.798-2.583 9.517 0.68 1.36 1.224 2.719 1.495 4.215 1.631 3.399 1.631 7.477 0 10.876-0.408 1.36-0.816 2.719-1.224 4.079-0.68 1.767-2.175 3.263-4.079 3.807-2.311 0.68-4.215 2.175-5.166 4.351-2.447 2.855 1.631 4.622 2.991 6.662 0.544 1.767-0.136 4.079 1.495 5.574 0 0.816 0.136 2.583 0.136 3.399h-3.535c-1.631-1.903-3.399-3.671-5.030-5.438l-2.991-0.272-3.535-1.631c1.224 3.399 2.175 7.070 5.438 9.109 0 1.36 0 2.719 0.272 3.943 1.224 0.272 2.447 0.952 3.263 1.767 0.68 0.68 1.224 1.495 1.495 2.311 0.136 0.136 0.136 0.136 0.272 0.136l5.438 0.952v0.816h-0.816v-0.816l-4.486-0.544c2.175 1.631 3.943 3.807 5.030 6.39 1.088 5.846 6.798 7.885 10.468 11.556 2.039 0.272 4.079 0.272 6.118 0.272 0-0.68 0.136-2.039 0.136-2.855 6.526-1.495 11.828 2.583 16.858 6.118 3.535 2.991 5.438 8.157 10.332 9.245v3.535c-3.943-1.088-8.429 3.399-11.556 0.136-2.311 0-4.622-0.408-6.662 0.68-1.495 0.952-4.079 1.767-3.399 4.079 2.447 2.175 6.118 3.671 6.662 7.341 0.816 3.127 2.991 6.934 0.68 9.925 2.175 3.671-2.447 10.332-6.662 6.934-13.595-9.789-26.783-20.393-40.378-30.182-3.127-2.855-6.526-5.438-10.196-7.613-6.662-6.118-14.547-10.74-21.345-16.858-9.517-7.341-18.762-14.819-28.414-22.024l-59.548-10.74c0.136 0.136 0.136 0.272 0.272 0.408l-2.039 1.36c3.671 2.991 8.293 4.894 10.468 9.381 2.991 4.351-3.807 6.798-2.039 11.556h-2.583v-2.583c-3.671 0.272-6.934-2.311-7.341-5.982-6.526 2.039-6.254 11.692-13.052 13.052 0 1.903 0 3.807 0.136 5.71 3.127 2.855-0.544 8.021 2.447 10.876 0.136 2.311-0.136 4.622 0.952 6.798 1.36 2.719 3.671 4.758 6.526 5.71 2.311 1.224 4.486 2.855 6.798 4.079 2.175 0.816 4.079 2.039 5.574 3.671 4.622 5.438 9.789 10.332 15.635 14.547 13.052 10.74 26.647 21.073 38.611 33.173 3.127 2.719 5.982 6.118 9.789 7.749-1.088 0.816-2.039 1.631-2.991 2.583l3.127-0.272c2.447 6.526 9.789 9.925 15.907 12.508l-3.263-4.351c2.311 1.495 4.622 3.671 4.079 6.934l2.039-2.311c0 0.544 0 1.767 0 2.311 5.438 5.438 11.284 10.74 18.218 14.139 2.991 3.127 6.798 5.438 10.876 6.798 1.631 1.767 3.535 3.263 5.71 4.486l0.136-2.175h1.903l-1.631 2.175c4.894 2.447 8.973 6.254 14.411 7.749 1.903 1.767 4.079 4.758 6.934 3.807 0.272 2.039 1.767 3.807 3.807 4.351 5.574 3.535 11.692 6.662 16.042 11.828h3.127c2.175 2.583 4.622 4.758 7.477 6.526 9.517 7.341 18.898 14.955 28.822 21.753l1.36 2.583c4.215 1.767 6.526 6.254 10.74 8.293 4.215 4.486 8.973 8.293 14.139 11.556 13.731 11.012 28.278 20.937 42.553 31.405 5.166 3.943 11.556 5.438 17.266 8.293 11.692 5.71 22.704 12.644 34.668 17.946 14.683 4.622 28.55 11.828 43.369 16.178 7.885 3.535 16.722 4.758 24.336 8.973 4.215 0.816 8.021 2.583 11.556 5.030 0.544-0.272 1.631-0.68 2.175-0.816 6.934 1.903 13.595 5.71 21.073 5.438 6.526 2.175 13.867 1.631 20.665 0.816 2.583-0.816 5.71-4.079 8.157-1.36 1.767-1.36 3.671-2.447 5.846-2.991 0-0.68 0.136-2.039 0.136-2.719 5.302 2.447 8.973 7.749 14.275 10.332 3.807 2.039 7.341 4.758 10.196 8.021-5.438 2.991-11.964 1.903-17.946 3.263-10.468-0.408-20.665 2.447-31.133 1.088-11.828-1.903-23.792 0-35.62-1.224-14.003-2.719-27.327-7.206-40.922-11.284-11.964-5.438-22.84-12.916-34.804-18.49-13.052-4.894-24.608-12.916-36.3-20.257-11.556-5.71-23.52-11.284-33.173-19.985-8.701-8.293-20.665-11.828-29.638-19.441-6.934-4.351-12.916-9.925-19.985-14.003-3.127-1.631-5.030-5.030-8.429-6.39-1.631-0.68-2.991-1.495-4.215-2.719-3.943-3.943-8.973-6.526-13.459-9.653-9.789-8.565-21.481-14.683-30.997-23.52-5.846-3.399-10.876-8.157-16.586-11.828-4.486-1.631-6.934-6.118-11.284-8.021-7.613-4.351-12.916-11.556-20.529-15.907-8.429-6.118-16.994-12.1-25.151-18.49-9.517-5.846-17.402-13.731-27.191-19.169-2.855-1.495-5.438-3.671-8.293-5.302-5.166-1.36-8.701-5.71-13.187-8.429-3.399-2.175-6.662-4.486-9.925-6.662-3.943-0.408-5.574-4.758-9.653-5.030-9.925-9.925-22.296-16.994-33.716-25.015-3.535-1.903-6.526-5.030-9.925-7.206-0.408 0.408-1.224 1.224-1.495 1.631 0.68-5.71-7.477-2.991-7.477-8.429h-1.903c-0.272-4.894-6.798-4.758-7.613-9.109-2.175-0.408-5.438-2.583-3.399-5.166 0.816 1.224 1.631 2.447 2.447 3.807 0.408-2.991-2.719-4.351-3.399-6.934l3.127-0.136c0-1.088 0-3.399 0-4.486 1.495 1.088 2.583 2.719 3.127 4.486 3.127-0.272 6.254 0.816 8.565 2.991 1.631-2.175 2.583-5.030 5.302-6.118 1.36-0.408 2.719-0.816 4.079-0.952l1.088 1.631c2.039-1.495 3.671-3.671 4.486-6.118 1.088-1.903 2.447-3.807 3.535-5.71 0.68-1.224 1.224-2.583 1.903-3.807 1.631-3.263 3.263-6.526 4.894-9.789 0.952-1.767 1.767-3.535 2.719-5.438 1.224-2.311 2.719-4.486 4.079-6.798 1.36-2.855 3.127-5.302 4.894-7.885l-108.491-19.441 108.627 19.441c1.224-1.767 2.311-3.671 3.263-5.71 1.495-2.991 2.719-5.982 3.807-9.109 0.272-2.855-0.68-5.574-1.088-8.293-0.952-3.263-0.952-7.341-4.215-9.245-6.662-4.079-12.644-9.109-18.898-13.731-4.894-4.894-11.284-7.749-15.771-13.052-1.767-0.136-3.943-0.136-4.894-2.039-0.68-2.175 0.952-4.079 1.495-6.118 2.991-1.36 7.341-1.224 8.429-5.030 0.408-2.175 2.583-4.486 1.224-6.798 1.767-1.903 2.447-4.351 3.535-6.662 0.136-0.68 0.408-2.039 0.408-2.719 2.447-2.583 0-6.662 2.175-9.381 0.544-1.767 0.408-4.351 2.719-4.894 1.224 1.36 2.039 2.991 2.719 4.758 1.36 2.311 3.535 4.215 3.399 7.206 1.36 0.952 2.175 2.719 3.943 3.127 1.224-0.544 2.311-1.224 3.535-1.767l3.263-1.36v-1.903c3.807-0.952 5.846-4.622 8.565-7.070 1.631-0.272 4.079 0 4.758-2.039 0.408-2.039 0.272-4.351 1.631-6.118-0.136-3.127-0.136-6.118-0.136-9.109-2.991-2.311-4.622-6.254-8.429-7.341-4.486-1.36-6.662-6.118-8.565-10.061-3.671-1.36-2.719-5.302-4.215-8.157-0.272-4.486-2.447-8.565-5.982-11.284-5.982-4.486-11.556-9.517-16.586-14.955-2.311-7.477-4.215-15.499-2.991-23.384-0.816 1.088-1.631 2.175-2.311 3.399-1.903 2.311-0.816 5.438-1.088 8.157-2.719 3.399-0.68 8.157-1.36 12.236l-1.224 1.767c-0.272 7.070 0 14.003-0.136 21.073-1.767 1.224-1.224 3.535-1.495 5.438-1.36 1.495-1.088 3.671-1.36 5.438-1.903 2.311-0.952 5.438-1.224 8.157-3.535 4.215 0.952 10.74-2.447 14.955-0.272 5.030 0 9.925-0.136 14.955-2.855 4.351-0.408 10.061-1.36 14.955-1.088 1.631-1.36 3.807-2.447 5.438-0.136 3.807 0.136 7.613-0.136 11.42-1.088 2.583-2.311 5.030-3.671 7.341-1.495 2.583-3.535 7.477-0.272 9.381-1.088 2.719-3.263 5.030-5.982 6.118-1.495 0-2.991 0.544-4.215 1.495-5.030 0.136-10.061 0.136-14.955 0-1.224-0.816-2.583-1.495-3.943-2.175-3.127-1.224-4.758-4.351-7.613-5.982-4.622-3.127-9.517-5.71-13.323-9.789-4.079-2.175-7.341-5.574-9.517-9.653 0-1.495-0.544-2.991-1.36-4.215-0.408-1.767 0.272-4.079-1.495-5.438-0.408-2.719 0.816-5.982-1.36-8.157-0.272-2.311 0.544-5.030-1.36-6.798 0.544-4.079-1.36-7.613-3.263-11.012-2.175-3.127-2.991-7.070-2.311-10.74 2.039-1.767 1.088-4.486 1.495-6.798 1.767-1.36 1.088-3.671 1.224-5.438-1.088-1.088-1.631-2.583-1.36-4.079 2.991-3.127 0.816-8.293 1.495-12.236 2.855-4.758 0.544-11.012 1.36-16.314 2.039-1.631 1.088-4.486 1.36-6.798 0.952-1.224 1.495-2.583 1.631-4.079 1.36-3.127 1.088-6.662 3.399-9.381 0.952-2.175 1.767-4.486 2.583-6.798 1.224-2.311 2.447-4.622 3.535-7.070 0.816-2.719 1.903-5.438 3.263-7.885l4.079-8.157 1.631-2.855c0.272-2.311-0.68-5.166 1.36-6.798 0-2.311 0.136-4.486 0.136-6.798 3.127-4.758 0.272-11.012 1.631-16.314 4.894-6.798 9.925-13.323 14.411-20.257 0.816-1.767 1.767-3.535 2.583-5.438 0.952-1.767 2.175-3.399 3.671-4.894h3.263c1.631 7.477 9.653 10.74 13.187 16.994 2.719 4.758 6.254 9.245 11.148 11.964 2.447 1.224 3.263 4.079 4.894 6.118 1.903 2.583 5.846 3.127 7.070 6.39 0.408 1.36 0.816 2.719 1.224 4.079 2.991 4.079-2.175 12.508 4.894 13.187-1.224 4.079 2.991 6.118 3.263 9.925 3.671-2.175 8.157-2.039 11.964-4.079 2.311 0.816 4.486-0.136 6.662-0.952v-2.447h2.311c0.544-5.846 9.925-5.574 8.701-12.236 3.943 0.136 8.429 0.68 10.604-3.399-1.495-1.495-2.311-3.535-2.583-5.574-2.175 0-4.215-1.631-4.758-3.807l1.631-1.36c0.544-4.351-4.486-3.535-6.798-1.767v2.447h-2.855c-1.36-5.982 7.341-5.438 7.341-11.012-2.175 1.36-4.622 1.903-7.206 1.631v-4.215l-4.486-0.136c0.68-2.447 2.855-4.215 3.535-6.662l-3.127-0.136v-4.079h-1.36v4.079h-2.719v-2.719h-5.166c-1.631-2.447-0.952-5.030-0.136-7.613-2.311-1.903-4.215-4.758-7.477-5.166 2.447-1.631 4.894-3.535 7.070-5.438l-4.079 0.408c1.088-1.495 1.767-3.263 1.767-5.166 1.903-2.175 4.894-1.495 7.477-1.495 0.408-1.495 1.088-2.855 1.903-4.215l-2.991 0.136v-2.719c3.263 0 6.934 0.68 8.701-2.719l-3.263-0.136c0-0.68 0.136-2.175 0.136-2.855-2.039 2.039-4.758 1.631-7.341 1.631 0.952-5.166 6.662-6.526 9.789-9.925-2.175-2.311 1.088-4.486 1.767-6.662-3.263-0.408-5.438 1.767-7.885 3.535-1.903 0.408-3.671 1.088-5.302 1.903-2.175 0.136-4.486 0.272-6.254 1.903 0-0.816 0.272-2.311 0.272-3.127-1.36 0.816-2.991 1.495-4.486 1.903 0.136-0.68 0.408-1.903 0.68-2.583 4.486-3.399 6.118-10.196 11.964-11.828v-3.127c1.631-1.495 3.127-2.991 4.486-4.622l-3.943 0.136c0 0 0 0 0 0-1.767 1.903-4.894 1.903-6.662 0.136-2.991 0.272-6.662-0.68-6.39-4.486-1.767 1.088-3.399 2.039-5.166 3.127 0.544-2.583-0.952-5.166-3.535-5.982-2.855 3.127-4.622 7.206-8.021 9.925-0.816-0.68-1.495-1.36-2.311-2.039 1.631-2.175 3.263-4.622 4.622-6.934 1.495-2.855 3.263-5.574 5.166-8.021-0.136-2.039-1.088-2.991-2.855-2.855-3.807 0.272-7.885 0.136-11.42 1.767-2.855 2.583-6.39 1.495-9.517 0.408-2.447 1.631-4.894 3.671-7.885 4.351 1.767-2.311 3.671-4.486 5.846-6.526l-2.039-1.224c-0.408-1.767-0.952-3.535-1.36-5.302-1.903-0.952-3.807-1.224-5.438 0.272-1.224-0.408-2.447-3.535-3.535-1.495-1.36 2.175-3.943 1.903-6.254 1.903-1.36 1.36-2.311 3.263-2.447 5.302-0.544 6.39-1.631 12.644-3.127 18.898 1.495-0.816 2.991-1.224 4.758-1.36l3.263-2.855c0.136 0.816 0.136 2.583 0.136 3.399 1.631 0 3.127-0.408 4.622-1.088 1.903-1.088 4.758-3.127 5.982 0-0.68 1.631-1.088 3.263-1.36 5.030l3.399 0.136c-0.408 0.816-1.224 2.447-1.631 3.263-0.136 2.447-0.136 5.030-0.136 7.477h-2.719v1.36h3.263c-1.767 2.039-3.671 3.943-5.71 5.846-0.952 5.438-5.302 9.653-6.662 15.091-2.447 5.574-5.846 10.74-8.293 16.314-3.943 8.293-9.245 15.907-13.323 24.2-3.535 5.438 1.495 12.78-1.903 18.082-0.408 3.127 0.952 6.934-1.224 9.517-0.136 0.68-0.272 2.039-0.408 2.719-1.767 1.495-1.631 2.855 0.272 3.943-1.36 1.224-2.583 2.583-3.943 3.943 0.136 5.166-1.495 10.061-3.399 14.819-4.079-2.583-5.574-6.934-7.206-11.284 3.807-3.671 6.254-8.701 5.166-14.139 1.495-2.039 0.952-4.622 1.224-6.934 1.631-1.903 1.088-4.486 1.903-6.662-1.631-3.535-2.175-7.613-1.36-11.42l-2.175 1.903c0-3.263 2.719-5.302 3.671-8.157 2.855-5.166 5.438-10.468 7.477-16.042-3.671 0.952-6.526 3.807-7.477 7.477-1.224-0.408-2.311-0.68-3.535-1.088-0.136 3.671-4.215 7.885-1.36 11.148l-1.224 1.224c1.767 1.767 1.36 4.622 0.952 6.934-1.903 1.631-2.991 4.215-2.719 6.798-2.039 2.175-0.272 5.71-2.039 8.021-0.272 2.039-1.36 3.943-2.855 5.438-1.088 1.495 1.36 2.719 2.039 3.807-0.816 2.311-2.039 4.622-3.535 6.662-0.136-2.039 2.311-4.622 0.272-6.118-1.088-2.039-2.991-0.544-4.079 0.408-1.088-2.447-4.215-0.816-6.254-1.36 0.408 0.816 1.224 2.583 1.631 3.399 0.136 3.671 0.136 7.341 0.136 11.012 0.68 1.224 1.631 2.311 2.719 3.399 1.767-0.816 3.127-2.447 5.030-3.127-0.272 2.991 1.767 6.798-0.68 9.245 0.408 6.118-1.088 11.692-1.495 17.674 1.767 1.224 1.767 2.583 0.272 4.079 0 3.127-1.088 5.982-2.991 8.429l1.36 0.952c-0.544 10.061-0.952 20.257-3.127 30.182 0.68 1.495 1.495 2.991 2.175 4.486l-2.175 0.272c-0.136 2.311 0.136 4.894-1.631 6.662 0.408 2.311 0.68 4.758 1.088 7.070 0.816 1.903 1.088 3.943 0.952 5.846-2.175 1.631-1.088 4.486-1.495 6.798-1.767 1.903-0.816 4.758-2.175 6.798-0.544 1.903-1.224 3.807-2.175 5.71-2.855 2.039 2.039 4.486-0.68 6.526-1.495 2.311-2.039 5.030-1.767 7.613l-1.631-0.136 0.68 1.767c2.855-2.447 3.535-7.341 8.021-7.477 0 1.767-0.272 3.535-0.952 5.166-3.807 5.030-7.885 9.925-10.604 15.635h-1.903c-0.68 1.631-1.36 3.263-2.039 4.894-1.088 1.088-1.088 2.719-0.136 3.943-0.816 3.127 2.311 6.934-0.68 9.653-0.136 2.311 0.408 4.758-1.088 6.798-0.136 2.039-1.088 3.807-2.583 5.166-0.544-1.903-1.495-3.807-2.991-5.166-0.408-3.399-0.544-6.662-0.272-10.061 0-2.039 3.399-2.855 2.583-5.030-1.224-1.36-2.583-2.583-3.943-3.807 0-1.767-0.136-3.535-0.136-5.302-3.671 0.272-4.894 5.71-8.837 4.351-3.127-1.767-1.495-5.71-2.039-8.429-2.991 0.408-4.215 3.535-6.798 4.622-2.447-1.631-5.302-3.807-5.574-7.070-1.903 1.903-4.351 2.175-5.574-0.544-0.136-4.351 4.486-6.39 7.070-9.381 0.136-2.719-0.544-5.71 0.816-8.293 2.311-3.263 4.079-6.934 7.206-9.381l0.272-4.215c0.816-2.311 1.36-4.894 3.535-6.39l-4.351-1.903c-4.758-3.399-9.789-6.798-13.459-11.42-2.855 0-6.526-0.68-8.021 2.447-1.767 3.807-5.574 6.118-7.885 9.789-7.206 8.837-14.003 18.082-20.665 27.599 2.447 1.224 0.68 4.622 2.447 6.526 0.272 1.36 0.68 2.855 1.36 4.079 0.136 1.495 0.68 2.855 1.495 4.079 0.136 0.68 0.272 2.175 0.272 2.855 0.816 1.631 1.903 3.263 3.127 4.622 2.991 0.952 4.622-2.039 7.070-3.127l3.807-1.903c1.495-0.68 2.855-1.495 4.351-2.175 1.224-0.544 2.583-1.088 3.943-1.36 2.855-2.039 6.798-1.495 9.109 1.088-2.719 0.952-1.36 4.079-1.767 6.118 0.272 2.447-0.68 5.438 1.224 7.341 0.408 1.767-0.272 4.079 1.495 5.438 0 0.68 0.272 2.039 0.272 2.855 0.816 2.311 2.447 4.215 4.622 5.438 1.36 0.408 2.719 0.816 4.079 0.952 1.088-1.767 2.447-2.039 4.079-0.68 1.903 0.68 3.263 2.175 3.807 4.079l2.039 3.807c-0.136 3.535 3.943 5.302 3.263 8.973h3.399c2.175 2.311 4.351 4.486 6.526 6.798 2.311-0.272 5.166 0.68 6.934-1.224 5.574 0.952 9.925-3.263 13.459-6.934h5.71c2.991 3.127 5.71 6.526 9.517 8.701 3.263 2.039 5.302 5.71 8.701 7.613 2.583 1.36 4.351 3.943 6.526 5.71 5.846 3.263 9.245 9.245 15.091 12.372-0.68 4.351-6.118 6.662-8.565 10.196-1.767 0.136-3.943 0-4.622 2.039-2.311 4.079-5.71 7.613-6.798 12.236-2.447 3.263-1.767 7.477-1.767 11.284 2.991 0.544 4.758 2.991 6.662 5.030 0.272 1.767-1.224 3.127-1.631 4.758 2.991 0.136 6.254-0.544 9.109 0.816 1.903 0.544 2.991 1.903 3.399 3.399l19.305 3.399c0.68 0.272 1.36 0.544-19.169-2.991 0.136 0.952 0.136 1.903 0 2.855-0.136 0.136-0.272 0.272-0.408 0.408-0.408 2.719-2.311 5.302-5.71 5.574-0.952 0.68-2.039 1.224-3.399 1.36-1.495 0.816-2.855 1.903-4.079 3.127v6.526c2.039-0.272 4.622 0.544 6.118-1.36 1.495-0.136 2.855-0.136 4.351-0.136 2.311 2.175 4.215 4.622 5.846 7.341 0.816 3.807-0.68 6.934-3.263 9.653-1.495 3.127-0.68 6.798-0.68 10.196l-2.991-0.136c1.903 2.175 1.631 4.894 1.495 7.613-2.039 1.631-1.088 4.486-1.495 6.798-1.631 1.36-1.088 3.535-1.495 5.438-1.495 1.495-1.088 3.671-1.36 5.438-1.767 1.903-0.952 4.486-1.224 6.798-2.039 1.767-0.544 4.894-2.447 6.798l-0.408 2.719c-1.903 1.903-0.544 4.894-2.311 6.798-0.136 0.68-0.272 2.039-0.408 2.719-0.816 1.224-1.36 2.583-1.631 4.079-1.36 2.039-0.68 4.622-2.039 6.662-0.136 1.495-0.68 2.855-1.495 4.079-0.136 0.68-0.272 2.039-0.408 2.719-0.816 1.224-1.36 2.583-1.495 4.079-1.224 2.039-0.68 4.622-1.903 6.662-1.36 2.039-2.039 4.486-2.039 6.934-0.816 1.224-1.224 2.583-1.495 4.079-0.68 1.36-1.088 2.719-1.36 4.079-0.544 1.903-1.36 3.671-2.175 5.438-0.136 0.68-0.272 2.039-0.408 2.719-0.816 1.224-1.36 2.583-1.631 4.079-1.224 1.631-0.952 3.671-1.224 5.438-1.767 1.903-0.952 4.486-1.224 6.798-1.767 1.903-0.68 4.758-2.175 6.798-0.272 1.36-0.68 2.719-1.224 4.079l-1.36 2.719c-0.952 1.767-1.631 3.807-1.903 5.71-1.088 1.224-2.039 2.583-2.991 3.943l-1.088 3.399 3.127 0.136c0.68 8.565-8.837 12.508-12.1 19.441-1.224 2.175-1.767 4.622-1.903 7.070-2.583 2.583 0.408 7.070-2.447 9.517-0.272 3.671-0.272 7.341 0 11.012 1.36 2.039 3.671 3.263 5.846 4.351 3.127 1.495 6.118 3.535 9.653 3.263 2.311 2.039 5.438 0.816 8.157 1.224l1.224 0.952c6.254 0.816 12.644-0.136 19.033 0.408 2.311 2.311 5.982 0.952 8.973 1.36 2.447-0.272 5.574 0.816 7.341-1.36 3.127-0.544 6.934 0.952 9.517-1.224 1.903-0.272 3.807 0 5.438-1.224 3.127 0 4.622-3.263 7.749-3.263-2.175-2.039-1.36-5.030-1.631-7.613l-2.719-2.175c0-3.263 0-6.526 0-9.789 5.166-3.263-4.758-6.798 0-9.517 0.136-1.903-0.136-3.671-0.816-5.438-1.224-1.903-2.583-3.671-3.671-5.574-0.952-1.767-1.767-3.671-2.719-5.438-2.175-2.719 0.408-6.934-2.175-9.381-0.272-2.311 0.68-5.166-1.36-6.798-0.136-4.486-0.136-9.109 0-13.595 2.583-3.399 0.544-8.293 1.36-12.236 0.816-1.767 1.631-3.535 2.311-5.302 0.952-2.311 1.767-4.486 2.719-6.798 1.495-3.127 2.175-6.526 4.079-9.517 0.952-1.767 1.631-3.807 2.039-5.71l2.039-3.807c1.36-3.535 3.671-6.39 5.438-9.517l1.224-2.855c1.224-1.903 2.583-3.671 3.671-5.71 0.68-1.224 1.224-2.583 1.903-3.807 0.408-0.68 1.088-2.039 1.36-2.719s0.952-2.039 1.36-2.719l1.224-2.719c2.719-3.399 3.671-7.613 6.39-11.148 0.544-1.224 1.224-2.583 1.903-3.807 0.952-1.767 1.631-3.807 2.039-5.71l1.495-2.719c0.544-1.36 0.952-2.719 1.224-4.079 1.495-3.399 3.399-6.526 5.574-9.517 0.816-2.583-1.495-5.438-0.544-8.157 0.952-1.088 1.495-2.583 1.631-4.079 0.816-1.36 1.224-2.855 1.224-4.486 2.991-2.175 7.206-0.68 9.925-2.855 2.991-0.136 5.846-0.136 8.837 0 5.302 2.583 9.653 6.798 12.508 11.964 4.894 2.311 7.341 7.341 9.653 11.964 0.816 2.311 1.631 4.622 2.447 6.934 2.447 1.088 4.622 2.583 6.798 4.215 1.631 2.447 2.991 5.302 5.982 6.118 3.263 1.767 6.118 4.079 9.517 5.438l3.807 1.903c6.39 3.943 12.508 8.429 18.898 12.372 0.408 0.68 1.088 1.903 1.36 2.583 3.671 2.039 7.206 4.622 10.74 6.934 0.952 2.583 3.127 4.486 5.71 5.302 3.671 0.68 3.535 5.438 7.070 6.39l2.719 1.224c5.982 2.719 11.148 7.070 16.858 10.468 1.495 0.68 2.719 2.175 2.991 3.807l2.855 1.224c2.719 1.36 5.438 3.127 8.565 3.399 1.495 1.767 3.127 3.535 5.574 4.215 0.68 1.495 1.36 2.991 2.039 4.486 2.039 4.215 0.544 9.109 0.816 13.595-1.767 1.224-1.088 3.535-1.495 5.438-1.495 1.903-0.952 4.486-1.903 6.662-2.583 3.807-4.894 7.885-8.701 10.74v14.275c1.088 1.088 2.175 2.175 3.263 3.263l2.855 0.136c3.127 2.583 7.885 0 11.012 2.991 3.399 2.855 7.885 2.447 12.1 2.447 3.807 2.855 9.109 0.544 13.595 1.36 3.807 2.855 9.109 0.544 13.595 1.36 4.622 2.991 11.012 0.408 16.314 1.36 4.622 2.991 11.012 0.408 16.314 1.36 4.758 2.991 11.012 0.408 16.314 1.36l1.224 1.088c7.070 0.68 14.139 0 21.209 0.272 2.719 2.991 6.798 3.671 9.789 6.39 9.517 10.332 23.248 15.091 35.212 21.888 11.42 9.653 25.287 15.907 39.155 21.209 8.837 4.486 17.266 9.381 25.967 14.275 10.468 5.846 22.432 7.613 33.445 11.828 10.468 2.719 20.937 5.438 31.813 5.438 15.363 1.088 30.725-0.952 46.088-0.136 8.429-2.583 17.538-1.903 26.103-4.079 2.447-0.408 3.671-2.719 5.030-4.486-0.544-4.758-4.758-7.206-7.613-10.468zM197.268 649.041h-1.088c-0.272-0.816-0.952-2.447-1.36-3.263-1.088-2.175-2.311-4.486-3.399-6.662v0c5.166 0.408 6.662 5.574 5.846 9.925zM200.939 631.639c1.631 4.622 6.118 6.934 9.789 9.653 0.136 2.719 0.544 5.71-0.816 8.293-0.68 1.36-1.495 2.583-2.447 3.671-1.088-1.088-2.039-2.311-2.719-3.671-0.544-1.767-1.088-3.535-1.767-5.302-0.408-0.68-1.088-2.039-1.36-2.719-1.088-2.175-2.583-3.943-4.486-5.438l-0.136-4.894-3.127-0.68-0.816-3.671c2.311 2.175 4.894 3.807 7.885 4.758zM191.422 631.095c-1.767 0.68-3.535-0.816-5.030-1.767 0.68-2.175 5.71-0.544 5.030 1.767zM227.314 559.448h0.816v0.816h-0.816v-0.816zM200.803 555.097c0.408 1.224-0.408 4.215-2.039 3.807v0c-1.088-1.36 0-4.758 2.039-3.807zM27.327 561.351c-0.272-1.495 0-2.991 0.816-4.215 0.952-1.224 1.36-3.671 3.399-3.535 2.991-0.68 3.807 2.855 5.166 4.486-1.088 1.495-1.495 3.263-1.495 5.030-2.719-0.136-6.254 1.224-7.885-1.767zM106.723 643.603c-1.767-1.224-3.399-2.855-4.622-4.758v0c0.544-1.767 2.991 0.272 3.807 0.952 0.408 0.816 2.447 3.263 0.816 3.807z","M224.323 665.627c0 0 0 0 0 0l-5.438-1.088c0 0 0 0 0 0l5.438 1.088z","M121.27 346.137z","M206.919 381.366l0.816-0.013 0.013 0.816-0.816 0.013-0.013-0.816z","M238.734 401.198c0.816-1.088 2.311-1.224 3.399-0.544 0.272 0.136 0.408 0.408 0.68 0.68l2.855 0.272c1.36 2.447 3.263 0.544 4.758-0.408l-0.136 4.079c-2.311-0.272-4.758 0.816-5.982 2.855l4.622 0.136v3.671c-1.903 0.68-3.807 1.495-5.846 2.175 3.263-2.175 0-4.894-2.311-5.982-1.224 0.544-2.447 1.224-3.535 1.767l-2.855 1.36c-0.408-3.127-2.855-5.574-5.846-6.118v-0.952l3.535-0.136 2.719-1.767c1.224-0.408 2.583-0.816 3.943-1.088z","M232.888 445.655c2.311-2.855 3.671-7.206 7.749-7.885 0 0.68 0.136 2.039 0.136 2.719 2.175 0.408 4.758 1.767 4.079 4.486 0.408 2.719-2.583 4.079-3.263 6.526l-2.855 1.224c-3.263 2.039-6.934 4.758-7.885 8.701h-2.719c1.224-1.631 5.438-4.486 1.631-5.982 3.671-2.175 2.583-6.254 3.127-9.789z","M225.682 467.679c0.952-2.175 2.447-4.079 4.215-5.574l-1.767 3.943c1.36 1.495 3.399 2.311 5.438 2.175-0.272 2.991 1.903 5.166 3.535 7.341 0.408 1.36 0.816 2.719 1.224 4.079 0.816 2.311 1.631 4.622 2.719 6.798 0.68 1.36 1.088 2.719 1.36 4.079 0.68 1.767 1.224 3.535 1.903 5.302 0.952 1.631 1.631 3.535 2.039 5.438-3.399-2.311-6.118-5.574-7.477-9.517l-1.36-3.263-1.903-0.136c-1.224-2.991-3.535-5.438-4.079-8.701l-1.495-2.719c-0.68-1.495-1.495-2.855-2.175-4.351s-0.68-3.671-2.175-4.894z","M278.704 502.891c1.224 1.088 2.311 2.447 3.263 3.943 0.408 1.36 0.816 2.719 1.224 4.079 0.544 1.36 1.088 2.719 1.36 4.079 1.495 2.039 0.272 4.894 2.175 6.662 0.136 3.671 0 7.341 0.136 10.876 4.215 3.263-3.807 5.166-2.991 8.973-1.088-0.544-2.039-1.224-3.127-1.767l-3.671 2.039c-0.272-1.767 0.272-3.671 1.495-5.166-0.272-2.719 1.088-6.118-1.224-8.157-0.136-5.438-0.136-10.876 0-16.314 2.583-2.311 0.952-6.118 1.36-9.245zM281.831 530.626l-1.903 3.399c0.816 0.816 1.631 1.495 2.583 2.175 1.767-1.36 1.903-3.535 1.903-5.574h-2.583z","M246.891 527.227c0.952-1.36 1.903-2.719 3.127-3.943 0 1.767 0.408 3.535 1.224 5.166 2.039 2.855 1.767 6.254 1.903 9.653 1.903 1.495 1.088 4.079 1.224 6.118-0.136 6.118 0 12.236-0.136 18.354-3.263 3.263 0.68 8.973-2.583 12.236-0.136 3.127-0.136 6.39 0 9.517 3.127 2.039 0 4.622-2.311 5.166-2.311-5.982-1.495-12.508-1.903-18.898l-1.36-0.952c2.039-1.903 1.224-4.758 1.36-7.070-2.039-1.36-1.088-4.079-1.36-6.118-0.136-7.070 0.272-14.139-0.136-21.209l-1.088-1.088c1.495-1.903 1.224-4.622 2.039-6.934z","M317.315 526.275c1.903 0.544 3.535 1.903 4.215 3.807 0.408 1.36 0.816 2.719 1.224 4.079 1.903 2.311 0 5.846 2.175 8.021 0.136 0.68 0.272 2.039 0.408 2.719l1.36 2.583c-0.544 0.816-1.495 2.719-2.039 3.535h-4.622c-0.272 3.535-3.671 5.438-6.254 2.447 0.408 0.952 1.088 2.719 1.36 3.535 0.272 1.767 0.952 3.399 1.903 4.894-2.039 0-4.079-0.136-6.118-0.136l2.039 1.903c-1.36 1.36-2.583 2.583-3.943 3.943-0.68-1.903-1.36-3.807-2.039-5.846h-1.224c-0.272 2.583 0.272 5.030 1.631 7.206-2.991-0.136-4.215-2.855-5.574-5.166v-2.855c2.175-1.088 5.574-1.36 5.574-4.758 0.952 2.039 1.224 4.894 4.215 4.351-0.136-2.311-1.495-4.351-3.671-5.166-0.136-3.399-2.991-5.438-5.71-7.070l2.855-3.263c2.719 0 5.438 0.68 7.885 1.767-0.136-2.719-0.952-5.438-2.447-7.749-1.495-2.447-3.807-4.622-3.399-7.749 2.991-0.408 5.71 0.952 5.982 4.215l2.583 0.136c-2.719-2.447 1.088-6.118 1.631-9.381z","M267.556 529.266l2.719 0.136c0.816 2.039 2.039 4.079 1.767 6.39-1.767 1.224-3.671 2.311-5.71 3.263 0.544-1.224 1.088-2.583 1.767-3.671-3.671-0.68 0.544-2.583 1.088-3.943l-1.631-2.175z","M346.953 535.384c5.71 3.399 11.556 7.341 14.411 13.459 2.583 4.215 4.894 8.701 6.934 13.187 2.311 1.903 1.631 4.894 1.767 7.477 1.36 1.088 2.583 2.175 3.535 3.535 0 1.631-1.495 2.991-2.039 4.486l-0.408-2.311c-1.903 2.583-4.486-0.544-6.934 0.136 0.952-1.495 1.903-3.127 2.991-4.622-2.447-2.311-4.486-5.438-7.885-6.526l-1.224-2.855c-1.495-2.855-3.127-5.71-4.894-8.429-1.088-2.583-3.263-4.486-3.807-7.341-0.136-2.175-2.175-2.855-4.079-2.855 1.903-1.903 1.36-4.758 1.631-7.341z","M298.146 540.414z","M306.982 570.46c1.767-0.544 3.535-1.224 5.302-1.903 0.408 0.952 1.088 2.719 1.36 3.535 0.408 1.36 0.816 2.719 1.224 4.079l1.767 2.719 0.272 2.855c1.495 1.495 0.952 3.671 1.495 5.574 0.816 2.311 3.535 1.767 5.438 2.039 0.272 2.855-1.767 4.894-3.399 6.934 2.039-0.544 3.943-1.224 5.982-2.039-0.68 1.224-1.224 2.583-1.767 3.943-1.224 2.719-3.807 4.622-6.798 5.166 0.816 1.767 1.903 3.399 2.855 5.166l-2.175 1.495c1.495 3.535 0.68 7.477 0.816 11.148-1.631 2.991-2.039 6.526-3.127 9.653-0.408 2.447-3.807-3.263-3.807 0.952l-1.224-2.039-1.767 1.495c0-4.486-2.855-8.021-4.351-12.1-2.175-5.166-2.855-10.876-2.039-16.45 1.767-3.535 3.263-7.070 4.622-10.74 1.224 1.495 1.903 3.943 4.622 2.991-1.495-1.767-3.127-3.399-4.894-4.758l6.118 0.68c-0.544-1.631-0.816-3.535-2.583-4.215l-3.127 2.583c2.447-5.846 5.438-14.411-0.816-18.762zM314.324 612.605v0.816h0.816v-0.816h-0.816z","M249.202 591.941z","M299.505 636.941z","M208.144 642.515z","M333.357 653.255z","M125.349 772.894z","M288.357 783.907c2.039-0.136 3.127 0.544 3.399 2.311-1.903 0.272-2.991-0.544-3.399-2.311z"],"width":718,"attrs":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]},"tags":["shill"],"grid":14},"attrs":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"properties":{"order":546,"id":10,"name":"shill","prevSize":32,"code":59655},"setIdx":0,"setId":1,"iconIdx":29},{"icon":{"paths":["M624.537 140.28c32.67-2.823 66.239 2.669 95.342 18.093 26.254 11.806 47.941 31.67 65.7 54.023 11.831 15.065 19.351 32.85 26.665 50.404 7.571 17.606 7.699 37.11 9.958 55.871 0.436 50.995-22.071 101.681-59.233 136.456-29.026 24.843-65.033 43.655-103.606 46.426-21.276 0.077-43.090 2.233-63.724-4.209-36.648-10.445-71.603-30.386-95.702-60.362-15.783-20.044-27.871-43.064-35.109-67.548-7.956-31.798-8.341-65.546 0.308-97.267 11.677-39.317 35.571-75.761 69.73-99.038 26.768-17.734 57.128-31.567 89.671-32.85zM606.701 158.143c-66.906 12.088-122.136 70.91-130.964 138.227-0.821 17.554 0.103 35.16 0.257 52.74 8.418 53.484 45.811 100.937 94.88 123.316 21.943 11.113 46.991 13.653 71.244 14.064 21.532-1.36 43.757-2.746 63.544-12.216 48.711-20.865 85.256-65.829 97.626-117.183 0.975-12.113 1.437-24.278 1.719-36.443 4.183-69.396-45.811-135.070-110.459-156.962-28.308-9.239-58.617-6.467-87.848-5.543z","M350.367 510.434c16.528-1.771 33.312-1.386 49.891-0.282 50.61 7.494 98.576 36.084 126.242 79.585 13.089 22.148 23.996 46.118 27.23 71.86 7.417 47.248-6.493 96.703-35.109 134.686-46.811 62.749-137.894 88.208-209.856 56.307-59.438-23.072-102.4-81.33-109.483-144.31-0.796-21.096-1.899-42.731 3.747-63.313 7.982-28.282 21.378-55.46 41.396-77.198 27.127-30.771 65.726-50.404 105.942-57.334zM354.73 523.010c-70.987 7.52-132.427 67.445-141.897 138.15-3.336 31.439-2.13 64.571 11.806 93.546 19.12 45.092 59.797 79.739 106.737 93.058 32.568 8.059 67.574 8.007 99.551-2.823 34.595-11.369 63.904-35.878 84.615-65.469 28.359-41.268 33.723-95.394 19.864-142.872-12.37-37.162-37.341-70.397-71.192-90.517-32.106-21.070-71.783-27.281-109.483-23.072z","M871.504 511.102c18.119-2.592 36.623-2.207 54.819-0.821 47.581 6.955 92.006 33.671 120.16 72.707 16.297 23.483 27.64 50.738 31.849 79.046 2.104 25.998 2.387 52.945-6.134 77.942-8.367 24.74-20.454 48.762-38.727 67.702-34.955 38.907-87.823 61.235-140.126 58.386-16.887-0.821-33.774-3.721-49.84-9.059-22.969-9.239-45.759-20.403-63.442-38.137-37.778-34.133-58.694-85.385-57.565-136.097-0.18-28.333 9.162-55.794 21.763-80.868 11.113-21.378 27.948-39.241 46.195-54.742 23.457-18.478 51.765-30.566 81.047-36.058zM829.132 537.818c-56.282 27.024-94.88 87.412-94.624 150.007 0.128 62.441 38.342 122.906 94.855 149.545 29.873 13.833 63.929 21.43 96.677 15.065 49.532-8.161 95.419-38.753 119.826-82.947 18.247-33.8 28.333-73.964 19.402-112.024-8.649-40.241-30.566-78.558-64.314-102.811-29.642-21.558-65.906-34.749-102.759-34.57-23.919 1.309-47.376 7.674-69.062 17.734z","M606.701 158.143c29.231-0.924 59.541-3.696 87.848 5.543 64.648 21.892 114.642 87.566 110.459 156.962-0.282 12.165-0.744 24.33-1.719 36.443-12.37 51.354-48.916 96.318-97.626 117.183-19.787 9.47-42.012 10.856-63.544 12.216-24.253-0.411-49.301-2.951-71.244-14.064-49.070-22.379-86.463-69.832-94.88-123.316-0.154-17.58-1.078-35.186-0.257-52.74 8.828-67.317 64.058-126.139 130.964-138.227zM616.966 168.434c-61.312 8.187-114.411 57.744-127.346 118.183-5.877 28.462-5.133 58.822 5.056 86.257 14.783 42.372 49.173 77.531 91.39 92.904 41.858 15.604 90.671 12.396 129.604-9.778 31.644-18.94 58.283-48.146 69.909-83.563 13.525-35.442 11.729-76.043-3.003-110.792-16.63-40.986-52.329-73.399-94.162-87.361-22.79-8.521-47.607-6.724-71.449-5.851z","M829.132 537.818c21.686-10.060 45.143-16.425 69.062-17.734 36.854-0.18 73.117 13.012 102.759 34.57 33.748 24.253 55.666 62.569 64.314 102.811 8.931 38.060-1.155 78.224-19.402 112.024-24.407 44.194-70.294 74.785-119.826 82.947-32.747 6.365-66.804-1.232-96.677-15.065-56.512-26.639-94.726-87.104-94.855-149.545-0.257-62.595 38.342-122.983 94.624-150.007zM878.176 535.303c-18.863 2.669-36.931 9.521-53.535 18.761-39.369 22.328-67.522 63.006-75.478 107.43-2.027 16.194-1.796 32.67-0.488 48.916 9.752 66.368 67.24 123.188 134.455 129.784 21.045 1.335 42.833 1.976 62.98-5.389 32.132-9.752 60.259-30.823 80.124-57.719 24.047-33.081 34.57-76.197 26.639-116.49-6.493-37.033-27.255-71.141-57.103-94.033-32.491-26.331-76.351-37.803-117.593-31.259z","M354.73 523.010c37.701-4.209 77.377 2.002 109.483 23.072 33.851 20.121 58.822 53.356 71.192 90.517 13.859 47.479 8.495 101.604-19.864 142.872-20.711 29.591-50.019 54.1-84.615 65.469-31.978 10.83-66.983 10.882-99.551 2.823-46.94-13.32-87.617-47.966-106.737-93.058-13.936-28.975-15.142-62.107-11.806-93.546 9.47-70.705 70.91-130.631 141.897-138.15zM357.964 533.584c-36.109 5.338-70.859 22.276-95.265 49.711-24.92 26.819-39.42 62.8-40.575 99.372-1.437 38.702 12.935 77.454 38.24 106.66 39.394 45.939 107.661 65.418 164.969 45.092 32.978-10.137 60.927-33.081 80.303-61.286 20.685-31.644 30.232-70.961 23.842-108.457-5.415-42.756-31.336-81.509-66.624-105.659-30.386-20.762-68.446-29.591-104.889-25.433z","M616.966 168.434c23.842-0.873 48.659-2.669 71.449 5.851 41.833 13.961 77.531 46.375 94.162 87.361 14.731 34.749 16.528 75.35 3.003 110.792-11.626 35.417-38.265 64.622-69.909 83.563-38.933 22.174-87.746 25.382-129.604 9.778-42.218-15.373-76.608-50.533-91.39-92.904-10.189-27.435-10.933-57.796-5.056-86.257 12.935-60.439 66.034-109.997 127.346-118.183zM622.176 178.751c-17.144 1.437-33.594 7.314-48.813 15.116-40.832 19.864-69.704 61.491-75.401 106.378-4.389 26.845 0.462 54.434 10.651 79.405 19.659 42.987 60.696 76.582 108.020 83.152 27.743 2.438 56.769 1.489 82.485-10.42 40.601-18.581 72.296-56.461 81.253-100.475 8.572-29.745 1.771-61.081-8.828-89.363-11.087-25.279-29.719-47.273-53.073-62.082-28.077-18.863-62.929-25.562-96.292-21.712z","M357.964 533.584c36.443-4.158 74.503 4.671 104.889 25.433 35.288 24.15 61.209 62.903 66.624 105.659 6.39 37.495-3.157 76.813-23.842 108.457-19.376 28.205-47.325 51.149-80.303 61.286-57.308 20.326-125.575 0.847-164.969-45.092-25.305-29.206-39.677-67.959-38.24-106.66 1.155-36.571 15.655-72.553 40.575-99.372 24.407-27.435 59.156-44.373 95.265-49.711zM365.56 543.593c-23.406 2.387-46.811 8.982-66.316 22.533-36.058 22.225-60.49 61.902-65.444 103.837-4.928 35.083 4.953 71.449 24.817 100.552 18.837 26.947 47.196 46.888 78.738 55.999 18.068 4.389 36.879 4.389 55.358 3.721 62.236-4.62 116.541-55.922 126.293-117.26 1.617-16.656 1.668-33.543 0.051-50.199-6.313-37.393-28.539-71.244-58.848-93.726-27.024-19.864-61.697-26.562-94.649-25.459z","M878.176 535.303c41.242-6.544 85.102 4.928 117.593 31.259 29.847 22.892 50.61 57 57.103 94.033 7.93 40.293-2.592 83.409-26.639 116.49-19.864 26.896-47.992 47.966-80.124 57.719-20.146 7.366-41.935 6.724-62.98 5.389-67.214-6.596-124.702-63.416-134.455-129.784-1.309-16.245-1.54-32.722 0.488-48.916 7.956-44.425 36.109-85.102 75.478-107.43 16.605-9.239 34.672-16.091 53.535-18.761zM883.463 553.576c-23.072 3.413-45.092 13.114-63.673 27.178-28.693 20.66-47.376 53.972-52.278 88.798-5.826 36.238 5.98 74.092 28.564 102.631 24.689 29.154 61.209 48.069 99.449 50.456 24.612 0.051 49.942-4.748 71.167-17.734 31.618-16.425 55.358-47.094 63.827-81.663 7.417-21.763 8.495-45.862 1.027-67.779-8.059-33.954-29.539-65.546-60.465-82.51-25.408-17.298-57.462-22.353-87.617-19.376z","M622.176 178.751c33.363-3.85 68.215 2.849 96.292 21.712 23.354 14.808 41.987 36.802 53.073 62.082 10.599 28.282 17.4 59.618 8.828 89.363-8.957 44.014-40.652 81.894-81.253 100.475-25.715 11.908-54.742 12.858-82.485 10.42-47.325-6.57-88.362-40.164-108.020-83.152-10.189-24.971-15.039-52.56-10.651-79.405 5.697-44.887 34.57-86.514 75.401-106.378 15.219-7.802 31.67-13.679 48.813-15.116zM566.126 232.261c-24.099 19.659-41.345 49.378-41.499 80.97-0.077 12.37-0.744 25.023 2.592 37.085 4.774 17.888 14.654 34.005 26.075 48.377 19.12 20.583 45.528 33.954 73.143 38.599 13.705 0.924 27.409-0.051 40.883-2.669 23.688-5.543 44.553-19.607 60.285-37.957 41.653-43.834 36.52-121.161-8.751-160.581-20.891-21.147-50.764-30.207-79.739-32.209-26.46 1.052-53.15 10.522-72.989 28.385z","M365.56 543.593c32.953-1.104 67.625 5.595 94.649 25.459 30.309 22.482 52.535 56.333 58.848 93.726 1.617 16.656 1.566 33.543-0.051 50.199-9.752 61.337-64.058 112.64-126.293 117.26-18.478 0.667-37.29 0.667-55.358-3.721-31.541-9.111-59.9-29.052-78.738-55.999-19.864-29.103-29.745-65.469-24.817-100.552 4.953-41.935 29.385-81.612 65.444-103.837 19.505-13.551 42.91-20.146 66.316-22.533zM348.596 574.338c-13.217 5.235-27.409 8.88-38.83 17.708-7.571 6.005-14.449 12.883-21.122 19.89-10.24 10.394-15.039 24.535-22.353 36.879-2.9 12.832-6.236 25.792-5.98 39.061-0.128 13.14 3.593 25.844 6.185 38.625 7.417 13.089 12.421 27.948 23.508 38.599 22.123 24.15 54.254 38.933 87.104 39.215 17.477 1.668 33.646-6.082 50.019-10.83 19.582-11.087 36.186-27.204 49.070-45.554 24.15-39.677 21.917-94.572-7.417-131.041-14.808-20.608-37.316-34.108-60.952-42.397-19.53-3.747-39.779-5.261-59.233-0.154z","M883.463 553.576c30.155-2.977 62.21 2.079 87.617 19.376 30.925 16.964 52.406 48.557 60.465 82.51 7.468 21.917 6.39 46.016-1.027 67.779-8.469 34.57-32.209 65.238-63.827 81.663-21.224 12.986-46.555 17.785-71.167 17.734-38.24-2.387-74.76-21.301-99.449-50.456-22.584-28.539-34.39-66.393-28.564-102.631 4.902-34.826 23.585-68.138 52.278-88.798 18.581-14.064 40.601-23.765 63.673-27.178zM875.918 571.797c-1.335 1.052-3.952 3.105-5.287 4.158-3.798 0.231-7.622 0.488-11.395 0.821-11.215 8.238-24.047 14.167-34.339 23.714-12.909 10.137-22.276 24.073-29.231 38.779-3.619 8.726-6.544 17.734-11.292 25.946 0.821 3.413 1.155 6.904 1.001 10.445-2.027 5.646-3.619 11.498-3.362 17.58 4.389 8.29 3.465 18.093 7.083 26.639 5.030 12.524 9.367 25.613 18.042 36.238 13.653 17.144 31.028 32.183 52.047 39.317 6.339 2.156 12.421 4.953 18.17 8.367 1.36-0.282 4.132-0.847 5.518-1.129 4.953 1.822 9.906 4.491 15.373 3.875 13.32-1.412 27.974-0.77 38.958-9.778 1.386 0.411 4.158 1.258 5.543 1.694 14.757-10.651 32.26-17.657 43.886-32.311 2.72-0.128 5.441-0.231 8.213-0.334-0.77-1.566-2.284-4.722-3.054-6.288 5.672-6.955 10.702-14.423 15.245-22.148 0.077-1.745 0.257-5.261 0.334-7.006 2.361-2.489 4.697-5.030 6.981-7.597 0.436-7.443 1.925-14.757 4.774-21.661 0.744-9.239 0.744-18.504 0.642-27.743-1.078-1.232-3.259-3.696-4.337-4.902-0.18-4.953-0.565-9.855-1.027-14.757-6.75-12.139-12.293-24.997-20.891-36.007 0.257-1.976 0.796-5.954 1.078-7.93-2.669-0.103-5.338-0.205-7.982-0.308-7.468-7.648-14.449-16.476-24.509-20.865-7.006-3.105-13.551-7.135-19.351-12.139-1.668 0.693-5.030 2.13-6.698 2.849-2.438-2.464-4.825-4.928-7.237-7.391-17.554-2.951-35.365-3.747-52.894-0.128z","M566.126 232.261c19.838-17.862 46.529-27.332 72.989-28.385 28.975 2.002 58.848 11.061 79.739 32.209 45.272 39.42 50.404 116.746 8.751 160.581-15.732 18.35-36.597 32.414-60.285 37.957-13.474 2.618-27.178 3.593-40.883 2.669-27.615-4.645-54.023-18.016-73.143-38.599-11.421-14.372-21.301-30.489-26.075-48.377-3.336-12.062-2.669-24.715-2.592-37.085 0.154-31.593 17.4-61.312 41.499-80.97zM622.33 235.854c-31.541 4.132-55.743 30.771-66.47 59.361-4.671 21.353-5.646 45.323 5.466 64.982 7.648 13.756 17.991 26.434 31.285 35.032 21.815 12.113 48.557 18.837 72.861 10.497 21.353-8.623 42.372-22.533 52.483-43.963 13.859-24.971 12.575-56.769-0.257-81.869-5.21-13.807-17.169-23.098-28.718-31.439-18.863-14.244-44.142-14.423-66.65-12.601z","M875.918 571.797c17.529-3.619 35.34-2.823 52.894 0.128 2.412 2.464 4.799 4.928 7.237 7.391 1.668-0.719 5.030-2.156 6.698-2.849 5.8 5.005 12.344 9.034 19.351 12.139 10.060 4.389 17.041 13.217 24.509 20.865 2.643 0.103 5.312 0.205 7.982 0.308-0.282 1.976-0.821 5.954-1.078 7.93 8.597 11.010 14.141 23.868 20.891 36.007 0.462 4.902 0.847 9.804 1.027 14.757 1.078 1.206 3.259 3.67 4.337 4.902 0.103 9.239 0.103 18.504-0.642 27.743-2.849 6.904-4.337 14.218-4.774 21.661-2.284 2.566-4.62 5.107-6.981 7.597-0.077 1.745-0.257 5.261-0.334 7.006-4.543 7.725-9.573 15.193-15.245 22.148 0.77 1.566 2.284 4.722 3.054 6.288-2.772 0.103-5.492 0.205-8.213 0.334-11.626 14.654-29.129 21.661-43.886 32.311-1.386-0.436-4.158-1.283-5.543-1.694-10.984 9.008-25.638 8.367-38.958 9.778-5.466 0.616-10.42-2.053-15.373-3.875-1.386 0.282-4.158 0.847-5.518 1.129-5.749-3.413-11.831-6.211-18.17-8.367-21.019-7.135-38.394-22.174-52.047-39.317-8.674-10.625-13.012-23.714-18.042-36.238-3.619-8.546-2.695-18.35-7.083-26.639-0.257-6.082 1.335-11.934 3.362-17.58 0.154-3.542-0.18-7.032-1.001-10.445 4.748-8.213 7.674-17.221 11.292-25.946 6.955-14.706 16.322-28.641 29.231-38.779 10.291-9.547 23.123-15.475 34.339-23.714 3.773-0.334 7.597-0.59 11.395-0.821 1.335-1.052 3.952-3.105 5.287-4.158zM884.875 598.822c-9.624 2.387-18.889 6.057-27.846 10.189-12.319 5.62-20.788 16.656-29.001 26.947-16.579 20.891-17.811 49.788-13.294 75.016 3.85 21.789 19.659 38.625 36.546 51.688 8.597 4.876 18.376 7.109 27.384 11.138 18.119 8.187 39.548 6.057 56.897-3.028 41.371-16.502 66.778-66.188 52.175-109.073-4.799-20.993-20.557-36.674-36.802-49.583-19.299-12.55-43.295-18.94-66.060-13.294z","M348.596 574.338c19.453-5.107 39.702-3.593 59.233 0.154 23.637 8.29 46.144 21.789 60.952 42.397 29.334 36.469 31.567 91.364 7.417 131.041-12.883 18.35-29.488 34.467-49.070 45.554-16.374 4.748-32.542 12.498-50.019 10.83-32.85-0.282-64.982-15.065-87.104-39.215-11.087-10.651-16.091-25.51-23.508-38.599-2.592-12.781-6.313-25.485-6.185-38.625-0.257-13.268 3.080-26.229 5.98-39.061 7.314-12.344 12.113-26.485 22.353-36.879 6.673-7.006 13.551-13.884 21.122-19.89 11.421-8.828 25.613-12.473 38.83-17.708zM368.101 600.233c-16.348 2.027-32.465 7.853-45.477 18.093-14.629 11.395-24.176 28.025-30.515 45.169-8.623 27.281-0.642 57.667 16.733 79.79 14.526 17.195 35.776 28.231 57.95 31.362 22.199-0.308 46.555-3.003 64.186-17.888 14.064-11.857 27.050-26.973 29.95-45.759 3.439-21.070 3.285-43.834-5.466-63.596-9.675-15.604-22.148-30.925-39.369-38.394-15.091-6.211-31.49-11.061-47.992-8.777z","M622.33 235.854c22.507-1.822 47.787-1.643 66.65 12.601 11.549 8.341 23.508 17.631 28.718 31.439 12.832 25.1 14.115 56.897 0.257 81.869-10.112 21.43-31.131 35.34-52.483 43.963-24.304 8.341-51.046 1.617-72.861-10.497-13.294-8.597-23.637-21.276-31.285-35.032-11.113-19.659-10.137-43.629-5.466-64.982 10.728-28.59 34.929-55.229 66.47-59.361z","M884.875 598.822c22.764-5.646 46.76 0.744 66.060 13.294 16.245 12.909 32.003 28.59 36.802 49.583 14.603 42.885-10.805 92.571-52.175 109.073-17.349 9.085-38.779 11.215-56.897 3.028-9.008-4.029-18.786-6.262-27.384-11.138-16.887-13.063-32.696-29.899-36.546-51.688-4.517-25.228-3.285-54.126 13.294-75.016 8.213-10.291 16.682-21.327 29.001-26.947 8.957-4.132 18.222-7.802 27.846-10.189z","M368.101 600.233c16.502-2.284 32.901 2.566 47.992 8.777 17.221 7.468 29.693 22.79 39.369 38.394 8.751 19.761 8.905 42.526 5.466 63.596-2.9 18.786-15.886 33.902-29.95 45.759-17.631 14.885-41.987 17.58-64.186 17.888-22.174-3.131-43.424-14.167-57.95-31.362-17.375-22.123-25.356-52.509-16.733-79.79 6.339-17.144 15.886-33.774 30.515-45.169 13.012-10.24 29.129-16.066 45.477-18.093z"],"width":1273,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["scgoggles"],"grid":14},"attrs":[],"properties":{"order":547,"id":11,"name":"scgoggles","prevSize":32,"code":59654,"codes":[59654]},"setIdx":0,"setId":1,"iconIdx":30},{"icon":{"paths":["M1104.869 1016.789c-5.151 5.151-10.817 7.726-18.028 7.726s-12.877-2.575-18.028-7.726-7.211-10.817-7.211-18.028 2.575-12.877 7.211-18.028c5.151-5.151 10.817-7.211 18.028-7.211s12.877 2.575 18.028 7.211c5.151 5.151 7.726 10.817 7.726 18.028 0 6.696-2.575 12.877-7.726 18.028zM1071.388 983.308c-4.121 4.121-6.181 9.272-6.181 15.453s2.060 11.332 6.181 15.453 9.272 6.696 15.453 6.696 11.332-2.060 15.453-6.696c4.121-4.121 6.181-9.272 6.181-15.453s-2.060-11.332-6.181-15.453-9.272-6.181-15.453-6.181c-5.666-0.515-10.817 1.545-15.453 6.181zM1086.841 984.338c3.606 0 6.181 0.515 7.726 1.030 3.091 1.030 4.121 3.606 4.121 7.211 0 2.575-1.030 4.121-2.575 5.666-1.030 0.515-2.575 1.030-4.121 1.545 2.060 0.515 3.606 1.030 4.636 2.575s1.545 3.091 1.545 4.121v6.181h-4.636v-3.606c0-3.091-1.030-5.151-2.575-6.181-1.030-0.515-3.091-1.030-5.666-1.030h-3.606v10.817h-5.151v-27.815h10.302v-0.515zM1091.992 988.974c-1.030-0.515-3.091-1.030-6.181-1.030h-4.121v9.787h4.636c2.060 0 3.606 0 4.636-0.515 2.060-0.515 3.091-2.060 3.091-4.121s-1.030-3.091-2.060-4.121v0z","M918.922 0h-721.642c-108.684 0-197.28 86.020-197.28 191.099v641.288c0 106.624 85.505 190.584 195.219 190.584h722.157c109.714 0 195.219-83.96 195.219-190.584v-641.288c0-107.139-84.99-191.099-193.674-191.099zM1090.447 832.386c0 94.777-76.233 168.435-173.586 168.435h-721.642c-97.352 0.515-173.070-73.658-173.070-168.435v-641.288c0-94.777 76.748-169.465 175.131-169.465h722.157c96.322 0 171.525 74.173 171.525 169.465v641.288h-0.515z","M955.493 608.837h-139.59l-22.149-139.074-81.384 138.044h-15.453c-9.272-15.968-12.877-39.147-12.877-53.569 0-23.694 1.545-46.873 1.545-77.264 0-40.177-11.847-61.296-43.268-69.022v-1.030c66.447-9.272 96.837-53.569 96.837-115.38 0-88.080-58.72-107.139-135.469-107.139h-206.551l-87.565 414.133h109.714l31.936-150.922h73.143c39.147 0 55.115 19.058 55.115 55.63 0 27.815-3.091 49.964-3.091 71.082 0 7.726 1.545 26.27 7.211 33.481l79.324 83.96-68.507 146.801 146.286-87.050 109.199 83.96-20.089-138.559 125.682-88.080zM557.328 370.35h-87.565l21.119-99.928h81.384c28.845 0 59.235 7.726 59.235 42.753 0 44.813-34.511 57.175-74.173 57.175zM742.761 727.308l-101.988 60.781 46.873-99.928-56.66-59.751h93.231l58.72-99.412 15.968 100.443h92.716l-83.445 58.205 14.938 101.988-80.354-62.326z"],"width":1113,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["rockstar"],"grid":14},"attrs":[],"properties":{"order":548,"id":12,"name":"rockstar","prevSize":32,"code":59653,"codes":[59653,59654,59655]},"setIdx":0,"setId":1,"iconIdx":31},{"icon":{"paths":["M992 512c0 274-222.4 496-496.8 496-227.6 0-419.2-152.6-478-360.8l190.4 78.6c12.8 64.2 69.8 112.8 137.8 112.8 78.4 0 143.8-64.8 140.4-147l169-120.4c104.2 2.6 191.6-81.8 191.6-187 0-103.2-84-187-187.4-187s-187.4 84-187.4 187v2.4l-118.4 171.4c-31-1.8-61.4 6.8-87 24.2l-266.2-110c20.4-255.4 234.2-456.2 495.2-456.2 274.4 0 496.8 222 496.8 496zM311.4 768.6l-61-25.2c11.393 23.29 30.397 41.387 53.711 51.338l0.689 0.262c53.8 22.4 115.6-3.2 138-56.8 10.8-26 11-54.6 0.2-80.6s-31-46.4-57-57.2c-25.8-10.8-53.4-10.4-77.8-1.2l63 26c39.6 16.4 58.4 61.8 41.8 101.4-16.6 39.8-62 58.4-101.6 42zM659 508.8c-68.8 0-124.8-56-124.8-124.6s56-124.6 124.8-124.6 124.8 56 124.8 124.6-55.8 124.6-124.8 124.6zM659.2 477.6c51.8 0 93.8-42 93.8-93.6 0-51.8-42-93.6-93.8-93.6s-93.8 42-93.8 93.6c0.2 51.6 42.2 93.6 93.8 93.6z"],"width":992,"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["steam"],"grid":14},"attrs":[{}],"properties":{"order":549,"id":13,"name":"steam","prevSize":32,"code":59652},"setIdx":0,"setId":1,"iconIdx":32},{"icon":{"paths":["M512 147.2c200.96 0 364.8 163.84 364.8 364.8s-163.84 364.8-364.8 364.8c-201.327-0.364-364.437-163.473-364.8-364.765l-0-0.035c0-200.96 163.84-364.8 364.8-364.8zM512 64c-247.040 0-448 200.96-448 448s200.96 448 448 448 448-200.96 448-448-200.96-448-448-448zM576 256v320h-128v-320h128zM576 640v128h-128v-128h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["github-issue"],"grid":14},"attrs":[{}],"properties":{"order":550,"id":14,"name":"github-issue","prevSize":32,"code":59648},"setIdx":0,"setId":1,"iconIdx":33},{"icon":{"paths":["M961.714 461.714l-424 423.429c-14.286 14.286-37.143 14.286-51.429 0l-424-423.429c-14.286-14.286-14.286-37.714 0-52l94.857-94.286c14.286-14.286 37.143-14.286 51.429 0l303.429 303.429 303.429-303.429c14.286-14.286 37.143-14.286 51.429 0l94.857 94.286c14.286 14.286 14.286 37.714 0 52z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[{}]},"tags":["chevron-down"],"grid":14},"attrs":[{}],"properties":{"order":551,"id":15,"prevSize":32,"code":59651,"name":"chevron-down"},"setIdx":0,"setId":1,"iconIdx":34},{"icon":{"paths":["M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z","M756.288 391.252c-7.414-6.080-17.164-8.514-26.562-6.632l-320 64c-14.958 2.994-25.726 16.126-25.726 31.38v236.876c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-229.766l256-51.202v133.842c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-319.998c0-9.586-4.298-18.668-11.712-24.748z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["file-music","file","document","file-song","file-audio"],"defaultCode":59688,"grid":16},"attrs":[],"properties":{"ligatures":"file-music, file6","name":"file-music1","order":526,"id":0,"prevSize":32,"code":59688},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384s171.922 384 384 384c95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["search","magnifier","magnifying-glass","inspect","find"],"defaultCode":59782,"grid":16},"attrs":[],"properties":{"ligatures":"search, magnifier","name":"search2","order":527,"id":1,"prevSize":32,"code":59782},"setIdx":0,"setId":1,"iconIdx":10},{"icon":{"paths":["M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["earth","globe","language","web","internet","sphere","planet"],"defaultCode":59850,"grid":16},"attrs":[],"properties":{"ligatures":"earth, globe2","name":"earth","order":528,"id":2,"prevSize":32,"code":59850},"setIdx":0,"setId":1,"iconIdx":11},{"icon":{"paths":["M440.236 635.766c-13.31 0-26.616-5.076-36.77-15.23-95.134-95.136-95.134-249.934 0-345.070l192-192c46.088-46.086 107.36-71.466 172.534-71.466s126.448 25.38 172.536 71.464c95.132 95.136 95.132 249.934 0 345.070l-87.766 87.766c-20.308 20.308-53.23 20.308-73.54 0-20.306-20.306-20.306-53.232 0-73.54l87.766-87.766c54.584-54.586 54.584-143.404 0-197.99-26.442-26.442-61.6-41.004-98.996-41.004s-72.552 14.562-98.996 41.006l-192 191.998c-54.586 54.586-54.586 143.406 0 197.992 20.308 20.306 20.306 53.232 0 73.54-10.15 10.152-23.462 15.23-36.768 15.23z","M256 1012c-65.176 0-126.45-25.38-172.534-71.464-95.134-95.136-95.134-249.934 0-345.070l87.764-87.764c20.308-20.306 53.234-20.306 73.54 0 20.308 20.306 20.308 53.232 0 73.54l-87.764 87.764c-54.586 54.586-54.586 143.406 0 197.992 26.44 26.44 61.598 41.002 98.994 41.002s72.552-14.562 98.998-41.006l192-191.998c54.584-54.586 54.584-143.406 0-197.992-20.308-20.308-20.306-53.232 0-73.54 20.306-20.306 53.232-20.306 73.54 0.002 95.132 95.134 95.132 249.932 0.002 345.068l-192.002 192c-46.090 46.088-107.364 71.466-172.538 71.466z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["link","chain","url","uri","anchor"],"defaultCode":59851,"grid":16},"attrs":[],"properties":{"ligatures":"link, chain","name":"link","order":529,"id":3,"prevSize":32,"code":59851},"setIdx":0,"setId":1,"iconIdx":12},{"icon":{"paths":["M512.008 12.642c-282.738 0-512.008 229.218-512.008 511.998 0 226.214 146.704 418.132 350.136 485.836 25.586 4.738 34.992-11.11 34.992-24.632 0-12.204-0.48-52.542-0.696-95.324-142.448 30.976-172.504-60.41-172.504-60.41-23.282-59.176-56.848-74.916-56.848-74.916-46.452-31.778 3.51-31.124 3.51-31.124 51.4 3.61 78.476 52.766 78.476 52.766 45.672 78.27 119.776 55.64 149.004 42.558 4.588-33.086 17.852-55.68 32.506-68.464-113.73-12.942-233.276-56.85-233.276-253.032 0-55.898 20.004-101.574 52.76-137.428-5.316-12.9-22.854-64.972 4.952-135.5 0 0 43.006-13.752 140.84 52.49 40.836-11.348 84.636-17.036 128.154-17.234 43.502 0.198 87.336 5.886 128.256 17.234 97.734-66.244 140.656-52.49 140.656-52.49 27.872 70.528 10.35 122.6 5.036 135.5 32.82 35.856 52.694 81.532 52.694 137.428 0 196.654-119.778 239.95-233.79 252.624 18.364 15.89 34.724 47.046 34.724 94.812 0 68.508-0.596 123.644-0.596 140.508 0 13.628 9.222 29.594 35.172 24.566 203.322-67.776 349.842-259.626 349.842-485.768 0-282.78-229.234-511.998-511.992-511.998z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["github","brand","octacat","social"],"defaultCode":60080,"grid":16},"attrs":[],"properties":{"ligatures":"github, brand40","name":"github","order":530,"id":4,"prevSize":32,"code":60080},"setIdx":0,"setId":1,"iconIdx":13},{"icon":{"paths":["M1088 128h-64v-64c0-35.2-28.8-64-64-64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h64v64c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64zM128 192v640h-63.886c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v63.884h-768c-35.2 0-64 28.8-64 64v0zM1088 959.884c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v767.768z","M960 352c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z","M1024 896h-768v-128l224-384 256 320h64l224-192z"],"width":1152,"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["images","pictures","photos","graphics"],"defaultCode":59662,"grid":16},"attrs":[],"properties":{"ligatures":"images, pictures","name":"images","order":531,"id":5,"prevSize":32,"code":59662},"setIdx":0,"setId":1,"iconIdx":14},{"icon":{"paths":["M512 576l256-256h-192v-256h-128v256h-192zM744.726 471.272l-71.74 71.742 260.080 96.986-421.066 157.018-421.066-157.018 260.080-96.986-71.742-71.742-279.272 104.728v256l512 192 512-192v-256z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["download","save","store","arrow"],"defaultCode":59744,"grid":16},"attrs":[],"properties":{"ligatures":"download, save","name":"download","order":532,"id":6,"prevSize":32,"code":59744},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M96 0l-96 160v736h256v128h128l128-128h160l288-288v-608h-864zM832 544l-160 160h-160l-128 128v-128h-192v-576h640v416z","M608 256h96v256h-96v-256z","M416 256h96v256h-96v-256z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["twitch","brand","social"],"defaultCode":60063,"grid":16},"attrs":[],"properties":{"ligatures":"twitch, brand23","name":"twitch","order":533,"id":7,"prevSize":32,"code":60063},"setIdx":0,"setId":1,"iconIdx":16},{"icon":{"paths":["M1013.8 307.2c0 0-10-70.6-40.8-101.6-39-40.8-82.6-41-102.6-43.4-143.2-10.4-358.2-10.4-358.2-10.4h-0.4c0 0-215 0-358.2 10.4-20 2.4-63.6 2.6-102.6 43.4-30.8 31-40.6 101.6-40.6 101.6s-10.2 82.8-10.2 165.8v77.6c0 82.8 10.2 165.8 10.2 165.8s10 70.6 40.6 101.6c39 40.8 90.2 39.4 113 43.8 82 7.8 348.2 10.2 348.2 10.2s215.2-0.4 358.4-10.6c20-2.4 63.6-2.6 102.6-43.4 30.8-31 40.8-101.6 40.8-101.6s10.2-82.8 10.2-165.8v-77.6c-0.2-82.8-10.4-165.8-10.4-165.8zM406.2 644.8v-287.8l276.6 144.4-276.6 143.4z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"colorPermutations":{"125525525514311":[]},"tags":["youtube","brand","social"],"defaultCode":60061,"grid":16},"attrs":[],"properties":{"ligatures":"youtube, brand21","name":"youtube","order":534,"id":8,"prevSize":32,"code":60061},"setIdx":0,"setId":1,"iconIdx":17},{"icon":{"paths":["M917.806 229.076c-22.21-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.886 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924v0zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.982 17.78 50.678 41.878 81.374 72.572v0zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.324 32 32 32h224v624z","M756.288 391.252c-7.414-6.080-17.164-8.514-26.562-6.632l-320 64c-14.958 2.994-25.726 16.126-25.726 31.38v236.876c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-229.766l256-51.202v133.842c-18.832-8.174-40.678-12.876-64-12.876-70.692 0-128 42.98-128 96s57.308 96 128 96 128-42.98 128-96v-319.998c0-9.586-4.298-18.668-11.712-24.748z"],"attrs":[],"isMulticolor":false,"isMulticolor2":false,"tags":["file-music","file","document","file-song","file-audio"],"defaultCode":59688,"grid":16},"attrs":[],"properties":{"ligatures":"file-music, file6","name":"file-music","order":535,"id":9,"prevSize":32,"code":59689},"setIdx":0,"setId":1,"iconIdx":18}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"showSelector":true,"showMetrics":true,"showMetadata":true,"showVersion":true},"imagePref":{"prefix":"icon-","png":false,"useClassSelector":false,"color":0,"bgColor":16777215,"classSelector":".icon","height":32,"columns":16,"margin":16,"addBgColor":false,"name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16,"showGrid":false}} \ No newline at end of file diff --git a/css/icomoon/style.css b/css/icomoon/style.css deleted file mode 100644 index 07b9a3c..0000000 --- a/css/icomoon/style.css +++ /dev/null @@ -1,132 +0,0 @@ -@font-face { - font-family: 'icomoon'; - src: url('fonts/icomoon.eot?afirs0'); - src: url('fonts/icomoon.eot?afirs0#iefix') format('embedded-opentype'), - url('fonts/icomoon.ttf?afirs0') format('truetype'), - url('fonts/icomoon.woff?afirs0') format('woff'), - url('fonts/icomoon.svg?afirs0#icomoon') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; -} - -[class^="icon-"], [class*=" icon-"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'icomoon' !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-dolphin:before { - content: "\e919"; -} -.icon-cxbxr:before { - content: "\e918"; -} -.icon-pcsx2:before { - content: "\e917"; -} -.icon-ppsspp:before { - content: "\e916"; -} -.icon-ogxbox:before { - content: "\e915"; -} -.icon-xbox:before { - content: "\e911"; -} -.icon-playstation:before { - content: "\e910"; -} -.icon-gog:before { - content: "\e901"; -} -.icon-gtaforums:before { - content: "\e902"; -} -.icon-octiconcheck:before { - content: "\e912"; -} -.icon-octiconinfo:before { - content: "\e913"; -} -.icon-octiconx:before { - content: "\e914"; -} -.icon-origin:before { - content: "\e90f"; -} -.icon-ea:before { - content: "\e90d"; -} -.icon-youtube2:before { - content: "\e90c"; -} -.icon-notes:before { - content: "\e90b"; -} -.icon-ubisoft:before { - content: "\e909"; -} -.icon-mafia-1-hero:before { - content: "\e90a"; -} -.icon-circle:before { - content: "\e908"; -} -.icon-shill:before { - content: "\e907"; -} -.icon-scgoggles:before { - content: "\e906"; -} -.icon-rockstar:before { - content: "\e905"; -} -.icon-steam:before { - content: "\e904"; -} -.icon-github-issue:before { - content: "\e900"; -} -.icon-chevron-down:before { - content: "\e903"; -} -.icon-file-music1:before { - content: "\e928"; -} -.icon-search2:before { - content: "\e986"; -} -.icon-earth:before { - content: "\e9ca"; -} -.icon-link:before { - content: "\e9cb"; -} -.icon-github:before { - content: "\eab0"; -} -.icon-images:before { - content: "\e90e"; -} -.icon-download:before { - content: "\e960"; -} -.icon-twitch:before { - content: "\ea9f"; -} -.icon-youtube:before { - content: "\ea9d"; -} -.icon-file-music:before { - content: "\e929"; -} diff --git a/css/p2dfx.css b/css/p2dfx.css deleted file mode 100644 index 2017a34..0000000 --- a/css/p2dfx.css +++ /dev/null @@ -1,494 +0,0 @@ -body { - width: 100%; - height: 100%; - font-family: Lora, "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #fff; - background-color: #000; -} - -html { - width: 100%; - height: 100%; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 0 0 35px; - text-transform: uppercase; - font-family: Montserrat, "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 700; - letter-spacing: 1px; -} - -p { - margin: 0 0 25px; - font-size: 18px; - line-height: 1.5; -} - -@media (min-width: 767px) { - p { - margin: 0 0 35px; - font-size: 20px; - line-height: 1.6; - } -} - -a { - color: #28c3ab; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -a:hover, -a:focus { - text-decoration: none; - color: #176e61; -} - -.light { - font-weight: 400; -} - -.navbar { - margin-bottom: 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.3); - text-transform: uppercase; - font-family: Montserrat, "Helvetica Neue", Helvetica, Arial, sans-serif; - background-color: #000; -} - -.navbar-brand { - font-weight: 700; -} - -.navbar-brand:focus { - outline: 0; -} - -.navbar-custom a { - color: #fff; -} - -.navbar-custom .nav li a { - -webkit-transition: background 0.3s ease-in-out; - -moz-transition: background 0.3s ease-in-out; - transition: background 0.3s ease-in-out; -} - -.navbar-custom .nav li a:hover, -.navbar-custom .nav li a:focus, -.navbar-custom .nav li.active { - outline: 0; - background-color: rgba(255, 255, 255, 0.2); -} - -.navbar-toggle { - padding: 4px 6px; - font-size: 16px; - color: #fff; -} - -.navbar-toggle:focus, -.navbar-toggle:active { - outline: 0; -} - -@media (min-width: 767px) { - .navbar { - padding: 20px 0; - border-bottom: 0; - letter-spacing: 1px; - background: 0 0; - -webkit-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; - -moz-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; - transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; - } - - .top-nav-collapse { - padding: 0; - background-color: #000; - } - - .navbar-custom.top-nav-collapse { - border-bottom: 1px solid rgba(255, 255, 255, 0.3); - } -} - -.intro { - display: table; - width: 100%; - height: auto; - padding: 100px 0; - text-align: center; - color: #fff; - background: url(../screens/2dfx/intro-bg.jpg) no-repeat bottom center scroll; - background-color: #000; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - -o-background-size: cover; - position: relative; -} - -#header { - background: url(../screens/2dfx/intro-bg.jpg) center center no-repeat; -} -#header:before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - background: -moz-linear-gradient(to top, transparent, #000000), -moz-linear-gradient(to bottom, transparent, #000000); - background: -webkit-linear-gradient(to top, transparent, #000000), -webkit-linear-gradient(to bottom, transparent, #000000); - background: -o-linear-gradient(to top, transparent, #000000), -o-linear-gradient(to bottom, transparent, #000000); - background: -ms-linear-gradient(to top, transparent, #000000), -ms-linear-gradient(to bottom, transparent, #000000); - background: linear-gradient(to top, transparent, #000000), linear-gradient(to bottom, transparent, #000000); - opacity: 1; -} - -#about { - background: url(../screens/2dfx/p2dfx_gtavcbg.jpg) center center no-repeat; -} -#about:before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - background: -moz-linear-gradient(to top, transparent, #000000), -moz-linear-gradient(to bottom, transparent, #000000); - background: -webkit-linear-gradient(to top, transparent, #000000), -webkit-linear-gradient(to bottom, transparent, #000000); - background: -o-linear-gradient(to top, transparent, #000000), -o-linear-gradient(to bottom, transparent, #000000); - background: -ms-linear-gradient(to top, transparent, #000000), -ms-linear-gradient(to bottom, transparent, #000000); - background: linear-gradient(to top, transparent, #000000), linear-gradient(to bottom, transparent, #000000); - opacity: 1; -} - -#media { - background: url(../screens/2dfx/p2dfx_gta3bg.jpg) center center no-repeat; -} -#media:before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - background: -moz-linear-gradient(to top, transparent, #000000), -moz-linear-gradient(to bottom, transparent, #000000); - background: -webkit-linear-gradient(to top, transparent, #000000), -webkit-linear-gradient(to bottom, transparent, #000000); - background: -o-linear-gradient(to top, transparent, #000000), -o-linear-gradient(to bottom, transparent, #000000); - background: -ms-linear-gradient(to top, transparent, #000000), -ms-linear-gradient(to bottom, transparent, #000000); - background: linear-gradient(to top, transparent, #000000), linear-gradient(to bottom, transparent, #000000); - opacity: 1; -} - -#contact { - background: url(../screens/2dfx/p2dfx_gtaivbg.jpg) center center no-repeat; -} -#contact:before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - background: -moz-linear-gradient(to top, transparent, #000000), -moz-linear-gradient(to bottom, transparent, #000000); - background: -webkit-linear-gradient(to top, transparent, #000000), -webkit-linear-gradient(to bottom, transparent, #000000); - background: -o-linear-gradient(to top, transparent, #000000), -o-linear-gradient(to bottom, transparent, #000000); - background: -ms-linear-gradient(to top, transparent, #000000), -ms-linear-gradient(to bottom, transparent, #000000); - background: linear-gradient(to top, transparent, #000000), linear-gradient(to bottom, transparent, #000000); - opacity: 1; -} - -.intro-body { - display: table-cell; - vertical-align: middle; -} - -.brand-heading { - font-size: 40px; -} - -.intro-text { - font-size: 18px; -} - -@media (min-width: 767px) { - .intro { - height: 100%; - padding: 0; - } - - .brand-heading { - font-size: 100px; - } - - .intro-text { - font-size: 25px; - } -} - -.btn-circle { - width: 70px; - height: 70px; - margin-top: 15px; - padding: 7px 16px; - border: 2px solid #fff; - border-radius: 35px; - font-size: 40px; - color: #fff; - background: 0 0; - -webkit-transition: background 0.3s ease-in-out; - -moz-transition: background 0.3s ease-in-out; - transition: background 0.3s ease-in-out; -} - -.btn-circle:hover, -.btn-circle:focus { - outline: 0; - color: #fff; - background: rgba(255, 255, 255, 0.1); -} - -.page-scroll .btn-circle i.animated { - transition-property: -webkit-transform; - -webkit-transition-property: -webkit-transform; - -webkit-transition-duration: 1s; - transition-duration: 1s; - -moz-transition-property: -moz-transform; - -moz-transition-duration: 1s; -} - -.page-scroll .btn-circle:hover i.animated { - animation-name: pulse; - -webkit-animation-name: pulse; - -moz-animation-name: pulse; - animation-duration: 1.5s; - -webkit-animation-duration: 1.5s; - -moz-animation-duration: 1.5s; - animation-iteration-count: infinite; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-timing-function: linear; - -webkit-animation-timing-function: linear; - -moz-animation-timing-function: linear; -} - -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 50% { - -webkit-transform: scale(1.2); - transform: scale(1.2); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@-moz-keyframes pulse { - 0% { - -moz-transform: scale(1); - transform: scale(1); - } - - 50% { - -moz-transform: scale(1.2); - transform: scale(1.2); - } - - 100% { - -moz-transform: scale(1); - transform: scale(1); - } -} - -.content-section { - padding-top: 100px; -} - -.download-section { - width: 100%; - padding: 50px 0; - color: #fff; - background: url(../screens/2dfx/downloads-bg.jpg) no-repeat center center scroll; - background-color: #000; - -webkit-background-size: cover; - -moz-background-size: cover; - background-size: cover; - -o-background-size: cover; -} - -#map { - width: 100%; - height: 50px; - margin-top: 100px; -} - -@media (min-width: 767px) { - .content-section { - padding-top: 250px; - } - - .download-section { - padding: 100px 0; - } - - #map { - height: 50px; - margin-top: 250px; - } -} - -.banner-social-buttons { - margin-top: 0; -} - -@media (max-width: 1199px) { - ul.banner-social-buttons { - margin-top: 15px; - } -} - -@media (max-width: 767px) { - ul.banner-social-buttons > li { - display: block; - margin-bottom: 20px; - padding: 0; - } - - ul.banner-social-buttons > li:last-child { - margin-bottom: 0; - } -} - -::-moz-selection { - text-shadow: none; - background: #fcfcfc; - background: rgba(255, 255, 255, 0.2); -} - -::selection { - text-shadow: none; - background: #fcfcfc; - background: rgba(255, 255, 255, 0.2); -} - -img::selection { - background: 0 0; -} - -img::-moz-selection { - background: 0 0; -} - -body { - webkit-tap-highlight-color: rgba(255, 255, 255, 0.2); -} - -.icon-gtavcs { - background-image: url("../screens/2dfx/vcsico.jpg"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -3px; -} - -.icon-gtalcs { - background-image: url("../screens/2dfx/lcsico.jpg"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -3px; -} - -.icon-gtaiv { - background-image: url("../screens/2dfx/ivico.png"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -3px; -} - -.icon-gtasa { - background-image: url("../screens/2dfx/saico.jpg"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -3px; -} - -.icon-gtavc { - background-image: url("../screens/2dfx/vcico.jpg"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -3px; -} - -.icon-gta3 { - background-image: url("../screens/2dfx/3ico.jpg"); - background-repeat: no-repeat; - background-position: center center; - height: 16px; - width: 16px; - margin-bottom: -2px; -} - -.icon-gtaforums { - background-image: url("http://gtaforums.com/favicon.png"); - background-repeat: no-repeat; - background-position: center center; - height: 14px; - width: 14px; -} - -.neon-glow { - text-shadow: 0 0 10px rgba(255, 255, 255, 1), 0 0 20px rgba(255, 255, 255, 1), 0 0 30px rgba(255, 255, 255, 1), 0 0 40px #ff00de, 0 0 70px #ff00de, 0 0 80px #ff00de, 0 0 100px #ff00de; - -webkit-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - -moz-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - -o-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); -} - -.brand-neon { - display: inline-block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border: none; - font: normal 18px / normal "Warnes", Helvetica, sans-serif; - color: rgba(255, 255, 255, 1); - text-decoration: normal; - text-align: center; - -o-text-overflow: clip; - text-overflow: clip; - white-space: pre; - text-shadow: 0 0 10px rgba(255, 255, 255, 1), 0 0 20px rgba(255, 255, 255, 1), 0 0 30px rgba(255, 255, 255, 1), 0 0 40px #00ffff, 0 0 70px #00ffff, 0 0 80px #00ffff, 0 0 100px #00ffff; - -webkit-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - -moz-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - -o-transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); - transition: all 200ms cubic-bezier(0.42, 0, 0.58, 1); -} diff --git a/css/wfp.css b/css/wfp.css deleted file mode 100644 index 0d80075..0000000 --- a/css/wfp.css +++ /dev/null @@ -1,927 +0,0 @@ -html { - overflow-y: scroll; -} - -body { - background: #fefefe url('data:image/svg+xml,\ - \ - \ - \ - '); - background-size: 30px 30px; - background-position: 0 0, 15px 15px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; -} - -@media (min-width: 1200px) { - .container { - max-width: 1170px; - } -} - -a:not([class]) { - text-decoration: none; -} - -a:not([class]):hover { - text-decoration: underline; -} - -.navbar-custom { - padding: 0 0 0 0; - min-height: 50px !important; - padding: 0; - background-color: #000; - border: 0; - font-size: 14px; - line-height: 20px; - white-space: nowrap; -} - -.navbar-custom .navbar-nav>li>a { - color: #cfcfcf; -} - -.navbar-custom .navbar-nav>li>a:hover { - background-color: #fff; - color: #000; -} - -.nav-tabs>li>a:hover, -.nav>li>a:focus, -.nav>li>a:hover { - background-color: transparent; - background: rgba(0, 0, 0, 0.1); -} - -.nav>li>a { - position: relative; - display: block; -} - -.navbar-custom .navbar-brand:focus, -.navbar-custom .navbar-brand:hover { - background-color: #fff; - color: #000; -} - -.navbar-nav>li>a { - padding-top: 15px; - padding-bottom: 15px; -} - -.navbar-custom .navbar-collapse { - padding-right: 0; - padding-left: 0; -} - -.navbar-custom .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255, 1.0)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E"); -} - -.dropdown-btn { - border: 0 none; - color: #ffffff; - background: transparent; - font-weight: bold; -} - -.show>.dropdown-btn-width { - transform: translateX(0px) !important; - top: 100% !important; -} - -.input-group-navbar { - max-width: 240px !important; -} - -.wfp-search { - height: 100%; - border: 0; - outline: 0; - border-bottom: 12px solid black; - border-top: 12px solid black; - font-size: 0.875rem; - line-height: 1.25; - border-radius: 0; -} - -.panel-transparent { - background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); - background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); - background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#00ffffff", GradientType=0); - border: 0; - -webkit-box-shadow: none; - box-shadow: none; -} - -.nav-tabs>li>a { - color: #337ab7; - text-decoration: none; -} - -.nav-tabs>li>a:hover, -.nav>li>a:focus, -.nav>li>a:hover { - background-color: transparent; - background: rgba(0, 0, 0, 0.1); -} - -.nav-tabs .nav-item.show .nav-link, -.nav-tabs .nav-link.active { - border-color: transparent !important; -} - -.nav-tabs .nav-item>a { - position: relative; - display: block; - padding: 10px 15px; - overflow: hidden; - white-space: nowrap; -} - -.tabbable-line>.nav-tabs>li>a { - border-bottom: 4px solid transparent; -} - -.tabbable-line>.nav-tabs>li>a.active { - border-bottom: 4px solid #f3565d !important; - position: relative; -} - -.tabbable-line>.nav-tabs>li.open>a, -.tabbable-line>.nav-tabs>li:hover>a { - border-bottom: 4px solid #fbcdcf; -} - -.card { - margin-bottom: 7px; -} - -.tab-content>.tabforceshow { - display: block; -} - -.panel-primary>.panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; - overflow-y: auto; -} - -.panel-body { - padding: 0px; - padding-right: 0px; -} - -.centered { - position: relative; - text-align: center; -} - -.release-info { - background-color: #4c9ed9; - padding: 0.3em 0.6em 0.3em; - font-size: 85%; - font-weight: 700; - line-height: 1; - color: #fff; - text-align: center; - vertical-align: baseline; -} - -.release-info-deprecated { - background-color: #4c9ed9; - padding: 0.3em 0.6em 0.3em; - font-size: 85%; - font-weight: 700; - line-height: 1; - color: #fff; - text-align: center; - vertical-align: baseline; -} - -.steam-icon:before { - background: -webkit-gradient(linear, left top, left bottom, from(#000000), to(#00adee)); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - display: initial; -} - -.img-comparison { - position: relative; - display: inline-block; -} - -.img-comparison .logo { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-size: 50%; - background-repeat: no-repeat; - background-position: center; - z-index: 100; -} - -.bs-30 { - background-size: 30% !important; -} - -.bs-40 { - background-size: 40% !important; -} - -.img-responsive { - position: relative; - z-index: 5; -} - -.twitch-widget { - max-height: 50px; -} - -.twitch-online, -.twitch-offline { - border-radius: 5px; - display: inline-block; - height: 10px; - width: 10px; -} - -.twitch-online { - background: red; -} - -.twitch-offline { - background: #ccc; -} - -.twitch-game { - display: block; - margin: 0 0 0 15px; - font-size: 0.8em; - line-height: 90%; -} - -.flash { - -webkit-animation-name: flash-animation; - -webkit-animation-duration: 0.5s; - animation-name: flash-animation; - animation-duration: 0.5s; - animation-iteration-count: infinite; - border-radius: inherit; -} - -@-webkit-keyframes flash-animation { - 0% { - box-shadow: 0 0 15px red; - } - - 50% { - box-shadow: 0 0 15px blue; - } - - 100% { - box-shadow: 0 0 15px red; - } -} - -@keyframes flash-animation { - 0% { - box-shadow: 0 0 15px red; - } - - 50% { - box-shadow: 0 0 15px blue; - } - - 100% { - box-shadow: 0 0 15px red; - } -} - -.awesomplete>ul { - width: 400px; - max-height: 200px; - overflow-y: auto; -} - -.awesomplete>ul>li[aria-selected="true"] { - background: #337ab7; - color: white; -} - -.awesomplete>ul>li:hover { - background: rgba(0, 129, 194, 0.45); - color: black; -} - -.awesomplete mark { - background: rgba(0, 129, 194, 0.45); - padding: 0em; -} - -.awesomplete li:hover mark { - background: #0081c2; -} - -.awesomplete li[aria-selected="true"] mark { - background: rgba(255, 255, 255, 0.2); - color: inherit; -} - -.awesomplete>wfp-dropdown-input { - margin-top: 11px; -} - -.awesomplete>input { - padding-left: 3px; -} - -.awesomplete>ul>li[aria-selected="true"]>a { - color: white; -} - -.awesomplete>ul>li[aria-selected="true"]:hover>a { - color: black; -} - -.patreon-color { - border-color: #e85128; - box-shadow: 0 0 5px #e85128; -} - -.panel-primary>.panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; - overflow-y: auto; -} - -.panel-title>a { - font-size: 20px; - color: #fff; -} - -@media only screen and (max-width: 1200px) { - .img-comparison>img { - display: block; - width: 1200px; - max-height: 1200px; - border-radius: 3px 3px 0 0; - } - - .btn-screens { - border-radius: 0 0 3px 3px !important; - } -} - -@media only screen and (min-width: 1200px) { - .img-comparison>img { - border-radius: 3px 0 0 3px; - } - - .panel-primary>.panel-heading { - border-radius: 0 3px 0 0; - } - - .btn-screens { - border-radius: 0 0 3px 0 !important; - } -} - -.btn-social-light { - color: #000; - background-color: #eff7ff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light:focus, -.btn-social-light.focus { - color: #000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light:hover { - color: #000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light:active, -.btn-social-light.active, -.open>.dropdown-toggle.btn-social-light { - color: #000; - background-color: #bcddff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light:active:hover, -.btn-social-light.active:hover, -.open>.dropdown-toggle.btn-social-light:hover, -.btn-social-light:active:focus, -.btn-social-light.active:focus, -.open>.dropdown-toggle.btn-social-light:focus, -.btn-social-light:active.focus, -.btn-social-light.active.focus, -.open>.dropdown-toggle.btn-social-light.focus { - color: #000; - background-color: #98ccff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light:active, -.btn-social-light.active, -.open>.dropdown-toggle.btn-social-light { - background-image: none; -} - -.btn-social-light.disabled:hover, -.btn-social-light[disabled]:hover, -fieldset[disabled] .btn-social-light:hover, -.btn-social-light.disabled:focus, -.btn-social-light[disabled]:focus, -fieldset[disabled] .btn-social-light:focus, -.btn-social-light.disabled.focus, -.btn-social-light[disabled].focus, -fieldset[disabled] .btn-social-light.focus { - background-color: #eff7ff; - border-color: rgba(0, 0, 0, 0.2); -} - -.btn-social-light .badge { - color: #eff7ff; - background-color: #000; -} - -.scgoggles-color { - color: rgba(0, 255, 0, 0.8); - text-shadow: 0px 0px 2px #00ff00, 0 0 4em #00ff00, 0 0 0.2em #00ff00, 0px 0px 0px #000, 0 0 0 #000, 0px 0px 2px #000; -} - -.payne-health-anim { - animation: payne-health-anim-bg-color 20s infinite; - -webkit-animation: payne-health-anim-bg-color 20s infinite; -} - -@keyframes payne-health-anim-bg-color { - 0% { - background: linear-gradient(0deg, #c00000 0%, #eff7ff 0%); - background-attachment: local; - } - - 5% { - background: linear-gradient(0deg, #c00000 15%, #eff7ff 0%); - background-attachment: local; - } - - 10% { - background: linear-gradient(0deg, #c00000 25%, #eff7ff 0%); - background-attachment: local; - } - - 20% { - background: linear-gradient(0deg, #c00000 50%, #eff7ff 0%); - background-attachment: local; - } - - 25% { - background: linear-gradient(0deg, #c00000 75%, #eff7ff 0%); - background-attachment: local; - } - - 50% { - background: linear-gradient(0deg, #c00000 100%, #eff7ff 0%); - background-attachment: local; - } - - 60% { - background: linear-gradient(0deg, #c00000 75%, #eff7ff 0%); - background-attachment: local; - } - - 70% { - background: linear-gradient(0deg, #c00000 50%, #eff7ff 0%); - background-attachment: local; - } - - 80% { - background: linear-gradient(0deg, #c00000 25%, #eff7ff 0%); - background-attachment: local; - } - - 90% { - background: linear-gradient(0deg, #c00000 15%, #eff7ff 0%); - background-attachment: local; - } - - 100% { - background: linear-gradient(0deg, #c00000 0%, #eff7ff 0%); - background-attachment: local; - } -} - -@-webkit-keyframes payne-health-anim-bg-color { - 0% { - background: linear-gradient(0deg, #c00000 100%, #eff7ff 0%); - background-attachment: local; - } - - 10% { - background: linear-gradient(0deg, #c00000 90%, #eff7ff 0%); - background-attachment: local; - } - - 20% { - background: linear-gradient(0deg, #c00000 75%, #eff7ff 0%); - background-attachment: local; - } - - 30% { - background: linear-gradient(0deg, #c00000 50%, #eff7ff 0%); - background-attachment: local; - } - - 40% { - background: linear-gradient(0deg, #c00000 25%, #eff7ff 0%); - background-attachment: local; - } - - 50% { - background: linear-gradient(0deg, #c00000 0%, #eff7ff 0%); - background-attachment: local; - } - - 60% { - background: linear-gradient(0deg, #c00000 25%, #eff7ff 0%); - background-attachment: local; - } - - 70% { - background: linear-gradient(0deg, #c00000 50%, #eff7ff 0%); - background-attachment: local; - } - - 80% { - background: linear-gradient(0deg, #c00000 75%, #eff7ff 0%); - background-attachment: local; - } - - 90% { - background: linear-gradient(0deg, #c00000 90%, #eff7ff 0%); - background-attachment: local; - } - - 100% { - background: linear-gradient(0deg, #c00000 100%, #eff7ff 0%); - background-attachment: local; - } -} - -.icon-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} - -.icon-stack-1x { - position: absolute; - left: 0; - width: 100%; - text-align: center; - line-height: inherit; -} - -.blink { - animation: blinker 1s cubic-bezier(0.5, 0, 1, 1) infinite alternate; -} - -@keyframes blinker { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.tz-gallery .row>div { - padding: 2px; -} - -.tz-gallery .lightbox img { - width: 100%; - border-radius: 0; - position: relative; -} - -.tz-gallery .lightbox:before { - position: absolute; - top: 50%; - left: 50%; - margin-top: -13px; - margin-left: -13px; - opacity: 0; - color: #fff; - font-size: 26px; - font-family: "icomoon"; - content: "\e986"; - pointer-events: none; - z-index: 9000; - transition: 0.4s; -} - -.tz-gallery .lightbox:after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0; - background-color: rgba(46, 132, 206, 0.7); - content: ""; - transition: 0.4s; -} - -.tz-gallery .lightbox:not(.invisible):hover:after, -.tz-gallery .lightbox:not(.invisible):hover:before { - opacity: 1; -} - -.stripe { - background-repeat: no-repeat; - background-position: center; - background-size: cover; -} - -@-webkit-keyframes lightUp { - 0% { - background-color: #ff5040; - } - - 20% { - background-color: rgba(0, 0, 0, 0); - } - - 90% { - background-color: rgba(0, 0, 0, 0); - } - - 95% { - background-color: #ff5040; - } - - 100% { - background-color: #ff5040; - } -} - -@keyframes lightUp { - 0% { - background-color: #ff5040; - } - - 20% { - background-color: rgba(0, 0, 0, 0); - } - - 90% { - background-color: rgba(0, 0, 0, 0); - } - - 95% { - background-color: #ff5040; - } - - 100% { - background-color: #ff5040; - } -} - -@-webkit-keyframes lightUp2 { - 0% { - background-color: #e5ed58; - } - - 20% { - background-color: rgba(0, 0, 0, 0); - } - - 90% { - background-color: rgba(0, 0, 0, 0); - } - - 95% { - background-color: #e5ed58; - } - - 100% { - background-color: #e5ed58; - } -} - -@keyframes lightUp2 { - 0% { - background-color: #e5ed58; - } - - 20% { - background-color: rgba(0, 0, 0, 0); - } - - 90% { - background-color: rgba(0, 0, 0, 0); - } - - 95% { - background-color: #e5ed58; - } - - 100% { - background-color: #e5ed58; - } -} - -ul.scanning { - display: flex; - justify-content: center; - align-items: center; - background-color: black; -} - -ul.scanning li, -ul.scanning li::before { - display: inline-block; - border: 1px solid transparent; - width: 50px; - height: 10px; - margin: 1px; - -webkit-animation-name: lightUp; - animation-name: lightUp; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-duration: 2.6s; - animation-duration: 2.6s; -} - -ul.karr li, -ul.karr li::before { - -webkit-animation-name: lightUp2; - animation-name: lightUp2; -} - -ul.scanning { - list-style: none; - padding: 0; - margin: 0; -} - -ul.scanning li::before { - content: ""; - position: absolute; - margin: -1px; -} - -ul.scanning li:nth-child(1) { - -webkit-animation-delay: 0.1625s; - animation-delay: 0.1625s; -} - -ul.scanning li:nth-child(1)::before { - -webkit-animation-delay: 2.4375s; - animation-delay: 2.4375s; -} - -ul.scanning li:nth-child(2) { - -webkit-animation-delay: 0.325s; - animation-delay: 0.325s; -} - -ul.scanning li:nth-child(2)::before { - -webkit-animation-delay: 2.275s; - animation-delay: 2.275s; -} - -ul.scanning li:nth-child(3) { - -webkit-animation-delay: 0.4875s; - animation-delay: 0.4875s; -} - -ul.scanning li:nth-child(3)::before { - -webkit-animation-delay: 2.1125s; - animation-delay: 2.1125s; -} - -ul.scanning li:nth-child(4) { - -webkit-animation-delay: 0.65s; - animation-delay: 0.65s; -} - -ul.scanning li:nth-child(4)::before { - -webkit-animation-delay: 1.95s; - animation-delay: 1.95s; -} - -ul.scanning li:nth-child(5) { - -webkit-animation-delay: 0.8125s; - animation-delay: 0.8125s; -} - -ul.scanning li:nth-child(5)::before { - -webkit-animation-delay: 1.7875s; - animation-delay: 1.7875s; -} - -ul.scanning li:nth-child(6) { - -webkit-animation-delay: 0.975s; - animation-delay: 0.975s; -} - -ul.scanning li:nth-child(6)::before { - -webkit-animation-delay: 1.625s; - animation-delay: 1.625s; -} - -ul.scanning li:nth-child(7) { - -webkit-animation-delay: 1.1375s; - animation-delay: 1.1375s; -} - -ul.scanning li:nth-child(7)::before { - -webkit-animation-delay: 1.4625s; - animation-delay: 1.4625s; -} - -ul.scanning li:nth-child(8) { - -webkit-animation-delay: 1.3s; - animation-delay: 1.3s; -} - -ul.scanning li:nth-child(8)::before { - -webkit-animation-delay: 1.3s; - animation-delay: 1.3s; -} - -.badge-error { - background-color: #b94a48; -} - -.badge-error:hover { - background-color: #953b39; -} - -.badge-warning { - background-color: #f89406; -} - -.badge-warning:hover { - background-color: #c67605; -} - -.badge-success { - background-color: #48af49; -} - -.badge-success:hover { - background-color: #356635; -} - -.badge-info { - background-color: #3a87ad; -} - -.badge-info:hover { - background-color: #2d6987; -} - -.badge-inverse { - background-color: #333333; -} - -.badge-inverse:hover { - background-color: #1a1a1a; -} - -.tooltip-inner { - max-width: 100% !important; -} - -.grayscale { - filter: grayscale(1); - z-index: 1; -} \ No newline at end of file diff --git a/gta-one-liners.html b/gta-one-liners.html deleted file mode 100644 index f4306e8..0000000 --- a/gta-one-liners.html +++ /dev/null @@ -1,1083 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - GTA One Liners - - - - - - - - - - - - - - -
-
- - - -
-
-
- - -
-
- - x -
-
-
- Switch to Imgur links | Switch to Discord links
Click on - empty space - within URL cell to copy content to clipboard -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
- Gifs in this table were made using OCR software and subtitle text may not match the actual game text or - overall be wrong or missing. -
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
- - - - - - - - - - -
GXTGIF LINKGIF LINKSUBTITLE
-
-
-
-
-
- - - - - - - - - - - - - - \ No newline at end of file diff --git a/gta-text.html b/gta-text.html deleted file mode 100644 index c2b024b..0000000 --- a/gta-text.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - GTA Text - - - - - - - - - - - - - - -
-
-
- - -
-
- -
-
- -
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
- - - - - - - -
GXTSUBTITLE
-
-
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/img/ajax-loader.gif b/img/ajax-loader.gif deleted file mode 100644 index 4e651ed..0000000 Binary files a/img/ajax-loader.gif and /dev/null differ diff --git a/img/boosty_bg_tag_color.svg b/img/boosty_bg_tag_color.svg deleted file mode 100644 index 6e2b55a..0000000 --- a/img/boosty_bg_tag_color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/boosty_bg_tag_white.svg b/img/boosty_bg_tag_white.svg deleted file mode 100644 index d26cc7f..0000000 --- a/img/boosty_bg_tag_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/buttons/boosty.svg b/img/buttons/boosty.svg deleted file mode 100644 index 7ae2d90..0000000 --- a/img/buttons/boosty.svg +++ /dev/null @@ -1 +0,0 @@ -SUPPORT ME ON BOOSTYSUPPORT ME ON BOOSTY \ No newline at end of file diff --git a/img/buttons/github.svg b/img/buttons/github.svg deleted file mode 100644 index ee2a1e3..0000000 --- a/img/buttons/github.svg +++ /dev/null @@ -1 +0,0 @@ -SPONSOR ME ON GITHUBSPONSOR ME ON GITHUB \ No newline at end of file diff --git a/img/buttons/kofi.svg b/img/buttons/kofi.svg deleted file mode 100644 index 95bd430..0000000 --- a/img/buttons/kofi.svg +++ /dev/null @@ -1 +0,0 @@ -SUPPORT ME ON KO-FISUPPORT ME ON KO-FI \ No newline at end of file diff --git a/img/buttons/patreon.svg b/img/buttons/patreon.svg deleted file mode 100644 index 19377c6..0000000 --- a/img/buttons/patreon.svg +++ /dev/null @@ -1 +0,0 @@ -SUPPORT ME ON PATREONSUPPORT ME ON PATREON \ No newline at end of file diff --git a/img/buttons/paypal.svg b/img/buttons/paypal.svg deleted file mode 100644 index 4a69969..0000000 --- a/img/buttons/paypal.svg +++ /dev/null @@ -1 +0,0 @@ -DONATE WITH PAYPALDONATE WITH PAYPAL \ No newline at end of file diff --git a/img/details_close.svg b/img/details_close.svg deleted file mode 100644 index 75ed92a..0000000 --- a/img/details_close.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/details_open.svg b/img/details_open.svg deleted file mode 100644 index c570bdb..0000000 --- a/img/details_open.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/favi.svg b/img/favi.svg deleted file mode 100644 index fbdf838..0000000 --- a/img/favi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/favicon-p2dfx.svg b/img/favicon-p2dfx.svg deleted file mode 100644 index dee8bf0..0000000 --- a/img/favicon-p2dfx.svg +++ /dev/null @@ -1 +0,0 @@ -corona \ No newline at end of file diff --git a/img/favicon.svg b/img/favicon.svg deleted file mode 100644 index 2cb6289..0000000 --- a/img/favicon.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/github-mark-white.svg b/img/github-mark-white.svg deleted file mode 100644 index 4a895b3..0000000 --- a/img/github-mark-white.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - diff --git a/img/github-mark.svg b/img/github-mark.svg deleted file mode 100644 index 1a3ed33..0000000 --- a/img/github-mark.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/img/gtaol.jpg b/img/gtaol.jpg deleted file mode 100644 index 4e78c07..0000000 Binary files a/img/gtaol.jpg and /dev/null differ diff --git a/img/gtaol.png b/img/gtaol.png deleted file mode 100644 index 2194b2a..0000000 Binary files a/img/gtaol.png and /dev/null differ diff --git a/img/gtaol.svg b/img/gtaol.svg deleted file mode 100644 index cdcb026..0000000 --- a/img/gtaol.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/gtatext.jpg b/img/gtatext.jpg deleted file mode 100644 index 0d9dfb2..0000000 Binary files a/img/gtatext.jpg and /dev/null differ diff --git a/img/gtatext.png b/img/gtatext.png deleted file mode 100644 index 98cdeb3..0000000 Binary files a/img/gtatext.png and /dev/null differ diff --git a/img/gtatext.svg b/img/gtatext.svg deleted file mode 100644 index 82d3b86..0000000 --- a/img/gtatext.svg +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/icon.png b/img/icon.png deleted file mode 100644 index 1d31a70..0000000 Binary files a/img/icon.png and /dev/null differ diff --git a/img/image.jpg b/img/image.jpg deleted file mode 100644 index f18f8c0..0000000 Binary files a/img/image.jpg and /dev/null differ diff --git a/img/kofi_bg_tag_dark.svg b/img/kofi_bg_tag_dark.svg deleted file mode 100644 index d85cfe6..0000000 --- a/img/kofi_bg_tag_dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/kofi_bg_tag_white.svg b/img/kofi_bg_tag_white.svg deleted file mode 100644 index d94953d..0000000 --- a/img/kofi_bg_tag_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/logo-bl.svg b/img/logo-bl.svg deleted file mode 100644 index 700f6e5..0000000 --- a/img/logo-bl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/logo-default.svg b/img/logo-default.svg deleted file mode 100644 index f28fe21..0000000 --- a/img/logo-default.svg +++ /dev/null @@ -1 +0,0 @@ -logo-default \ No newline at end of file diff --git a/img/logo-stroke.svg b/img/logo-stroke.svg deleted file mode 100644 index c695159..0000000 --- a/img/logo-stroke.svg +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/img/logo-wh.svg b/img/logo-wh.svg deleted file mode 100644 index d70ffbd..0000000 --- a/img/logo-wh.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/logo2-bl.svg b/img/logo2-bl.svg deleted file mode 100644 index 0e000b5..0000000 --- a/img/logo2-bl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/logo2-wh.svg b/img/logo2-wh.svg deleted file mode 100644 index 248e884..0000000 --- a/img/logo2-wh.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/modloader.svg b/img/modloader.svg deleted file mode 100644 index 7801637..0000000 --- a/img/modloader.svg +++ /dev/null @@ -1 +0,0 @@ -modloader \ No newline at end of file diff --git a/img/mol.jpg b/img/mol.jpg deleted file mode 100644 index a4eda8b..0000000 Binary files a/img/mol.jpg and /dev/null differ diff --git a/img/patreon-default.svg b/img/patreon-default.svg deleted file mode 100644 index e9bce72..0000000 --- a/img/patreon-default.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/patreon-white.svg b/img/patreon-white.svg deleted file mode 100644 index eedc09f..0000000 --- a/img/patreon-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/patreon.svg b/img/patreon.svg deleted file mode 100644 index 9d66562..0000000 --- a/img/patreon.svg +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - eJzdvVd7armyKHqe+/v8H8ARjIGRgzPROOccSbaZxoAJ3Wvuh/vbb5U0cibMdXqf7tVewNBQSaXK -qpKW4meX6VyjW2um+QwTm/traanQb1aH3f56jPwc22+3R4NhH39KXCRjrJxhsFVuX3nVWt40+4NW -t7MeY9UMQ5+W8f1EvtlpNlpfw2QskcRfr1rDdhN+71WH/Wa381prV+tfmcHfH0kDLvRTrA6hEctm -WTHLMawYY7l1kYnljkmjaufv6mDQ+h9sIvEKjz/mu6NOo9X5yHf/sx5LiwIX4zgZeuDVmMRy2KLS -umgOnM3YDEP+EViZ43nrO2xGJf/IEisqLHZQ7NZH383O8KzfrTcHg0K33e0P1mOF39VO7Lj6AU+q -sftmu939J5bHWcE7uX3xtdxqNwEX39VhjOUJanL7LPeaH7XajZPRd60JaBIE8jP/Sjq9HkBv0DF+ -Jr/Lr/vf8NNlcziEsQNMguCLvbx1KPAr+TfxeNH8aJHlAkw+J/We+93ed7X/NRh33vjyVfO714Y1 -IWjjVDkjxgSOgb+Wz3pTmC7FLnSYEbArXuQ5RZVg+kyGwx8EXlAFJSYDMBEGwcO/8JyLyYySkeC5 -wooywxlIMRHf/LvV/Gc9dtLtNDXs5vrDS0oJgsAw9K/26GLUbvavO60hTJlORKX4Pe42mm39N9JF -uV0laCX/suZfrcVVtf/RHAL5dNujISFzxYACS3hU/d3sG0BY+TUPC9ABWJ0hjPq19f76N2WP14/h -OisbgzntNTtX3RsypTQrSWKGl2VW+y/G8aIKPwgy/U+MMRke/omxjCLEZAFwL5GBchIfExjOGDxr -/tXHk2sPm/0OrJ8+pv/2AEqdxqsmIpoN2yBEMggcgo5FGWn7DMj9tN8CNK7ryyC/7vVbDZMHZC6m -0D9kqTIKpWiWVTlG5dSov1ipHaRGhF805AHNDGEaxrJzr4VjC4cymeNTnAlMvdD9RvIdEDmFpAFs -2+5+aE/NL+QZdDHqaaihdATUftZvdbDjub9O6DPl9aw9god7/e6ot9957879laCy+qZZB3kMLNGI -ndZ+wReQvER6xK761Tr0Ad+NNplqq5cM6RDm2W/G6FN4l3zV/z/K+8XmO0g/swP6a6nzd7Pd7Vk6 -pu2i9HjWrnaq/Rh5YHR41PobnlQBT2aX2LA5vIvUJ9BeD9BCeiFtHP0HNLA8igLqqNVxdUF+q/aH -/3T7X7hgjWbV1BtROr38ag7rn85utV+n6fisOvwEfdbsNAYGLuhXE8+Ie/pblB4L1Xa79dGv9j5b -9Vi+Pxp8xq663bbRu8dzA5L1GXmEb0acBsrA0w6djxuq1sAJEJQDfedfDM14ywsSPPzfBEVHTKnR -AhHlw4qBbS7/qQLNH7VqkYjx8vd3rdtuDb6N3q2/nAHntOrt5uXvwbAZSTZd1sngvHBkf2TgSft5 -LCz9aSi4bO+tTgP6uRy1hk2TN7vfPTShY5ef1V6TYEhveWl2KRKFb9Fb6XSoRlPpM7Tnhr/bTVCW -2cNO958O+RZbh0E9goaojtrD52Qse1L9bsbWoM1lCyzTptGIiZ3iH9MUYWN3VfzlAv5kZJEBva8w -CtifEoPqX5JVSeFEkQPFLoBZg78wHMeqisArkiDgLyrDSmDfqKKqcLzEap3f5bBb49tv/HYAn37B -b/+AjRQ7jj0+M7HGHDwE4GQkDRgwVVEbc3/FsjAf/EAmDwizTD0ch2fVNtgaTTrZs9qsZ+d0Igg2 -7/4HV8HpXZzV4b+8OWZjZOMt+BF0altkN2Jokwnpi2XoQ8re2NX/0X+Hzpy/+kHQBq17JOCnAnUt -vWb1H5AG8Wurjuip9n9rP9wdH52A1+HzeCOW+M93uwMN0sCl/VZtNGyCtl0jjXP9fvW/2s2MoFja -1T/B1+03O1orLpbdB1QZj/HP8DeKE/I4sdwZvP5d7Q82gNEvAULnw97272p7ZDTGBwOfhh2QElo7 -bTQD+9f/9ajqgEMVBUvtbv2r2YiEJr3p2r9igrUWidewUSYJNAPe0wmZTYSJWpvPkiimRwobjJRo -qGhVa+1mJM6IstL/1wlhfKGw/nd0sYBt/x0Ej/OsjwbD7ve/QPz9URJdH1TRdkMdCnwYnVL/G3wD -A/q3jef/LVYevP/zL6Dv/wWSfNBu1f/fEeOspDDWrYdY9qJZbQdM/59WY/gZaf21lv8KKc4rgm0b -JXSan83Wx2ckkWM0/VdMFDeOwub2O9K0fv9LZuTeHAub33+iiad/yfyAFvPdbtB8at0hWB9Hzfch -3YGJND33S/8aQ4NI0MvuqF9vku3ff4elAQrwXzGO7+aw2gATbAaDUacezEJDi6NEojlLa/KTyAmc -oo0ht6/itketW+03YnXc9Y1xsZoJitHZILfPsjG9o1hr0MV9bmjZJH5ncOuvDvjK3dEw9kFjz862 -aqxX7TX7sUHre9QmATMHj2KTYb/aGfSqgMb6b+io1YhhaoPOI075wIJc0l5u9FoZrZmg/QQT7TuH -8V0dfDl/q7ZbOhfyki7getVGwykkBr3u0ER4bj+WGw27sYvqYNjsm6NkfZGuNZBEkRf9V4aN9Y2I -Q2jTj37ToLjQxpYVD6UOcwyhTa1jICkoRmM9EEiTVC5tOLKQ0Fm/OWj2/27Grpr/GZKNjGqt1W4N -f5srRRcl3242G1fd3k3VRruWhyhzHU/JWDDhI9dvVnNkY9Lz1Qu0JKzv2mxjF+npM9gf5DSEaMFa -SwxF5kVOM31EhZNlzJTQLT4OzCKODuCs2yIJAK+xBEnTsCkNfQbF1qDXrv4+rvZ1Ak7ogGMcSIjr -TqsOQkEXFJZRGAbXWe5C/wnTWwxzhcC/aLavuhcUNB3LWXfQwjmTx5yvReDMkoneJ+uSpfqMCOb1 -aT4eNxut0XfMTDl5ds+XEJIReCZ5AzEtKQFkDqGwYcyKFNFYfSTq4+bg0+BkIpws4HThwNheOR0N -eyDtQl5iBYMb3AM8qnY+RpiNcNbtWUWmhSrzxJSwkqWVd+TY5ajXg8kNYrefLRDVp383+z2M0jtk -q2VXHhNHXq8sVquJCWerCuZFdDsVq5HN+7YuNNttK4+LQQ0LYHwMnTN2Niy3u93+6fv7oGloNd+2 -xNrqVeum2EB56DN9bHxhSjhFVdiAlnkT+ZzEGSvq1XTPIgv9x0rnZRssz8mS7NMxaW4ON7SpZbyC -qMh+4yVtbQM23FGGY0Xf5cN5lv4ztJga0d4jAtb2IuMzMsxTM6iddQlJZ/PLerWtT1hhVTYjCTFF -QDmlDybo5WHVEEg60hTflcPcLJA3IIyH1U7dxHIQrsrVejPX+WiHtyYYcjb3JyPS3E3zog9WSXOT -jPyQT5pZSCiI3EhbKwklaMqrxWL9yu2XR+22Lvm0xDd46mFNSrF3Q2RXO8NWDEyz6sBD7jGWhmBy -tjFhaDDsd78Mf4oJaT0EU8NomhZ10R5AKKDMqviFsM1NtdMafMIErXQTiFGSfnXTGrSoaYNk56RZ -WY1Is2aHYAxZRzA29Zs9UUVj60ySsTOTr0nvkXv1RJGsitAnT8wFReX4mMKzUqQ+kZPIQFF7RJIi -Fltqv9No/ueyWe92Qqnf8VK51R8YCBF4AyEsIyvRB2+iOfLoCZkFEI3fewaeZkRrRn/TkprRkZvS -ZEx+1qhCVoQxKI3a+x6E5icterqv0dUtpTD5Um+3euDr4O7Mf8At+gDppb8im+6W7ZU+sQnTf5PM -0lit2rboig2cU73bbzQbHl5tLHvSHY73POE2hrNmeCn7q1vL6C4bONcfTvpxtgWvru2mMmerfhOz -uJs4jH5I08FXq1cDDHyZePZsRxaj2m67AiSuhmAxW2cS1qE+e8t+iOZ2YvLRQbeGeV4xxLKbEtRY -p2uSSqzVIZSAToxX7ESKYVAAFVcOFZcZMrHSFoeNTjU1dGlTWj6ujsXHIS8H+TVWkiSNqX+SpVnO -sbyNFu1jL51deg4+fFQseTfQ3bI5/Ni6gGxV0NjqwsZW7sbe6GIdUz11sjTj29GVqf6tGKONoqLM -tpKWHllnh66BhfG0Hy/VWsPvKoowu5NpWIjW9r2P769MDX3I7vt7hoakdSvRtz0pinG19+Iwe/ej -QRMsPOKxmsRsSVEMEFAocJoEG3Z6cUEcDNuZBu2SINOQPCESEN/TXrCETKO81Gt8w+N2J/q4eo3o -3dPEBvMVr0UH515rF7QU0EgbgO4zqGKGQyuF4xiZ4VnP9Ya3rNuECuhxGc0yWVY5VVL93rFtuSkZ -ag6JMkASRN+XWlh0kWmDtp7oxWFXj46IihRplPS9vnWoPE9gcmCwCIzEB79po38sxwAeb8Rqv2PF -Ptge/eDVxW4sROPJnnUn/v1b2TAe0FnXGikJ6M7ZzkVQpBkJxYfo9kZz0ProeAXzPZVxTdtxCuyT -tOy+t9phNgjV7wMqE6OxHb5mXxj33Nv9DHJ9SBNwJYAMhrglEDQhbGqYD6S8U9c6nGfzfiPT7bew -etIu3j1bvoMK/ez2/0dnDZ9mPS3mGkgYBPBHJpgYtUZ6ehjL+DYbYEjG6C204d8hMx3Ue+367wAR -SBvVO4NAsoZGQ/CIrDtZPrOEJWtXexHQoTUMmgDRlM0OZi4FinpsNsDU7mi0TNpT3WBhligvARcM -sfJYH0yGE30NAtAraN44BFWANRDWqN7v9sLaoIXfAqM8rF3fkn0fChd3q2rV/iBoSe1GjUVdRWg9 -7Loi+P6NrYopgjVmGUmE1uZIIjS2jsSLs947w0yjHSIRaaNe/73bCRSH2G4wqhlcynut1gCm+3ez -HTAmaFJrofEctOiDTKf5UbVv93m1QocOd1BCaAgbgl7qhPTWZrG/qrlb4k0Mg8zgswq+czMIW9iq -OcSwQgfGZ+LDsz9HM9lLG/ynl7EHI3jGCy4067t8DLJh5tX0w8sd8Wqoqcyh21HybkgDuiFNQQUG -Q8U4ctXu0Pq07PbqQRKHtBgELT9p0RgFWELQYqBt2P2D+3UGo0bb5HR0FWLJ9Bv9QQS9Q5q9jzr1 -IAKjjTQH3yCyEGVDXqp2OkbWhHdMhzQLdXLq31azLHGduczEbpu1WKFbHYJl/pS4vD09e0rG/vbY -DHf00+tbzUuvdYJG6C/awolejfRoYv3791cAii0tu8NPw2+1B6JyenufUBQNNwSETayhCdHcaj5r -/afZPmv235t152wub/bKINSOunWHCqX9wOM7w7J2vGPZQObNJ6Qy7cojvw6enX28u7s66zfrrYE3 -bP2cDQdi4UnxquhYPPix9F1rNmjoxgM6hmdoBa7Hmx0gFo9gHTzCDJ/DZt/p3RwBGD1XYV8fiy2l -QIv87PWrDTTnY9VOQ0syCEwr0F4jFfBYRoyvkayYGSQWOFbwEvQwPaHBTT+X1b+bx6P2sAVklnOE -T61LROpgMWwz6FXdITLXVutn959Kq+EiDle7jkl1NpwSDhgbpeStCBjd8AjEWSpSHQ== - - - ZY6Idlr/iL3pD+f+yuID608Y4MtdFvb3FbHYRKlEek5ti29yauemlmWyqeN0audzyOMnTtg8X+eN -B+fGJ/Jgg9+5GuaL7+reV2XhYqtafGfut42nXGrrQvqMJ/nKVjydXbkAMPHU9tdmPHnyoMbXPlvw -7O09E0+N1i/ja8d3xXiaOeaY7NZ9gsAX44XkuTDgBscwuuKXsHP6ts3nFV6RHqTvh830W7kr3/JM -w3zKVF6bBQDT729v1XJrvZOD3UN1sK1UNm8z5e6DcFPqPz0wxYfy/VV5K7dVZ1dzcofJnjavU9v3 -zxxzcHZRYCpvYpZ7i1dO2bWVzxvfkQCYCIPp93fio/zb8eg4V5Hqp+vLndbqnjg83oVB3FzuZodM -ef35tNhV3y7TOXj34JtpLN8XDahYH6stxta9QLGa7w5O6CdtMY4G/b5QbDHZuy/Z2QSXoP9UfRQy -/JEySm3vxZfNiWSyA2WPG92/1SgJ7LU16Ga/G4O7/nOyeMxkhUu6LObk4OXUgzDPra/Ca2wHx3tq -gfp8LRUdUCkYDbB4zn/1/aC+9Z9/htc+UAs16aKa5jyhDpRbPPTFb7oVQV3KfXlD3ZxfHqwsdnte -UPujt8xiorZ48WRCBTAmYKbM7Gz6QJUWFpWNd9UbqnD/xJSv8ueec50v9zC/b+m0dXzhNV1mb6F7 -5At15eBIOPbD8HX/qc4dINQkgYqzsSJ5/pZfEocr8KbQdS3t+uK2BvVsZcVBUMKVvNcmUIG/aiU7 -1Gdkz+eb2oUJ2AZ1/VW8bnxkPaG+pK9OfKHK2ffLFRMq4RvL0saT/cF6auAN9Ux+Ee4+j9a8oA5W -tu9ZH6jiJ4BJruSbe97TFe7vmbLKnHhCnS9/yIsX39ypF1Sm/PxcNqHi2tiXdumrc1zwg1pl9tbe -bryh7jG5lWZCvveCimszXFjb0QDfpxMO5tk5EbaeKNTS01fZBvVhkzmS0yxCXXVBrTS7OsvKKNOc -0z16fKj6QJUW5K9G+cUPapE5Xn1WvaACmMH8/s/67q/+yQUB7IR6ubHC+0I9bF7yjA/UxzRz+Zqc -J1B1CW2d7mGlefL4kEx4Qr1Z6Xz4Qr38PH+reUElak143GNuDnub3kg+4peuy7ubW95QewfzvlBv -XvfmhwQqgPGY7ilzu3NY9IZ6vF16fTl/fvaE+nz6te8FFSU0Av51LzbKPkh+UpjnQTvtDfXkV+/7 -VFV4T6iv++kOgUr0jXu6/aXLVNwH6v01U2p9H3hCVU7S8/Hd53QJoK7/mFARDJFQo1f5VZtujU86 -mCf5cFRdJVC5le1ExT7XI+ZtdT2HUNdcmuf1188ye/B6BWAA8FbfpfK6y1sa1OFOyjHXOCj/JIWa -v2f37UJxrT+43o4j1IwJFcFoEmo/rU+3MHRATW1U5iUKdYc9TDvk4lpPOHkjUPnF9cKhHepiv1+t -YQY2Amac0+3nml2djA/iTmks/lrPa1DXzzMODM93m29XVN81q6+S0+QQK9fLL911RwPz6f05+33j -9/QTDMOlke9T5JvVXHHZpwGsw3KqoNlYzV9N2fFUUthXfeSDL8X5tPM5f6ezp1cD+Wx//cn3dYVb -vXjzf/pZfVlxPLUgTVrIccsPdd/Xj1KdHc7/ae30fcP3KYA5na/XKj4NlMpyZfN6QJ++r/yojtev -U62NX9pTdn7d+bR2cNkxkObR4KaY0u1Pj6e3S7Vs3P/pU3F9y/HUhrS3pRd50ff1X8OzXsX36dcN -lz/3fQpgvr/K2y9+DWAQ5xui79MDTti+831a79QujwKQthxf3n9a9Xt9uZQ7rjV9nx5wO/NsANJy -cW4xue7zulhhSlur+qzXExuOp6mr88GO9rSQ2XQ8BTBXb3urOb8Gn6uLO7qp7PV052H31PpUWLvQ -nEJ+8TxVSK8WmMbKY8G0od+W2sR/05y38qsY4Lxxw0X0jAvx9IF6D57xryv8k8HfyvG14kUB/9yC -2FMXyWtEdKaOqbDRAFYv8roQ7c9zK1tnaU05sEtWhbG9wK8QP5M6Q+C8Wbgqe6x0VsDTvBsRZ4i6 -Ue+bhtO/kG1t1ZIg5+ZL6A+lbaLbCjW1yX2c+0CVFhaue+1Hmy1gBSzcP/hCBZX0i/WFypTfTy59 -oQIY1KJ17+kK9w0rVOFy0QJVOclfWqA2lpcXTKiDhc/mhQGVJwRtQ/L2z+K3Md29tg1q8t4XKmB4 -i/OFiiSAroUJ2DFddC1efKDeP/vPdb48EOy2gB0wcS18oaJr8ekNdTOe8YVKTPXy0YrvdImd4gsV -jZQr27o2VR0++aStBHprhYfGd4SmyZfRdye0nbTw81K6O3W004Mptqbip0Z9mujIw8SfcilLuMjk -4LfENyLowhJ32y6P+pqcWb7c1SW0+Wa2tbC+Zv7Z7iUaV1pIACUU4nW7l9zsGV0mSB/bamXxFxnE -trr3WAQhVi0haN6UUZqwgSFsl5a0P2vHXQ0CMa51COZwYHJbPdrEFjEkAjCf/WwWl4w/Fw7HQwt9 -nRrtiwhmzyrs3g529EFfn8HXZbRYR6s6gqhHoAlnCw7PlvHMbhsardhnDsSlJfIHKfPW6iB4jelL -3fcdE7WhRytAwcdr3MoOs2+GdxzRRIJ47nmUP3Qg3oV1/KONnbru5yQu4JzkSjzCDMmf0DW8nCdN -LMEUz2VcMGa46jtDtImvg9dQQ1qEZex6EWoQvqxdWWdDe2NX87/KYb1FofmNtIl63bKZmL72nn7C -OQjVWhTsg8X0MA0HmVIA8MXlH9SDCfFll0JJhxQCMDCil5J9fflJV6T0tN+34lAfMa6NDY3LVBB5 -o++lZGDYZzhrpTX6R0MfjdN6sud9Ou6Q42HsSaKOnpO7d7KnsSLjTI7fubk6DsP13uGyJjovfAZT -TEWZV/Mss6yRgIvmSwDmposk4LFkY00JvcU7yyAMUegQNm/JZRjgXdFbztyv9djq4kolAm58EUPV -WpHxxU32s5va0inIIGgSPfJGM+vVFZlNtN7sDLjqNgOqZV/uIzJtHAaszt+NAldzgV27Ztfwz2PK -2KjQQ6p28gAxmSgdBq+q9geW1Ix+uwkEZojyULfT3L2dnhvDsowNZjPc8xzY9l5t4DfNXRKzGV5n -XdZZwLKk3MvS2AtWemQ2PoLIRdpfysDXSAg2JR3hbmgPNs7jMFBTeS6yByL3ECcVh3Hr0FSRjarG -nl1qu9UUkC/6noYuDhjWcOfAR3ueXmjDCRqTbgvQYfnbesbyRVpDddGxhjaPQDM0gjwC2xp2lqKu -oWOz2Atfe2ffU1OEpqSxt8vOrOgLFIyjK2MXd5Le7oOdnDGRFmLwjYm01/7MkGaXbuMjrWcltze5 -7/Juh9ue8khXa+NYzpVxvMULP5mWv/uMR7C+Ccd7s+dwZ3527Jm/+1mM6k7rlKZtDHsgaIc9PBoL -Qa7h3JPo4JQI2h4YmtrfkaBqDQ0Nb6OxEi4eooyE7N9E9QL9RxIiD3A2EQZjtzonGAlBWpgAcLju -KR89+lHBmPejF71Qb83Lf6S7o2Z4/MLsknse1DKWODh82kfCLwUHU5wQtAiIE31gIkYJf1jEiMEl -9rQEOizdHInmNfuPaSE0LhBZFDwPlyIwnk5pF4GiYH8cUeA5QyMuAJNcmRDxLqy7rQeXvnEQr5+l -/2sftxVvo86Qhrt9l7E4ZEvPg73okQ8f1x1jNs+DT35m+PLmdFeUIxK+/JjdlyI0vvFkdn5R/cra -mf3Ayeyebpw7FuURTAHinZ826HDgCORSErCPKLLP8X1gN+59AgaaWguRGuzhytSTI5bN+vlxqNcc -FAjZYQ9Gdk3tnJcZFwiKhQAx/HDTTEkj6AOXop0gSPR9gHvM916Icai1UNyERQcdQkF3+91WJyJI -ioAgi1CwhSTsZvbuiJjZ9nA3EEOU+GO4mX3oMLO9+CYC+tbPl4KH49CL1LLxVo38zrW8Ek4WEfTi -IUGaXTVONLlk8OQQaaFMfOhSiOOSOyXo3qFTF040pbhdB/pHBwNFwc71kjihKLDaAocu5eeNm3Az -F7Bj13y+BB3NzMX9rhWSFGKZF/zmpAi3UxiRAbFSIdONShbWkKp94neXzq3MidXf3SUBM6MoLQzM -jwXHkdDIPFG3OBz0al8bXLxgNRiB8Ekvdk+Td2xIjtORHyt69WIaUB4dTbvPQXohBKLldY6nCz17 -s+0y+psckfY5sI5hLWG3RAskmzZ4ewLjAtHiZAWSJTuh+nH5ntgblxlzp9AXm7+aqwSbEdbGsmke -KN0GX0mXdBt8pSxu1FTmRQFws/sTjE3NxQ008+6up5ZuluA99DYz6XbtkG6TGVAY0B5LuvlKAVi8 -GUg36IVItwiUFt5RuHSj5mBoRzPYxSUdBeworeUTxkZQ1pOD7Ivm5WdbKM26A+ltu2h5ZHquI3hE -rqg6/uaxlTtRRhduqUeSR4bF5r2LWwCOPw0Wk1F3JrCrm3ikfIEINn/BTKjw6koTNhEkzs00Hre5 -Nrh4jpypScQD9uK2+i2UNkZH4VkVjl68EmBIRz6e95jD0XOafDeLA+11Z2+hcS9nflqQfoQZppz6 -EX5LR+Ag2560v36szl/45hxEdwrvbmdn/d96KUdPSouiH2/HcsDtQUjr0j79TGj9O1ZOBzN1Rw7r -fzK1Rjoax/r3U2uko6mtf+zFVznSLbyx9OPTTxA/eitHh4vr1I+v7l1n/G3sREM/AwqkUcQsLzO1 -w3f+r5ioHLAsVmz62AdWXrrzZXLTk47O53fjG8EB4Ye7SHweRYgTpEVi9nAHFFYz42sOe6XBecfu -CoDSm2w0sogQICbDikgW3kzmVFOFTJo4Hg5NVcj4D3osN47L3zVGAVmquxFS4+wD899BINj0TIPz -JZnaYIapvdhbxO2fkL0f7Ipf3Dg8mkkwBZAmR4tD+20s2Bf0NYofQLvy96TvXblYvmQRaUwWsrDn -dY6VFmsquG3xuOPpeGiLoFXkc4OPeLpz/hpfu3kpxdM5/gWL+EpjlfMF1/KRBP9ZlPMF1/I5hM3k -5XzBtXyacTt9OV9wLd+cvXRx8nK+4Fq+OUfp4sTlfMG1fABmNuV8wbV8c47SxYnL+YJr+ZBvZlLO -F1zLR6XADMr53O2stXya4zF9OV9wArZ733PCcj5HArRDhXvHbIqYyVIOdo7tBp9/JRJxWqxqLcqw -vMcUnJwFFqOZOxhSt1V25reOFZCybkgWnbZxKKr8HODHIrEA7EVLE6LKEZDyQJWJpznjzBTvErdV -G9165LFt1RIRKtJISPVX82Y2VOWb5WX1b1ajEcNGevwZmuEHR9mdPdAViPjAMWWdGysTIz4s0BXC -N8H1e5GK93SiNRKVfei25MzkniBOeL82tKRaRUox8c0vIeHmSAHiCOHm0oT5JQ4pcJ9eGCso741m -d36Jd8JlWNnd2PklXm4Ult1NG9nCQrlskEcwBm7880ucXopB0D6OSim4UCzc5+k50g== - - - Et5Y96ZPjfsJI/cogqJanrNUFo/nHLuWtMb752kaOVBR616r88eeNZDBgTbfADHgKyDTIEKgzRZo -JCTwpfQcERV4/Xpm5ThgizkIetx6NL1xYy84odkzmOJfUzgKU5zj1BTWgutvFmwxLv8auXmnFIhe -6uge0+eC35h2zYi0ljIStowhmffjpCU09uxRTw+TOvIa9h01OZ5W5xi9hbkgWlcWJR3QW1iJTujA -zO1V7C0kmX+MaToqdqZEWmjh6lhICzutIXBgRsqIUb6Tv7tP2/OoKsHlO1HNXNQ3RrQ4nO19KtPC -6vbogRkhfXzNhwzijXth8c+bL5NrueqVmfmDHxWHP+iVy2H4g759hAkK7w4swuajEnaUi7nc45bs -WStWwlf6lYnqqPlKASy2C5MCYSj1dfK8fE9/jISV6/ru6TiEDUwplONtUYOAEoL1gWlezpmVXsXh -OB6yf62RF+r9CDqkBCo0FuQoy/LZxeWeB0NfHT+WnbZPGN/fThuL93/te/G+006LhqpxYkEOI9yW -D40VbNnZ0IHDbyR5NmMMyz4mLuqYtCBkUCncWNGb4GI/YUaoCq/FDRqWPXqTcUdvvg+CozcelOYT -vTmYJnpjChv2cHE20Rt+cR39/AhRjgjRm4OZJCdBH4kZ1C/q0RvvHfbo9XARozeEPYPq4aaO3mAd -nBAatouGm7DqoLm/IhYIYcGgnffGSVSZMw7PMkpjd66GjN2QPgwrjQ01pOe0AzP4nevUQvDEQymi -d+gb/rEUX0TzakDpRCpmtYd/fJQ0TG49MfXkTEtYkwKTEOrO9ZJ/LMpBpSRR2b/Ezz8ZIvKUSIKu -3eSYsMQvPCEwNEURcTNNMavNjToMjJyG1vk5cwHPnBuydDbwc8Sti0DN51+ZZ/VvImSST1qZ57kb -heV0s63Mm5bSIlbmRajxmEVlHtmQdBfnTZAMG1iZ58gdDO9ostzcOVfp4oRV6l5jMv3LYNE5s8o8 -e77A2HUiUSvz5qKcmTJ9ZZ5jbfTivFlX5jnA6MV5U+4LYUHdDAr/Ud+NtbtEwfiFObG3maReUmFz -07X72xNWsPG+CLdvegXZsAV3zsVkpfKko7VpTeqCO0HCt4Y9vKPZFJQZ6RFe3vVY56sSLiFxaN8A -2vgp1is/q6786pWftVD/JiI/3gT72XPG4VmhBVXT7PY6gpDY26xSoe97JjNObqojzoUZmOqFmRx1 -THpJz8DFJR2FsJEhbEI7ipL0H3Y6TyH4vOOohr/RFetgbR9hEy2gnVxzh7ywBM7tdlt2PKJvYWHE -cDwc+sm0yQ5O9unqdX5uZkWy1fmaf2BhLnKR7O2MimSffmZRJIu9zKRIFuvWZlIkix1NXySLvbiK -ZP0Oug4vI7v1OgrWkb9EEvxDU5gMfkx78ONdhDBYtNTeqYvynGrttf9HivI812b2RXmmLRDm4E9V -lOdG2h8pyovge86iKM8QnYHDmrooz5ZkQeryxi/Ki2Ax0m0irL7yNxrHO/2+4Mq5cGysjF/i5+83 -OXZ8zLXx2fTB3iKdMxaYd6hH1bG36UOaGtLu56PtRoXvTJBauignxC3o+54+6qI2CNoDGk9X3FNP -+sn3DJ/I6a4mG+M9ems+mSnaOpAbRLdPP/faN9XX4kJjVCqri7sv5avts9JudrhSKF/tyPfkCvji -Q6m/m6tIVweFfKZeKOSzh3jtwmVPV05LbVfkVgtR2YvCAgrgNuOP/pfZKefrZ1Z6dRb7pTbqp8fW -uLUFqvi5urQZ7/oVwN0FXaHXyDoSLh1ld1d5/2I/vIm86gf1LbjYby+tWqA6L3hbTw0MqM6yO7yd -27jw0VGHNo8V+UFld2zGF2pqc+Pbr9hPWlj4kUZP/sV+949BBXDfQcV+3asrX6gAZvmo+dnwK/Zr -BhU2nt/5Qy2dPO6ZUOdc9xQudviNVz+o5y6CAr7V4JNPGrmve5GAd9ONSF0KT0cR2s2R27GTZ7Sp -FoE5kjysVJ2Dy6O2U8EGnQa3a03tjXjPQarjSs4/W+5GyAOZi3SnV6Tz6i0BlsA7vX4iDCvKmDxO -rg/M6Jrsej0vw9jqSTuHNeH1ei4NebYSd8ZsJkZVcCZm9DybYoTbVmymZ/BdeNPcrOfoyiRQw7KZ -aD+1GOGiFTJDy9oEDSvkdoXQMWm2QHHcpM2AMXkFnCfkm71myGVMjrxanW9mWNjnNUSrcTujwj4v -S9ww1WdX2OcVH5sj173PtLDPNjmtqs+ytzarwj6vrBJj39NbVk1S2OdV1YdIm3Fh38Th7vEK+7x8 -OQdBz6KwT1d11qo+UwrMrLDPa5/HKWxmUNjn5V0TtTbbwj7fXdzZFvZ5VfVRb22mhX1eJg+N2cy0 -sM9rhX3jApMX9jnTs7Gqby7k3qgJCvucW75aaGjWhX1eazjnPLh5+sI+cw1dKYqzLOzz6mpOr/ec -XWFfhM3iWRT2eVX1zQJpocbiWEiLWtgXDWlTF/Z5VfVZ1dqMCvu8qvpcsc7pC/u8OrBXrMyksM+r -qs+rYmXKwj4vu9rfxZ24sM/swNxHNZE2s8I+r1Xyye6eprDPq6ov3Pf0xUjk+h/fjfypCvscU3Kd -4D9WYZ99TGE+4px3kazdR/TYu/21P9aZUwFu1H7YNZ6RK8J+nNkPIUsQ6RY/L7Icx+SIeItfpLsi -Qm/xi4qqYcpyfZLmEUyGquIw1NpwHgIUcL2d687e8cdE2DPCBX5R60197uq1JvhHRlWEe6odY/IW -NvuB6RljjgkjphGFja/LtMMeDBwuE7+o9pyJTQG2QEDYbOzL/7yR5rz/b/IUDO3yPyvSJs56DL/8 -L1KU42Dqy/8I0kLv/4tY0+d/dG/0fOipLv+zZHQF3P8XvVTK5/I/RzAlWnbL+Jf/ofYMv//POt7Q -y/8in23XO5y+ynPnml1y6JuJ0xwPoxY3zf0VbpH3DqdO/5/Dk8ivt5LT1/QFpjdGzO4mNX1T1DXN -mWWlS5GTqIOKHb3TQqzaM1q9o57cOFaSmkfCJSIoUhFOxJKmytvCij1lRKsLTATH46NtGO2dfbv8 -mwkL1UIuJBkn1Qp6i5T7HC3VCnqLkkQenNNOpOBsCjEnuoLTltSndzR1oS/pxaoDvUVnxI78M7TG -u0NyRvdw0jskZ1rte+nOw4Df5mZ3vCH05lvtMmev94xS8ALjjSLYrLEl5+UnVoReRcSm1dn0Myuo -vkmuuj1/rAuc8vACowRrNoUxzmOd3cI2LJ3H3ttRcEHGOJc7wrOzCBvOYTcb2o37uYkLMccqofBP -H8WOpt4nJlfjzeAYA9pRqIWvEXRoR3Z+DL+MyN/xIIwSVkUxTglFymRGK5ibGfGjx71/cxPVe459 -7x8l6ICr/2ZT0kTSEoKu/ovIjyH3/kU01ae998/0PX2u/huXjbzv/bNQ2jgdjetxe5jq9qv/vAOe -4977Zxc2Y/XmrPYNuvcvKJ0nYrXvbYTUqSgy7elnauPHQmnQ26yqfZ9+HL63Y98zarUvOz/e/fLe -0UGsdzyeQdE89JKZQUYX6SiKk4VgQjua3r+iEahjZ4muby1VWOkP3iIYmAk5fvX9emLNxY/rCc+K -aUfuYCR+vBu/kMoVtrNXpr34mpnjFVLhbGCm/jHXsVJ3sCvPyI8NaVHPcMfeorBnQKzTjrROhPLm -CL4ntTrHqKXyEWKv/eBCKqvjEa1SdKJCKqtMcxiNHkc/kjKySSxGHYy97G5GqXzEWCZZOL4bK2PW -3d4H7/jM0Vt+o9bd3k94qpZnVB17m9FlmLUByQiJsBsV6QLBbPAGkBnlCKy7daV2BNTdhp+chMOa -wWWYWrgIV+JIJgC9MlN0mxBr7ypbV8UvtpDPHtwWF5oHl8Wd1OXVVvctJcGnvTNaZ3j3VG5wK9vz -RaqIMCJsDTibas1WEniyc2GFaqvMGyzc3J9ZI1v2q+nWC4/3XpV5c7Q2yr8ksD96W2d9oTJlZtWv -ClFaWJQvks82F9deN/YUVIjY4/2h7i08XHtBBTD0arr9WubD72q6ZECN3JnoX5k3WJGX+9bsbt5R -dJlM7Dy2fWrkkoHX8FU9qxARaRTJh5vm0jpLApeEk+KbX2XeawDUvUXJzjfO+//OFx58oCoVW6mn -E+qFF1SazkPI+PDGF8lMqXRdti/tIj5dMz5pJaGj1a2sV7s5Wrpoa8oXmAhdMm+r67kI7VLr3WFJ -k9B66fHWveDMgzD2ezyUaSHAvzI0X9AlDnZDFvAqJu3bScWxsjPngq912wqur3IFU/zqjzQwYyRu -+Y+p4J84N2ec2hupvmowYf6627JxxYHHSNxyoMpU9RESLkNQdRmW1xq9PC5q4pYvHcyZ5XEhyaCR -qcorB2yyrCFSADhODhiNDvoOyzsNbPwxuXajpqiVDMgBG5NvugGFs9pwXHm4rsNMYKjbq3bRVZpN -bJquzX6EfceQi+uCY2FGgn+UvcD7dEiKja+P7CFsZhCWfik5Dt+ZKJ42/qF33vG00iz2v19KZkR6 -zu/kpGgliVFP150zjm/3xs1UXo2ToIsRXecoqSgeO7XkZr+ZHHRdnqUnXS1PGEP22iPA2r8A+2us -gEG17LFHMO55Sfbwi/Djykj4UvrOAPE0dXZ3/huMkU6ysNUlhtlz/ivsTIBp7EUoqIpWTaVa5Kzu -ewbuqfjX2QUd9xrFVLcNy79IwFy+4DXUQ6qA1a/FGdWWetz649jCG6MuMfwCMEtXWgQqqLfga6Cj -DWyOFMlibz43QU8wTce+55RIC60mGgtpITugYyIt9E7oMaZ5JDz5I81Vxezr8Y5/0aCmbyYtSfSz -3P2SYScsSbQNIqAe0TDVJytJjFqP6BmHjl6S6EMHrnpEL6tzjJLEMPdYDzi7Uq3GK0mMWo/oToAZ -qyQxKkqd2nPMkkRPKvGoRwzxpMNKEsfxpCcqSdylw3HPy/OyQjul/bHLCgMJOqR4bIzLCucCDsyY -4WWFZDYzuqg04LJC2zbRn7us0O1J/5HLCqOG7aa8rNAaGvqDlxUaau3PXlboMqCiokoKsKvJcCKc -ajXBhYfRT7Wa6sJDo+zP87ZDR2bK5BceBsdf5/zLsce78NBvcokZ5EAdREzQCDvVKvqFh8EFgHMz -ONWKXHg4k3rPacswLOw53YWHDmvecdvhnHmt2wziwL63Hc6NWVA2YU6kRwRqsgsPfSan3XZomhwT -VRJGOoQ9JNY51oWHwbcdzkW5kiLKhYfBBBqeDBvxwsMo9Z4zuPBQR5B3xY6LoCe98DD4tkM/O23s -Cw/HL4+bUTG+9bbDkD2C6BceTktpES88jHZP4dQV+cG3HZokELGjyXSg3ZOe4sJDRy8OSe676TXu -hYfBeXRz3ndFjH/hYXB1jL4V4Vsdw0S88DA4S0ETNtjbdBceWrHpvu3Qd20sWz2RLjy0gnHfdhgU -swlM8XZeeDh5edzM6k2J9pxZyUXAbYdjSYGgCw/HvKdw0gsP7b04CzfcJDDhhYeTbA== - - - fU9w4aFfL9mgncLxLzwMvu1wjh4FNv2Fh6H+zWwuPByjPG5m/Oi67TCKTIt04eHkpvpYFx4G33Zo -2fecqqMQNork4ka58DD6PYVTXXho9OJ5XKG7MGbCCw+DfQhXVH3SCw+D3W6vlPjqJBcees7auO0w -wMUd78LDYONn7q/I1cHBFx5GPm5qugsPzeJIr9JgR0h18gsPg3vxyrOZ6MJD71708PU0GV22Cw/d -cXBroo41qj7VhYfBpfqOrYjJLzwMDoMZwmbaCw8dZWwOZ8yh1ia/8DDYu7euzVQXHgZ791b2nOrC -QwfSoiZcjnvhYQTfcxYXHkYqK53+wsPg2w4JmFlceLgdeNshTYCZwYWH3kJB36MhlDaLCw+Dd3w0 -pE1/4aExMM945kSWjdeFh8E7E1Y3yr2g0xfparcdRsvrjHYJY0CRLgnbjXmyS9ZDVzwE6YrT6znb -vVEBEeFP1+mQ5Df/vVBbvr89yuFZR2mjKooWM+S1vdWzXndKTTkNVsKh1t4yXRM3TPa0KRlYPbE5 -rEeDfp8bfMZBzRzEU48ni0z27kumTbCqK754vL2fYRKdeLb+2BP4/udBebv9rKJlc72aSH8nV/I/ -eabycZJb+BnlpfhTtcHDp7fdRWVjVFo+Pv25EH++7h9lMSPUlePyXeYw04+LR3vCW/7i63qncXks -3X5eNU/En5tE833xNpcUir/mry4Ov9bbm1hc3m3uJDo/r/LPUn+3I53Eb092Vhb5xJ609P64v58c -fS48Ct2n5jpZX1Jqun19dXkTz6ReduPcx89NapNf2WXK+cM8U36vHzB70vJFv/+mJvoD5XZ/sPAi -1QDMQKw9nhl1iVeprWz6NsMfqfN6Ad6vbH/w1MUb+NQFb3Fiq3fdeDh6VXP18x6yinZBJs22axbw -hsWl1dzu0YEXvghGYMLD5X6fX4wHzvUzUV1pni3cPFxtL3b62fIyJ3zg9upCuxFvYHnrgV6uGh+t -9YQTTIg77pAKyXiufHW1xCw2G/DbWdduzfccbASTOytYive0ODTVnpYLQEHEeSFjW1oqjIoP5eYd -uV+08Lx3cSedFBrzu9nh5sFudtDYKKsLX2el213+BTDX2d5r39w95SpSvEaFzc2P3i+9YjTBpr5k -rK28f9ndOIr3ybxy392jQe7w9vY1Vbq5q+AnmPBZO4OlxGs0Frct3veJa8VkhwlMbngdGp50Vsys -UAmdFdkEiTkDWuQOfJVXSTkyyJ79HnzdWiNfQa099uFrIaO/Vs6WS9yxAv1WmFRxbWlUTlT299m1 -lc9XMk46m8Ok9Zk6rOpzOExZHxyl6saDtPXBi9w0HmStD3qFDysY1vJsL/+DlQ0nq9bfrhM1vaOT -NeuDD6FhPMiQqx/ZyuIugxpika2kyzw+YOe0C2uZ7N41hxgBLFWHaqFVzbJMFigGazDXNBye7ae1 -NUSbkEqms6MMaULS7+HrBcM9D2os/Gng1zvaKdkpvAKyRehccjGT1Fbwfp+sA4ApsBsa1PvTDAHD -5xVe2Wi+JN8Ln1L5NN9WFhSLM2LcZkm7sgVTqKI3r9C9v8hO2KVXf4TS7q8Zs0vpemu9kLte3ngr -fMqHvdxVrnOLKkHl8o+rL+XX5OMhl6zftfQVueJN+gbLuZfXpl47WjNYoEpjnZlv+PmCMgBGSpL0 -U3X+Jk0+AeIvV+mn/ANfQaVzzz2PNvfJJ35R/R5CBx8iNklr3Pd1Dabs/B4LK6esUH2zkIbOcwn6 -qbpY2NJG9FXljBHVAML1jv7gQ9AZ5UE0ZlPjd67LmOj3Bg+kh3QxW91cXv/orKCSLm+WhF+uAuK9 -u3PNxaV/NOfFUKubVoocPmZxiEhzuVX6qfR0kKKfcNgARm/6wZOfwQhLlRwjkh6+K+3i+9Lgandz -507IHd4xoBLEZxGY4TxBqJRfbi0tl+pfP6pd6RcIgVjS4JbaVk1d/VGCNPVwOZ7cPBHi6ezKDers -YnyxqGxq2nv7awcfHMTXfnqn+AATx+LpHN+Irx3fVeKrPwt9i3rf3uqiFZFFpC0kNKcIhKgmyU6b -q5TdDAIh9I1pZWlkWYZ0wO/clpDSCI1ioAUlaiWBhZDfaCpiKK2ySmFh3Isrph9TRH4aYjJN7CQi -RNEcu9PE9N6hvj8KMtV5GpzhoYr7jIsEyINtIYHZ8BmmkUisa0u6vU4mkmBLL41HMmIUsWkqXXGI -7NrHFoa7iwebXQbalzMG8T4DK3y18+35TplNL+5/GsIxSRYI1zDP7h3NZ7QZ7u2mcIWPiWUHRLYL -M9wrp1G6MYDSix8iBfaOsoxYO0RNeUIRylakI7Nzukps7WUp7TBM7ZbosmXPFDWazb/xUsiFfIbh -Srf5+5PcWo/ZBTvlpFzcSYkHubXubpJc+A3K9+0k/3Z8W1BLSn2t1H9Zt6lm8ZEBxd37JOqfOIUW -Y2FhBVcQj1k8+NZOQSi/Wq4Kp2JvoVco5L9WOk/FjLwy2Giq/a/c5Sj+Kf9ULo5K1epKpvTQmP8k -FhjYXQpaNtQsXeo+FxwORXSo60cXu+ulZiv/lUiclypnLXb3J5fNFfe/W4Nysc3m6Y4HcpxQbAGm -L4ZoJZ9Qc3B7tByfEPTG4WLxqbi3t/WVuyrySAIR5mxOGLvMmt6PwyDSD7HIkkMZMoQFyWEq1BYg -8mthUEq1Hj5zVze3/bFBcyAK2X1f0DQT0gVdB33LFTOZzdvy6/CZ3d04+LrwQrw/1nc2tpfdCTD/ -BUpb/Ri4tiY10cmt0OMvtDNAjjsoF9OUKZnkosIwg2Inf3q2+1wuiuJb7mrjV6K4/ygdAOjEPKiO -ckaPpyFT/lg9mNfV0oTL7YVwADMGzocrGaGS+wapdSmMNXUjbBdx9oFT9yc3bd8z8uwnmvqTag2m -9IgLYu6fjCtTr5niqPp5S2Tq7vtVb6PUf66diu3ayyLqm1H17HQ32x8u5t9OuEtwhcTtsrp40Sg8 -HyxUNkYf22v5jNC/4VZ2VvfGpQON5wHMZGw/HgmSOLQF+uIiiNqfp3W+UHzNXRVensZgezwsZzJh -Mys5Z7PToqF7nAkDuaU7aYWe2rvUKfb7O+vnwROfZtYAxpw4CLbe4lhsF5XniDk4pZSPIOKp6BxT -s4+v1qmLO3sF47BjJlRr4054Dg82mwjdY00YKc0+Zy9ym9qAAzBhE9dZzMZfU1Oaw5CbRsQQP5uE -fl2bxZwlDrtWvODQuzuJpx4Su/FUWyjH114bB/h1Jb72+es5nqpn4On5/EY8raRP4yu960XqCoJn -CJ+48iU6g9t2pzDZ76/F1+JvK+gZ3lgcCpIv0DzbSmGMTdO3pafyj+FBbmB9wm6hVV7u796s3P3s -div9+/LrWmUhd/qxeUT0TVFYLL6fDy5I1HMQf14pauuw9bBAzAY+148X7bOODLpUfSvhbtRu5yf7 -BkO4uI9qY2Q/l7prY0HVsu0I4PPi+3JvAQV8DYZQfx0DaqdPLAtfo4omjk1nUkYwqpw77H9Ct4HE -IW6Uxa7Kr0y20iEIRxKYwpqcrQE1tVolwmYWRkWwRTGnnZYwU0PaDRrAzEDVjOGwc8Nli7ylIa+p -Vt+KekICYdh3wh9/1hjuHlvLxFdf2j2D3RIurJOYUfUn65FBbIswSvHkyYOKymQX/+RRcZzQr6sr -C5uoUY5QER2hWjnEBxlUP5f4tYzRyfX42s0L84f0jb8owLWJJH7H9GkdshdNjrHF7/igqX/jgH7T -3L053NoHVryKl96k009T24ao2v+2vnGoujnbERPR0R19wihszqiwMXjvTwVuXPoGpPzNYtErhDAp -fK7+ukpiNk+fr8XMxVu/8L7VqUVe7nEsqzlyftqYKnd8SidqbWZhM1/QdDbTsHgkmtM38qPy2YQT -jizTJqc0nDBS2jh8NiGTecq0yCsdmcnGoTTkswmZjDqFNj7D7T2S6OZQ+fquN0Hfh7z+fHas5iqS -tAt/NvP5t5OFE/JVLSkjbk8csZel2/zl0W52uINXI+cq4nWm+FC+uYRfmPL6cre4XlxoSMwMg4WW -PYJZBeq9TB4KZqYRjZntEYzv09v3CKZ1Zyf0pCeKaHhNHePQkW3NyZ0czeSYKmgbAf4EkdtJCJ/G -0zzM7dk6ORhS9dmwmB60SfiU0qb1NP5o5DbUv9PiaV/q6qTxtJV+PH2g3lF/BTwX2fRlvBwZ4ntO -4svkyq9f7dVyrl39FUHpYIoifoGOUuX+6O1INlJGMhM5tiuJQiv+mAyN3JroNtMh08l+YZ3kPIC+ -qw7HtzsQaexKc1j4lJ+bES28n5SWuyh+/xq8ltYxtWJdS5r1oTncKfTluJ2L1afc1fWvl0hahnwq -v8bh03qZRlRwS5CkTVrLFf7M6pNP1Lj9k6vv3ib6I6tPlh5Trf7s6pOlJ+z5R1ffWiT7B1efLD3q -mz+7+mTpdcvmz60+WXqib/7o6vvpmxmuvmb1dxbMBH+f/Cx9lRLfVqTZ5qAdF6O9tmp7TfixlceR -JXCVvOoZCc4DM2gyf+lFNIxmPSxsLQRImwuOYbvlunJoGSrpIz5MDIw+zlx9CKt7xDPTHaWubQ7E -BdpMH5u2G5qDCfWeN1FAk9OX8ouGs1VfdvWRz1r6YMt3e6xRTJHXsl637hOEaLKt7esSJYGzbra1 -tr5NiIH8TJZR/+2+n22ddlL84ubmG8kO5HduTg5trEWIIYkXNKlxeuvN5sb3hU4byTst3L1An220 -r0+sK03Sg3FKo7ctLmVckLS6e7ta1QU7myHjdN+cpN9no68NL59+aeUK3Ig12TO1UT89xvTNeRzR -vf0uqaSJtLt4N1uixQH9/P2jwV+fidrixRNbnRf2qLBh7SKG7Rl4eLHigfs4N/DwYEUCDMeKhC+l -pyNhl0+Z11MBHpY24286HoSsiQcc0ZfzlGNCjL5I2Fn/6uhIWF0iSLAq6bSBBw2qViRBlsWFBzcS -toY6C4ziJhLiwuBxWdM3cf3+MB9i2Fk/G2r0nU8eGsRQec7M/7rWkZBJ+xLDHD3SaEXH5TrrQ1AB -feDJMongDigJBPZBjpKZYhB49oWRADMZZ2hXCIcOQpcC3n2Qa0+nmQgpyaSm+sQTORIyUQeh842r -j+v17DSkxby/7DJmB3rMZqw+sOAl4eDzYCYHMA4+Z9eYTnKsPlwdqMPVKYUNu1ZYSnkOIpAsbBEo -zDJfC+3DOggXNq/ZtNeSAhjrilQ3T8w++Mc2q1j7eJEjk5ZjEHqWKsmPn4ZHsECJ8cWExb8JUoPp -xX2WmsXze5W83oe0sPrY538s7fbyP0mtXfkXa7YDMLbbAbHp0byTUNxUEjSvveuEUwAZlBYVN3sv -GW8qCSRVO6XtfQiehBKZb/d6655UAmAiT6SyuJudkG8NSquky8xUE6lIR6zvICyUFsT7lZ0LLmQQ -/e0sa3RQEYaZ602bksbajXDSChpE7SOVCh4ECUIGjYOt9dgJSMvSQX1RTluU9ES8Xw== - - - T29lwpYUJJhNSTuFWF0qTCeA6jv7O3ZKq1dOd60Nzq9z1q8Pj3mL6ZlczKxbv6aFDetXaX3T+nVn -d8vGnlyyUt62fj0/2rF+fbjYtX6t3+WsX9svec21FFlS3JQ278rVhE1FScfrQnEn9XpXHFX3jgrP -B+qCFisQd9NGNdMTKbCkRUuruadcyuo/3yZoRZhZDVp6Wd8kNVTEuD1tdkhhG0Y00txrpbGGgYg0 -rRbD8jBSN6eVh13Pk9rDFb1ya2GFHAoGwxGStKKW1kaJ6ylaUWvURsF46S/PgyattjU9MzRRPowK -WOtQwWZ4Mx5YS11Bjxulroe01BWj6vTZNWtUux5mrC99bL0bD6z1vI4SMFKlBUrEqOM9sdTxohQA -2W6U8p5YS3lB3jL4W1YvwMM6sLPlb5RfPFZZpgGH8RGTPdtdNcubyVFo8FuZIGYVcNjM6wSNwR9k -mSMFXj/tQ6vTLK2xzd/9LMLXa5a8pNV2nj3y2ePLLxQKV6nU9sLmAqmo1Zzo+yOTaN4sYFz1mfbi -TBoGs1bmWUsyVRhYpxDciy2e5tuRLaiVPFDOVWWvvLvSvCruN7bievXuHasXG15xJuqBoV7RFtBo -+b4qmLWz1prR2imtlNWqmGvXWa34uHbHsLWj/SR8emS1qsnaC7et7nOwNrUqr39qCHO0SHZNW8uv -izStp8UzXuDrXVZ7/euR0T+9sJbC2ZWdo229cLbBWx68xPlXWh/8dvyzZM7m61uaoGLZ/OOsgB7e -maWQ9Tmjsnj4wrB77G4CPlVZ/VPDLPmtE3aG334JruGIw5vyanJ7Q75Jzx+X346XSKVsnl9+HcjM -wV5KpJT2LGnVwbTG9rhjj3Wu0Ip0rERGlCZ1Njrraoi8+0pRyZS/exkAYuYz2db82TKlfiaRGZhI -EzMrRKxq3AUSioRcTAkFls0vjBRV1oyK5Sd44wY5uJIhZ5bgsfQZQqrI83iqViVrvZvIfohahZzv -XjBOQ1vWH4BM2x5u/zjFGS1SLSz1tBFv7xIBkNDQvL1P+EarKLVLMjC89bLWU5O0XmjEkC7y3taq -PkOQX5ay1heiUUFu7SSKfRRZWbo2KLXkm0rh7SvX1Er29y4snZuiSz9dYvD/bc/9JSuqEFMklotl -L0btZv+03/podWJrc39tzP2Vze2z7HWn0S33m82r5n+GxW599N3sDGPrsWzusrC/r4jFZr3baMbW -NFkkW+I6dCYagVsPY7FtApIYfL74ru59VRYutqrFd+Z+27lFuNK7+sHURvSyMM9xCTcIH+lmYKIy -WMOv9zT6Q9aluhgvs3uFRp55f42DePvqS2xld/PA7/A150gAjP9gknxlC/crLzDPcpPmaK59tuDB -23smnhqtX+K2ZDGeZo45Gvt0H2STt6R64Nk3er2uLT9FXllf7nJC6Tb/c7ObHa4WU6pQy+ZLXGUX -fjs+2H2/vjohdWwpVdzaMTNPtn8Wv4/0ankaoCIx6ECDYmprgoIJMyimtiYo0sIMiqmtCY2tQgyK -yawJgdSeE5YkyjXUoJjamiCzCTUowq0J+1EPy85TAMx9l2imRYQuvSwMMpuJjIyxLAyyNhMZGWNZ -GATMREbGWBYGQdpERsZYFgaZzURGhtPCCDwAac44Oxh3H310iyawV5/LI9Qed5gOXwLhfHuHUjtB -j+gAgX2GkrwSX0vuXMWTrfZ2PN05f0I9o2q7SIvOnAK6giDbqc2jH7iyqjP7ZU9rAvIzpZ1zJCTM -c46MIzdWiHFBthB+NXG3tJKkJ3a8r/yQr/DnvpvR5Odu/FkTk4UMnhdztkYOiMm27oYZarS01tZT -5LgyfnGjdOA4+GZOO+Cf7KY5SAAfXAMYGQTLtpw0T9vQjO3trZQ+aBCx1Pq5JrHBQ9P0aJBzZeaM -k1u2jxjDBHIcgITHoH2cpsgpSPoMk9QD1kygwhr9DQ/Eha/7tAmahb/I4R/ozFXSZQw9nFg7r+xc -oNA7X410ipv13DfRST4e7o9OhcTHT21dlhoBe6Obh/ScPNKYK1zVBNvmqlhZ+JFGx8ZORX/rbcnZ -x6h29mNJs1p+4A5c+8Bb99/GPvC1ex/4/syxlyx2y84++P1Hs49L2ofOXyJdbkoH5dcVLvmdl9Fc -SID6+2DQXEhqv1V/VslvVKbNp1DRmWcKNWzYxwyFKfZ40KLRkyO0vV/txLhn6xZs+/rEbws2kYq4 -BTtHTqn22n3MdH13H6NsPW7XQGEYwUDr9k70LViUAhoSioNLAwlPViSMHk8NJGg74xY8rEXAA797 -nkhoSKjunNqQsD7w2o/H2di35AO2YNmDwYQhZt2Gpld0BW9FB+3Hr9CYm2UH3UZNBqUF90HMbL8+ -InSgJeYnp+kD8LW9GswWOJsgzsDD9fZS0wyCkKXJnpP1YWQXBPO3Fgr17gMEUGaaQeBhU9npUj1W -xqJNogjcsspKntH43NmBhTahA4K0cfuw0uaEwiZhJU9rH1FXJGGlTb0DDWnPfuNw9mFKzYkTVxJW -8pyEtBK+tDmnl+qG92GSZwA2fThds2wSJnkyleJlTe/jvuPIWDJJkClf5Y3x3j8720WktKDsqPGl -oIvSkn6UFpXckyalmVRCywyip3lZ9fMYVGKltKSV0iaaiElpDnKPTmlJP0qLMgiN0pIRBGF8pfh0 -rvXBDV7sg1gNloKmkg5AxqpJnhMOwqGkJ1mRVStt+pAFUdIBK7LqRZ4RhJjZwRRKmpyfCS5rlsbg -HWdYpw/UBzz65AGdaHCsT5NrWmiInMtuxOQqGf0s7SPJERBimsNdhViCZhDb4uRVF7+faCBkZete -1LcVXte07Z20fsLw0wC/GkE49Le1TwkaDWkOvvAsXsvJmGt0SvRrIZPRxqm9liXeDKZL45aD9cjX -bSFhes2Owy4t7rQl4Lq9ax4S+2wN+ujHXWpgnsHLf9k1fWrLUZgW+HvrREInraD3dlMm+qyg98pm -8O9ljhSCXffpKZg0cLF3yiCRp4Dth7gOlgMwjUjoeYqGNGs9Fm3z87SxhovcynYCT489pynvmC1A -I1DiOUP3LuqVU0zLO9f6rT88svpRwuWUEbmk64Db+QbRXGWsZaPty6XSmpp82d1gbhb1cLeZ3k2T -vykxuO6x0m6egi6zwV169Tdnv1zO1SVjTbPPLgw2U9cbfWn7WjjJyc+NBN0FSD5cxvWY5KMZSnsz -I+K4NslR40uf/a0lvs0VK1tInrc0KM8VH/ZZygrF+qnGFMX2Nad9Gj2+0BT5UrL6qn3iPjDudkt3 -+LCP14dd7PIhQ5xT7rV9RE+a5l5HF1rnb8k7Y8f9wRphfdto/DIeCJajhG2zebuNF4z9lot8O/Ox -mjurvx8VD/fjlx5p8449Oce12Hl+abRvHMH9nCWzADD8MnctaOf/bjyK2qdi1Ti5+ZmnOxnLN985 -53BOC1fP5WJ7vp67uHpaKdXSu+QQ6E3cBdEZZNiTMGuBxMRoxKr8Ks76PF8daX/4PF/GvAH2T57n -S3Y9iS3wR8/zJWLMsvsa8TzfHG6IbqDI3WfZ11KnYd3yxExF+OmyORz1SBPxNd/8aHWOqr+b/bm/ -2Bj9l4F/8a+sxlhOiXGiCF9E/PWoNvdXgrSOscnYUWfuLyaWw2KI12yuPyy26sNWt1Pt/46tk9/u -jo+u94ux9Rh95xXe2YglYGTMKzSHR0my5/qK430lfeGfu3/Ix+bcXyP8cAp/MozAgEyTOIGRJYmB -8WQUmWcZURV4juFUmcMBZxhGEFlJkhlBYXgZf1EZVpUYWRF4lpc5CX7hZEFkVHiucqwoqfALa2sj -xu6qCJaiAUbzG78dwKdf8Ns/MZaJHccen5lYYw4eXsz9leZ5MSaxbEYl/zCCxAOgb3zA8RlFETlJ -ZSURAEIrGCMvqwLLsbLA8bE0z3IZeJdXoAkD44lJjJKRWYUTBBFeZDlowrAZSWEFgeNglAIHTaQM -w0I/IsNxiqLECgALHmYEiRFkVeZhAEpMVOQMD3OVJVFS4EEszUpqBtAlsdC/LMZEGJ0ow3NZZGVG -heeiklF4VhYlUWWhn5ggSBmJZ2D4IqfwHIED48gAkkRFVGEAMR6+coA4VRAVBnAYS3OACZ6XBAXG -LAmMBOTDZGAMMq9wCgvoJXNWBEVQRUHheRUIjGcyPKyaCssJiyQRQLCuGegA3lJ5mEUMpgqrKciK -CGgi3XAyoA6GJ0uAYZEnLVhGUgSOEWBNpRhZGY6TaX+w1vg5LTC89oGXjacCL2VUWRRkVlAlUeFi -nMpmgIpUwJSgwMhjWhNW4EVRkBCB8CGjShzDwyhgajxtoigAHZ4zLAsYhEnAwsG0eEWGQcbqGixF -hpVQ6IvQCnAqSryAa4VTwxYCELveBFqoMDV4R2Z5XlZUbCJmFBYWhhdwHQSeh9WGxQRswVrwFBC8 -BUQOr0iSpKpcDADAgrI8YJTQAWBIUWE5gbqAJmGxeGBzIBJGFVQO/geohSZABcBWAiwvUBIvQRNA -vADARBiKwFL64xkmIwOpyAzHwtoK0ErM4GIBh6rwM2CHkwTgY+AEBWaAsAQZsCMBkVMUs9iEzQCG -dSrFiYtI1qrIySK+RmldBATyAqeoIowF3uOBcmHVBAZAq5yoIHEISGNADRwv8yAweCBLWWKAlIBS -VUXAqcMAJRlYBFZVUmJAihmRYyUgFAm6Zum0gIsYURAAvzrBo8AAWgee0ftRMgb/crSFqMDYYI0Z -WB5ooYLYURgZKEAGpKnQBHhEhCFBM+AUgYJytQLigTmp0EwSjY6ASlQVsQoDiqFsYABZIq8wwJFa -E5An8D+gc+BZQGsGiFzlRVklTKGDYkBUARgWKBP4QUERK0JDhmKUTBwQqEoKLCR0HeNkJcOJQEkc -yxBMQBMJOB2YV1QZhUOukuEdYD74F9aL16YlwWIBsmBewOMsdsSByICl4GRKKYTCVACs4ogZnoUm -QAacCi1x7XmyntBEREGPspPBXgQADq9wMBFoRAlD4ACvigRUIxNZw8EsoGcexBQIFhCvaRB9IF9Z -owUvgdCAQXPQD7QBluBQvDKyqhEqsKcIAhimwbIwFEGWNXnLZYBHQFIykoAMByIyA0ITkAVqSQBh -Q1gCNQ0OGxgBGEdWYXgSdAKY4snMAWNANsCxAhFy8DADghDlOHZEaRDFMDAbdAocBOQSEwXgUQVI -ROaB+CQUZaqYgdGhmIHegCUFJAMBeB+wrqIoxBY8dMGgpJI5mBUL0l4FgaGYTIyN4D9YZRRiKtAX -cBpIQ1YBIiG4oP0oIIZQPzEMCkrQAIAcEE5U3tMmIP2B6DiwH2CteFCOIiMQyYRIr2uwgCBA+2hL -hUqAITpeBNHJaZMCygRqA3pHmcwhmwOTI88QEoQmhggXQbny5B+QNyzMmQh5EQSIRP5heEYBVqO/ -Cqz5Hn5WJfojL4nkA1AA/iPAQHgQVBoti8DaYDcIKFZgzIBEHugLRg7oQhGBnfAoUA== - - - wQCBpUUOAyXKgrAyxT1tAiwtc5wKBIW9CCCJYMEByTxRoogfpCcgFZAPwN1AI0RfCyoAASoHrKFG -AjYBNcuD+mVw0VHl46KrKAqBpFAaoBBWQZkBYaDsJrYDCgP4H8OJHAGFkhC0GOgxSSWzIEYIjI+T -AJsSi/wn8xkYLMxUZlE9EktGAkLE5WCRMOB9txVEBIDIkxWQwbIA7RSjRo0gkMXiwNIB2aD96GVI -QRfvaAHKKGRUwA8qWBBsaFSA3oBOYTK8gIaciOIKRQoKZw5/QWEFj5EcJNDJaOzxtn/wFzBnBNNO -xF+IaahImqlIDEIQqCi3GTTsWBZ5neWIeNeUQowFMZ0BTQ6jo9YB+Q1UJadZZCzVDTghj99BpQJw -EUZJ1DdpwbOw8jJqQpUYG6jwQFKhHOX0voEWqWUFpAtmFbwM66+CjGRNQGAmaHZTDKgXKJhnQEqi -5NC60aDgsAUOaAo4DskXuELFBiB6gQaJaIaxojjkkaZklEEip8EBy0IlMhabgHAWwEAXcQ1RQIHG -BFMETAqZWI5CDHkbhDusDAABeQItQE+A0STpalRQ1QzoV7APREOZgNGL3KwQsUKtFZBPREaAKkMp -xgLPZpBugdpF1BxAISivZKQDIoxICxgOh4IC1Y8A0hR0BmAAhq1pEmgE9A5MBKMjWGFF8g5YtaKM -goPCAeuTJbYnYF8h9GdYqLQFkKuh1FDLAZtq5gUjaXCwkaZAwYREvgD5bFiDejcsrzsIYPeA9ADB -BEuIE/BoAfIFpgeah8yYEAJIGtDCKnAbR5bZ1UZVeEI9ZIndT4H9QWxRc8urAYJwtAGDMYPSQlPQ -gqsTQUKTDMQiT3WW8zkKPNAzCsoXHBoBAsPkLQvjaoMTBU9J5tCERQvS1YISAKvSqXoBcbZAiwq/ -AcqR3h2PWVDhElp7IMc8nvIZsC1YkBQiyGWZds9iC/BciPkOpjLwHEofFkQ7MAjSKJivYPPBi5KM -TAgcAK4byCAwOsFBAScd5DU6jhI1BKEPHj0NkNegeYhNUEdAgC1ZppYzYRe0j3gwMFX4Dp0Bc4Pf -gPqMYShfEtsePUagQOQ2bKHA/BhNMKE1BJwMuIKFMgwv0giUnipK1PYBWwasRxDEINfBDKC9wFQ0 -OxrYEgwLWEMFbR3yBpGvYFNo3cFnVrKpDSqAwQi1qg1DKmtagkQNVkeoPkHHqmAowMpR54yXgEGB -p0A4gFsgCcRDd7cCNKJVrrkgoJRcTUBrg0Jn0DnnGWLouZuApw3qARxgDWmoB+E3kFxgSui87mqV -BvsQXDhB1qxwrybor8kq2DqCqhDonrCgFcwBFln3Czh0tUB6aY4KGCpoIIKxAbofrHoUR2h0gwFM -zENGBnOeNkG3k8oMkMJoGDPE0UfiRkjE3QAeoNIUVhYtdVYSVZCC+CZHuuE5DjSp5t7yaAZz4HXx -tAlpwVC3jPqyHGgPYAyAS7SHNiOYtuZEEJGMAlcEc5HKSjTq0G6XZKAxhcpO5CtUa+AkUOcxrUIL -MHopWxH5AesNKkcwPCqABboYvgM6qD6jbMOgyQV2KbG8gD9hFcDuEokcAiEDP6A1AOwO5K4i2yAd -6YABu2jjsThhlqomSucISTIlJLqSgHlgVeIWCjGZ+LXgiBC7kNAncCPIFr0JWLG4+jz1I4ktAsY2 -L4GwUDQsIPbkDKAbWNaMXXDoqokiFUHEwwJBAMpY1DSwBgrQCxoLCR0RDDobbCPoQKX+Oo9sLoOW -1xaGGq4S+AOCKaLROUevBAw4hhAatpDRSNH1OOFNHlcOaBgDEdAERoxCA3SjRLwKMEPBHAYiAbNb -1ckcembAI0RTA60uhbQC2Q9UAVYfh6SFkQFYWIFoAxyNhEFBgMJpUaMIkoIKFzZWRJGaMQIYxHvE -Ucm6gUXCfmBOgCdk+Jg8aSQD3iWqYfiYglFIFaU5sR14YpUB5jUvHlYDWxBJT11tWE1gTfCWYYRk -WjAiBW1ZRdMhpBGyOJA3K4PWRWoS0CEFnmcUjTXBVs+g+Y4xU4yTxdBjgmHKDNVXPGkBTAUeNDAm -Clji6irIv5bAF7ZCCxDITMQ3CQ7xJTB/LINhYWGM2ABpAgYgvCEpRGPhpIBTgb5hWrpbjYsBy4xh -GCq4EDVgAVL7DoOSaaBcUImwhhJhYrroQBSS4aSGLRJdz9Vrq8JgcHXBDAQtxZlmOQgm8AOAMrSJ -wvJKiCJDeaPAk4AKQWOK1PgHXwbkFyyMyCoEYQrxolUOA7/EGgbvCSmMASkrangHTIIJBwMlEQYa -AZVkkA7wXKQcwBNAgCoQrRIlVElFC0sG90/TqqgeafySmuqwsOACyYpm3kMDsI5At3AYJMfFQTgy -UgFQA6O/BWuPpizIeRLKkGMgAjCOresBAUwm9Kl4+osCz4GuNBeTanfweYH9wS9BamWJsAOuhCnC -ynHEXeHdjYBjYSCAQV6bn7sF2i+yxpYkgugFCOQ3aA+exq1wNCitJd6M0MkYbwVtZGg2sOpAZhHR -LZD1gEUC50MRNNsdhSE40oKpxsgCQTdA7xr2iVBlMGwlGqEukcSxgDKo5NPMe8mUNjEwdmGRJQnV -IdE1MMwMyGVgUhmVFOEKsH8ypgWGKwSiWZQEia4irBCsUkZzpSQaN1UBEMOjk8NjGDIm4sobVjOL -2hScGoVoBAJEwsAFLI5oSAuM+4K6J5EpdGBg6TBMYAQAcVigzmApODDnQEbDiO0Uiz4ccBxoMpBJ -QLeUrNHiBIYy3QAw+zEWAq0x8gP8g7EFRvelMQgsg4hmgdyQ6THOEcKmFoENegBUKmgWGUNuSA2w -SGDxwpSoIKI8jQF43VPDMcHcMZDIUeaSYEwCSB2BM8wcjL2gigA7h7phYDUD76FHrPuvMob+Ac2y -qmqsBh1kgGD0uL1CzG2MNoAwQRMcd4g4kC6AG07VLQuYG6pY8EBwy4ssJJiICo2eah6ujNSgmytI -MTKGS7WNCYJj8F8xjqB500CZ2K2iBZwIrwmIQ+hXAQ8VVHA44nzFKI+xUcAJy2vqjLiLrBE9JrY3 -7gKhRWp4MK5GYGNnyMYTYzql1ucc0iM8FnVny9UCRuhuhG64osgkyois4m4hgjsGssDwcDxaoCQG -vSWzVKATQMDJIvCyxsrEOIK158lOEAEENiygg6WWG0/1ggJEBw4OCDIMQ6L9B0wNWpH6fdiC0fYR -kOUQDo8bU4Yfz+DmDMwJXFBiv4KaBtNB4qiFRpCCuy40II9dsOhaMqwmQjVxD1oWFoIuNXVRYeww -DiNujhEdoGTWUNagoIFJBXiRbIOgA0rsHha6IDt/MQ7NeIHlYMACcUxEHgP/MobacD+ULg94qIAK -8K01rKGny+A2jKqxDRITykud34HeBQwTgB/KcUSdE3KzuvxkMwyIj0dqxW2uAtIkjzKENaQXyHZi -1gBy0WDUulEUfScHRLGMLUA9YngbHOWYRtccbqRoWz08uqNmLKluEL8IXrrKEsuVbErI5ksu7sDd -ICAnVeNgjxYehG1YpCKRGLjHS0QPcZ8Y3D9WtUjAN21ktyVAiiAtYkAKgcRAdROLW/MGeRJOxLAe -CA0VLUFAFcgDhmwYcbpZi/sdKu4oIknA5Dk05KkZZphe0FrRdTZlJTBHVEbznNC+A3cC5A6P7ilP -WwDpsXpIQgB1gL4LGE10p0XjatMG041fMPM1aQyAJHSDgPgJkSBhMRgs16kT/V0kLN5gA3wOXAAS -kyNbmIQNACkqq+37SFongFYkYbpHh4jFQAAJC1JGAcEKay3SXR8uFr4+vnIUnAa0zxlFUunmLHkV -BApIbTTNiD2KjUCTG/wNzhDZbldVbT8GPuH2kbn7gnwIo1FVjmzZsDGwU4HnVIXyqd5CwUGrBDgu -rYpWtazZ5UT9QyOw9w2miqkgrGDVVJEzNJOcwe1xY2sICBAEHm6rE4uCJz4AhvzAZjU4FRuB9a4v -HPIhvMVhZEslDkYMhwJERje1iVnLo1OHMQVtYw1MrozmresBS9zSETT7iEpSRAzuICqGggFrDYhO -E/vgfYsY46WbbtS3BrWKeRiCnrkQvkIWTiWDsvMGsryg+cG4mApGL3G7RjXcVWjEm/v8KtnXxs0d -VhNS8AY4jiD7tfg2tlDBguRl1uI88uZ2KsExh/aAFkNSNP7hcDMTZChyu0KsDC28SyPtwD5ohsAL -4DJKhGjAlDdNZI2B9OAA4VNgNUwCkCU9qICBEhAiAqBMBI2FEQ7oxmBKjo4E1hGIiQRXVNICFKi+ -DArFMSDTSHXBtcQtLICtZaZQT8ewxRRimMLKEc+Y+Gw4DN1VRoc7ZG2sPIoWDo9SSxuiHodGruPA -aAEss8TCAStdMUwwVwuyBcYpGGqiY3C3QOdAl9leXaBec7YBTwDdIYaSsUcngF8MZSkciHqJF90N -VNy8AeeBpxYPgQL4IJtqihZPdDUCmgdRqUU4WK9uQMWBPaRvAeF8vQC5GoGdDbPFmDXY0rLq0Q3u -nRnROs4LEOJNRUeZ2j0EkIqWt2jEMl1twHIBwgTTTCJuvOrRAhOQ9GwpSfGG424EzjSHSwPyg+Sq -uFugZQLKDqiC2BDuFgIqTaBtI7qIgNCeBgPOsJddjXDKwGqcrgo8WigojhV9h4r3BORuhE44CG9G -2+F3d8OTQIW5Xep6jvYNETx06AgFXWcjFqAb95Y2JNSn26OSvu1lbYB5Z6ol/OUFxdUGd9dgHobt -r7cw3RQB7WkVUwOo7+3RQgTzDbf8zewerZGoT4iG/BTgKeqDKbQbeGgYYAIOFzc7ZWgLaoy0QJlH -mJ8G+EhSjAz2Pjhnqg4H0GVY/yBdQJkywAo8SxxMXlDtalxQiT8uCSJ9j0xQtUalCRFg5ExbD2Ll -YooEMBvZJCJWDW4sg/XMoJuOGgTcGjQqeIXuJlBqAxTAm2QLFIbiFKKuFgUvSQvcASYZ+BUs2p2K -uxu65wYOg54qGC6tqXhHJ0dktQw6ij1MTNKypHDVMLyrYPaGmUWJgX4QEvANHTuR5L3Bsut7DAoJ -tuBuFVgN6JBjppCYEehOGR0MmpAMUBNnZGhRV0mPUaNyxZibAnNGt0ZmWeJu0ZQlKvSwAUpISpUo -rjB505TGYBWIKu4owhKydJvT0YIFaczpm+Ba/AfcNIb4ptQEAFUNQgtoke6+YQuZ0TOg0JwDfKGj -BoRFKFCHAkKHsQSFYL62KBkGxUDOM4LuvyFJKmaInGzAgPrWkxB42gJsIBCQNLOxjlEyAARCRtuA -p42AOkHZkR0fXAmHhyeAv40hdQaWBTcaiA3DMGhc6EPBHRhYO5mjARciaRXesjmLjSTgGBD7ZIeX -kDoQEicLugcnkHiSirmJOrcLmE9jhPcxHonRc5VKDLoJhVkzli1gEFAZdLf1YD3pAlxvU5zzMsou -zMyk20W0hSLrGwkKkUyAdnOzTgMEbojF8QOnFhAmana8YHTDUTnEUiGJebYSsBqGPw== - - - 3C1QdgELy7ryREAY55MwU0nbe3M1EkSiP/WQierRAsZmCSnw3oCcjQQGs0oFPXfXoxsB7UFw8jUv -jne3QP4Cjw59COoPIyAYL/ASZ+xJuhphv+Bg6DrKoxtEnRbK8+pAWyBLC2BTIAjMQyQSztkBye8C -ca5xhuMxBiXRt1JZkcWYhkFpigiiUPcgVcwIAuNYwGQphpIzo2p2qtaAxWQp+pMQCxecVMCC+azG -EsnY3e3cX0d5rQKh1GmQ6oA0Hgi7dFb9aF71q602FiR8DKp/N2PVTqc7rA6bPXgU++g3B8Nuvxkb -fHb/wV/wJeOFpaXSaXnur/8fPYE7LA== - - - \ No newline at end of file diff --git a/img/paypal-default.svg b/img/paypal-default.svg deleted file mode 100644 index 79f5cfd..0000000 --- a/img/paypal-default.svg +++ /dev/null @@ -1 +0,0 @@ -paypal-default \ No newline at end of file diff --git a/img/paypal-white.svg b/img/paypal-white.svg deleted file mode 100644 index 08e6a06..0000000 --- a/img/paypal-white.svg +++ /dev/null @@ -1 +0,0 @@ -paypal-white \ No newline at end of file diff --git a/img/wfp-bl.svg b/img/wfp-bl.svg deleted file mode 100644 index 79904cc..0000000 --- a/img/wfp-bl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/img/wfp-wh.svg b/img/wfp-wh.svg deleted file mode 100644 index f6bc0e1..0000000 --- a/img/wfp-wh.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 74d880f..0000000 --- a/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - Warp zone of ThirteenAG's Github - - - - - - - - - - - - - - -
- - - -
-
-
- -
- -
-
-
-
-
-

- -

-
-


Plugins to make or improve widescreen resolutions - support - in PC games.

- -
-
-
-
-
-

- -

-
-


Fusion Fix for Grand Theft Auto IV: The Complete - Edition.

- -
-
-
-
-
-

- -

-
-

Project2DFX is a set of plugins for GTA III, Vice City, San - Andreas and GTA IV(EFLC) which adds LOD corona effect to a game map, making - LOD-world look a lot better.

-
- -
-
-
-
-
-
-

- -

-
-


A collection of gifs made out of almost every dialogue - in - GTA III, VC, SA, LCS, VCS, GTA IV, EFLC and V.

- -
-
-
-
-
-
-
- -
-

Sorry, but your browser does not support WebGL!

-
- - - - - - - - - \ No newline at end of file diff --git a/iv.html b/iv.html deleted file mode 100644 index f60d329..0000000 --- a/iv.html +++ /dev/null @@ -1,4494 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Fusion Fix for GTAIV: The Complete Edition - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- - - -
-
- -
-

- Download
- Now
-

- -

- Scroll down for more -

- -
-
- -
- -
-
-
-
-

Fusion Fix

-

- Fusion Fix for Grand Theft Auto IV: The Complete Edition is a comprehensive open-source modification that aims - to fix a wide range of technical issues, bugs, and limitations in the game that were left unaddressed in - official updates. This project represents a community-driven effort to restore and enhance the Grand Theft - Auto IV experience for modern systems. -

-
-
- -
-
-
- -
-
-
-
-

Z-FIGHTING

-

The PC port of Grand Theft Auto IV was plagued with z-fighting not seen on other - platforms.

-
-
- -
-
-

The PlayStation 3 version partially dealt with it by using a very high near clip value, while the Xbox - 360 solved it by using a reversed floating point depth buffer. Fusion Fix provides a solution that - yields results similar to the better approach from the Xbox 360, and effectively eliminates all - z-fighting.

-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- Original Definition On -
- Original Definition Off -
-
-
- Definition Off - Definition On -
-
-
- -
- - -
-
-
-
-
-
- -
-
- Original Definition On -
- Original Definition Off -
-
-
- Definition Off - Definition On -
-
-
- -
- - -
-
-
-
-
-
- -
-
- Fusion Fix Definition On -
- Original Definition On -
-
-
- Original Definition On - Fusion Fix Definition On -
-
-
- -
- - -
-
-
-
-
-

DEFINITION

-

GTA IV's PC port has an odd "Definition" option which ENABLES graphical - effects when OFF, and DISABLES them when ON. One effect is a blur filter which hides this pixel pattern - effect as objects fade, but it's way stronger on PC due to leftover anti-aliasing code.

-
-
-

- Fusion Fix removes this broken anti-aliasing code and makes it so the blur filter only applies to objects - as the pixel pattern effect occurs when "Definition" is on, rather than applying to the entire screen when - it's off, this means Fusion Fix provides a sharper and cleaner image than seen on any other platform. -

-
-
- -
-
- Fusion Fix Definition On -
- Original Definition Off -
-
-
- Original Definition Off - Fusion Fix Definition On -
-
-
- -
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

DEPTH OF FIELD

-

The game's depth of field effect - doesn't scale correctly with resolution and it only looks correct at 720p like on consoles. Depth of field - is also tied to the games "Definition" option.

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-

- We fixed the scaling by implementing an efficient bokeh blur rated up to 4K, and added an individual depth - of field option separate from the "Definition" option. This allows you to not only toggle depth of field, - but also control how strong it is during gameplay.

-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- Motion Blur at 120fps -
- Motion Blur at 10fps -
-
-
- Motion Blur at 10fps - Motion Blur at 120fps -
-
-
- -
- - -
-
-
-
-
-

MOTION BLUR

-
-
-
-

Similar to depth of field, motion blur was tied to the - "Definition" option and it had an issue where it became less intense at higher frame rates.

-

- Fusion Fix makes motion blur the same strength regardless of frame rate. It also adds an individual motion - blur option similar to depth of field, untying it from the "Definition" option. This allows users to - disable motion blur completely or change how strong the effect is.

- -
-
-
- -
-
-
- -
-
-
-
-

BLOOM

-

Bloom in the original GTA IV didn't - scale correctly with resolution, meaning the effect got weaker as your resolution increased. It only - looked correct at 720p.

-

- With Fusion Fix, we've rewritten the code for bloom so it looks better and scales with resolution - correctly. We've also added a new option for bloom so you can enable or disable it depending on your - preference.

-
-
-
-
- -
-
- Original Bloom at 1440p -
- Original Bloom at 720p -
-
-
- Original Bloom at 720p - Original Bloom at 1440p -
-
-
- -
- - -
-
-
-
-
-
- -
-
- Original Bloom at 1440p with Fusion Fix -
- Original Bloom at 1440p -
-
-
- Original Bloom at 1440p - Fusion Fix Bloom at 1440p -
-
-
- -
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-

VOLUMETRIC LIGHTS

-

GTA IV had fully functional - volumetric lights in the console versions, but because of a typo the occlusion effect wasn't present on - the PC version.

-
-
-

- After fixing the typo, the occlusion works perfectly. We also used this opportunity to adjust the volume - transparency code to make the edges smoother. -

-
-
-
-
- -
-
-
- -
-
-
-
-

COLOUR CORRECTION

-

The PC version looked very washed out compared to the consoles, as it - lacked the colour curves from them. -

-
-
-
-
- -
-
- Console Gamma On -
- Console Gamma Off -
-
-
- Console Gamma Off - Console Gamma On -
-
-
- -
- - -
-
-
-
-
-
- -
-
- Console Gamma On -
- Console Gamma Off -
-
-
- Console Gamma Off - Console Gamma On -
-
-
- -
- - -
-
-
-
-
-

- You've probably noticed some of our Fusion Fix comparisons look better than the original game colour wise. - This is because we've implemented an option called “Console Gamma” that restores the curve used in the - Xbox 360 version, making the colours in Liberty City pop more just like you remembered!" -

-
-
- -
-
- Console Gamma On -
- Console Gamma Off -
-
-
- Console Gamma Off - Console Gamma On -
-
-
- -
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- Tone Mapping On -
- Tone Mapping Off -
-
-
- Tone Mapping Off - Tone Mapping On -
-
-
- -
- - -
-
-
-
-
-
- -
-
- Tone Mapping On -
- Tone Mapping Off -
-
-
- Tone Mapping Off - Tone Mapping On -
-
-
- -
- - -
-
-
-
-
-

TONE MAPPING

-

GTA IV was developed in the early days of HDR - rendering, and as such it didn't have any fancy tone mapping operators like we have today to deal with - clipped highlights.

-

- Fusion Fix adds an option to enable tone mapping to make bright highlights look less harsh. -

-
-
-
-
- -
-
-
- -
-
-
-
-

PARTICLES

-

GTA IV had soft - particles on console, but they were missing on PC due to the lack of a function to linearize depth - in the soft particles shaders, so particles clipped through objects. Shattering glass particles also lost - their colour on PC.

-

- Fusion Fix fixes soft particles so they work again and it also fixes the broken glass particles so they - keep their colour when shattering. -

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
- -
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
- -
-
-

OBJECT FADING

-
-
-
-

The 1.0.6.0 update for PC broke several graphical - effects, one of them - being screen - door transparency in many materials, which led to the loss of LOD fade/blending. Terrain fading was - also missing on ALL PC versions. -

- -

- We restored this functionality from previous versions so fading now works again, and we also restored - terrain fading from the console versions of the game. -

-
-
-
- -
-
-
- -
-
-
-
-

EMISSIVE LIGHTS

-

Another bug caused by patch 1.0.6.0 - was the - disappearance of several lights around the map. This was - because the sign of the depth offset value was inverted for some reason, pushing them inside buildings and - other meshes.

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
-

- Fusion Fix restores the original sign and all the missing lights can now be seen again. -

-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- CHSS -
- Sharp -
-
-
- CHSS - Sharp -
-
-
-
- - -
-
-
-
-
-

SHADOWS

-

Shadows were by far the most broken aspect of the game post patch 1.0.6.0. They had horrible filtering, - suffered from peter - panning, had their draw distance reduced, performed significantly worse than the original shadows - implementation and had many other issues. -

-
-
-

- Fusion Fix completely replaces the filtering and bias code, adds support for animated tree shadows, adds - contact - hardening shadows and it also fixes dozens of other bugs related to shadows in general. -

-
-
-
-
- -
-
-
- -
-
-
-
-

RAIN

-

Rain on PC was made almost invisible, rain streaks became shorter at higher frame rates and rain - droplets on screen became pitch black and lost their refraction effect from console. -

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-

- We've made rain much more visible, fixed rain streaks so they stay the same size regardless of frame rate - and we've made droplets coloured again, as well as restoring the refraction effect. The fixed rain also - looks fantastic when using the Xbox Rain Droplets mod! -

- -
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
- -
-
-

WATER

-

The surface texture of water was tiled excessively so it looked noisy - instead of wavy, there was a bug which caused water to look completely flat on some GPUs, and the shore - foam effect was missing entirely on PC.

-

We not only fixed those texture bugs and restored the foam, but we also added an extra tweak that makes - the edges of the water smoother, similar to what we did with the light volumes. -

-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

REFLECTIONS

-

Reflections were toned down significantly on PC, - vehicle reflections became - jagged due to g-buffers - being assigned the wrong format and mirror reflections became distorted at certain camera angles. -

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-

- Fusion Fix restores the stronger console reflections, swaps the g-buffers' format to the right one so - vehicle reflections are no longer jagged, and it fixes mirrors so they no longer become distorted. -

-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- PC -
- Console -
-
-
- Console - PC -
-
-
-
- - -
-
-
-
-
- -
-
- PC -
- Console -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-

TREE LIGHTING

-

The Xbox 360 version of the game had a really nice - looking translucency - effect for the trees, and they - were also lit differently from other objects. -

-

Neither the PC or PlayStation 3 versions had this. Fusion Fix allows you to toggle between PC/PlayStation - 3 and Xbox 360 style tree lighting, as well as a bonus mode called PC+ designed to be a middle point - between the two.

-
-
- -
-
- PC+ -
- PC -
-
-
- PC - PC+ -
-
-
-
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

DISTANT LIGHTS

-

GTA IV features a large number of lights in the distance for the first time - in the series. However on PC these lights were broken and only became visible after 10PM when it was - already dark. -

-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-

Fusion Fix makes it so lights begin to turn on after 8PM and they're all visible by 10PM, the same as it - was on console. We've also integrated Project - 2DFX directly into the pause menu, a mod which adds much - more accurate distant lights compared to the original game. -

-
-
- -
-
- Project 2DFX -
- Original Distant Lights -
-
-
- Original Distant Lights - Project 2DFX -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- SMAA -
- No AA -
-
-
- No AA - SMAA -
-
-
-
- - -
-
-
-
-
-

Anti-Aliasing

-

The game's Xbox 360 version ran at 1280x720 with 2x MSAA.

-

- Meanwhile the PC - version lacked any anti-aliasing whatsoever. - Fusion Fix implements FXAA and SMAA, which are simple and performance friendly, and - do an excellent job at smoothing out jagged edges, especially at high resolutions.

-
-
- -
-
- FXAA -
- No AA -
-
-
- No AA - FXAA -
-
-
-
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

SUN SHAFTS

-

The sun in GTA IV is pretty effectless in comparison to - every other 3D GTA - game. -

-
-
-
-
- -
-
- After -
- Before -
-
-
- Sun Shafts Off - Sun Shafts On -
-
-
-
- - -
-
-
-
-
-

Inspired by RED DEAD REDEMPTION™, Fusion Fix adds a lovely effect that simulates light rays coming from - the sun. It's fully customizable and synergizes really well with tone mapping and volumetric fog. -

-
-
- -
-
- After -
- Before -
-
-
- Sun Shafts Off - Sun Shafts On -
-
-
-
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Volumetric Fog Off - Volumetric Fog On -
-
-
-
- - -
-
-
-
-
- -
-
- After -
- Before -
-
-
- Volumetric Fog Off - Volumetric Fog On -
-
-
-
- - -
-
-
-
-
-

VOLUMETRIC FOG

-

The game uses a very simple linear piecewise fog shader, - but since it isn't radial it moves with - the camera, and it doesn't do the best job at hiding the edges of the world. -

-

To touch up that aspect of the game, we implemented an optional radial height based exponential fog shader, which also - adjusts its colours dynamically to match the sky and blend the horizon in every situation. -

-
-
- -
-
- After -
- Before -
-
-
- Volumetric Fog Off - Volumetric Fog On -
-
-
-
- - -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

CUTSCENES

-
-

Cutscenes in GTA IV break at frame rates higher than 30. - The camera field - of view can become too high or too low, and the characters and camera will judder significantly even with - a stable frame rate. -

- -
-

Fusion Fix fixes these issues so the camera field of view is always at its intended level, and the judder - from characters and the camera will no longer happen. -

-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - After -
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- After -
- Before -
-
-
- Before - After -
-
-
-
- - -
-
-
-
-
-

VEHICLE LIGHTS

-

The lights of all vehicles introduced in The Ballad of - Gay Tony were corrupted when they were ported to PC, including iconic cars like the second generation - Schafter, Bullet GT, and Super Diamond. -

-

Fusion Fix restores the proper light colours, ensuring that TBOGT vehicles have the same high-quality - lighting as the original game's cars, with accurate red taillights, amber turn signals, and properly - coloured headlight beams. -

-
-
-
-
- -
-
-
- -
-
-
-
- -
-
-

TURN INDICATORS

-
-
-
-

There's now a new option with Fusion Fix to make Niko use turn indicators - automatically when taking a turn, maybe he finally got his license. Flying through the windshield of a - vehicle will also now cause the hazard lights to be activated. -

-
- -
-
- -
-
-
- -
-
-
-
-

EXTENDED CONTROLLER SUPPORT

-
-
-

The PC version has support for Xbox 360 gamepad icons, - but that's it. -

- -

Our artists have created brand new gamepad icons for several different systems and controllers, including - DualSense, Steam Deck and even Nintendo Switch! -

-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-

IMPROVED MOUSE CONTROLS

-

GTA IV's mouse input breaks at frame rates higher than - 30 and overall doesn't feel as smooth as it should. -

-
- -
-
-

- We've implemented a raw input option which provides precise 1:1 mouse movement throughout the game. - Technically speaking, the actual implementation is not raw input, but the name was chosen for simplicity, - since functionally it behaves in a similar manner. -

-
-
-
-
- -
-
-
- -
-
-
-
-

CENTERING DELAY

-

The original game's camera almost immediately begins - to return to the center of the screen once you move it anywhere from the center. This is frustrating and - it feels like you're fighting the camera most of the time. -

-
- -
-
-

- With Fusion Fix, there's now a new slider in the pause menu that allow you to extend the delay before the - camera starts to return to the center of the screen. This slider can even be individually configured for - controller usage. -

- -
-
-
-
- -
-
-
- -
-
-
-
-

COVER CENTERING

-

When coming to a corner in GTA IV while in cover, your - camera control gets locked for a couple of seconds before you can move it freely. -

-
- -
-
-

- Fusion Fix removes this restriction and you can now aim immediately once you reach a corner while in - cover. -

-
-
-
-
- -
-
-
- -
-
-
-
-

CENTERED CAMERA

-

GTA IV's default camera is offset to the left of the - player while on-foot and in vehicles. -

-
-
-
- -
-
- Default Camera -
- Centered Camera -
-
-
- Default Camera - Centered Camera -
-
-
-
- - After -
-
-
-

- We've added new options to center the camera either on-foot, in vehicles, or both! -

-
-
- -
-
- Default Camera -
- Centered Camera -
-
-
- Default Camera - Centered Camera -
-
-
-
- - After -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-

IMPROVED SNIPER CONTROLS

-

GTA IV locks the players movement while aiming down - sights with a sniper. Snipers also can't be aimed in third-person. -

-
- -
-
-

- Fusion Fix improves this by allowing movement while using the scope and it also allows you to aim with a - sniper without using the scope as well if you wish. -

-
-
-
-
- -
-
-
- -
-
-
-
-

ALWAYS RUN

-

Walking is the default movement in GTA IV, to jog/run - you need to hold/tap the sprint key. -

-
- -
-
-

- We've added an always run option which makes the default movement a jog rather than a walk, similar to - classic GTA titles. You can still walk by pressing the ALT key. -

- -
-
-
-
- -
-
-
- -
-
-
-
-

CAMERA SHAKE

-

In GTA IV, the camera is meant to shake as you move, - but this effect becomes significantly weaker above 30FPS. -

-
- -
-
-

- Fusion Fix makes the effect work regardless of frame rate and it also adds an option to disable the effect - entirely for those who don't like it. -

- -
-
-
-
- -
-
-
- -
-
-
-
-

IMPROVED LOADING TIMES

-

- GTA IV on PC has an unskippable intro and it takes you to a main menu first instead of just loading your - last save immediately like console. -

-
- -
-
-

- Fusion Fix adds a skip intro and skip menu option in the GAME menu, as well as improving overall load - times. This significantly reduces how long it takes to get in-game. -

-
-
-
-
- -
-
-
- -
-
-
- -
-

SEASONAL EVENTS

-

- Fusion Fix adds seasonal events to the game which includes snow at winter and a scarier atmosphere - at Halloween. The snow effect is done almost entirely using shaders instead of replacing map textures, - similar to GTA Online's yearly snow event. Players can toggle this feature in the GAME menu.

-

Want to experience these without waiting? Then keep an eye out for the phone numbers to call!

- -
-
-
-
- -
-
-
- -
-
-
-
-

SPECIAL THANKS

-

- What we've shown here so far is just a selection of the most visually noticeable fixes and improvements - but Fusion Fix contains a vast array of deeper fixes to make the game feel, perform and act better, - including fixing numerous physics related bugs that are tied to frame rate, such as the infamous - Helicopter Bug in the last mission! We've also included DXVK into the game in a more native manner meaning - players will no longer have to configure external files, it's now just a simple menu toggle. - - We'd like to thank all of you out there who have taken an interest in this project, contributed or just - spread the word. Fusion Fix for Grand Theft Auto IV would've never had become such a huge project without - the community coming together. -

-
-
-
-
- -
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iv/assets/android-chrome-192x192.png b/iv/assets/android-chrome-192x192.png deleted file mode 100644 index 9d72a66..0000000 Binary files a/iv/assets/android-chrome-192x192.png and /dev/null differ diff --git a/iv/assets/android-chrome-192x192.webp b/iv/assets/android-chrome-192x192.webp deleted file mode 100644 index 695f750..0000000 Binary files a/iv/assets/android-chrome-192x192.webp and /dev/null differ diff --git a/iv/assets/android-chrome-512x512.png b/iv/assets/android-chrome-512x512.png deleted file mode 100644 index baf1fce..0000000 Binary files a/iv/assets/android-chrome-512x512.png and /dev/null differ diff --git a/iv/assets/android-chrome-512x512.webp b/iv/assets/android-chrome-512x512.webp deleted file mode 100644 index bab1f59..0000000 Binary files a/iv/assets/android-chrome-512x512.webp and /dev/null differ diff --git a/iv/assets/apple-touch-icon.png b/iv/assets/apple-touch-icon.png deleted file mode 100644 index 79078f9..0000000 Binary files a/iv/assets/apple-touch-icon.png and /dev/null differ diff --git a/iv/assets/apple-touch-icon.webp b/iv/assets/apple-touch-icon.webp deleted file mode 100644 index 7896d42..0000000 Binary files a/iv/assets/apple-touch-icon.webp and /dev/null differ diff --git a/iv/assets/favicon-16x16.png b/iv/assets/favicon-16x16.png deleted file mode 100644 index 6b797ab..0000000 Binary files a/iv/assets/favicon-16x16.png and /dev/null differ diff --git a/iv/assets/favicon-16x16.webp b/iv/assets/favicon-16x16.webp deleted file mode 100644 index 4f5317e..0000000 Binary files a/iv/assets/favicon-16x16.webp and /dev/null differ diff --git a/iv/assets/favicon-32x32.png b/iv/assets/favicon-32x32.png deleted file mode 100644 index aabe0e8..0000000 Binary files a/iv/assets/favicon-32x32.png and /dev/null differ diff --git a/iv/assets/favicon-32x32.webp b/iv/assets/favicon-32x32.webp deleted file mode 100644 index f039ff2..0000000 Binary files a/iv/assets/favicon-32x32.webp and /dev/null differ diff --git a/iv/assets/favicon.ico b/iv/assets/favicon.ico deleted file mode 100644 index 7c97da4..0000000 Binary files a/iv/assets/favicon.ico and /dev/null differ diff --git a/iv/assets/favicon144.png b/iv/assets/favicon144.png deleted file mode 100644 index 6ff3b07..0000000 Binary files a/iv/assets/favicon144.png and /dev/null differ diff --git a/iv/assets/favicon144.webp b/iv/assets/favicon144.webp deleted file mode 100644 index b62e98d..0000000 Binary files a/iv/assets/favicon144.webp and /dev/null differ diff --git a/iv/assets/favicon16.png b/iv/assets/favicon16.png deleted file mode 100644 index 8f17f4e..0000000 Binary files a/iv/assets/favicon16.png and /dev/null differ diff --git a/iv/assets/favicon16.webp b/iv/assets/favicon16.webp deleted file mode 100644 index 86e4c1e..0000000 Binary files a/iv/assets/favicon16.webp and /dev/null differ diff --git a/iv/assets/favicon180.png b/iv/assets/favicon180.png deleted file mode 100644 index 6b6485f..0000000 Binary files a/iv/assets/favicon180.png and /dev/null differ diff --git a/iv/assets/favicon180.webp b/iv/assets/favicon180.webp deleted file mode 100644 index a012871..0000000 Binary files a/iv/assets/favicon180.webp and /dev/null differ diff --git a/iv/assets/favicon256.png b/iv/assets/favicon256.png deleted file mode 100644 index aa1f274..0000000 Binary files a/iv/assets/favicon256.png and /dev/null differ diff --git a/iv/assets/favicon256.webp b/iv/assets/favicon256.webp deleted file mode 100644 index 2ae72d9..0000000 Binary files a/iv/assets/favicon256.webp and /dev/null differ diff --git a/iv/assets/favicon32.png b/iv/assets/favicon32.png deleted file mode 100644 index d7e657a..0000000 Binary files a/iv/assets/favicon32.png and /dev/null differ diff --git a/iv/assets/favicon32.webp b/iv/assets/favicon32.webp deleted file mode 100644 index 5621144..0000000 Binary files a/iv/assets/favicon32.webp and /dev/null differ diff --git a/iv/assets/favicon48.png b/iv/assets/favicon48.png deleted file mode 100644 index e26a4a9..0000000 Binary files a/iv/assets/favicon48.png and /dev/null differ diff --git a/iv/assets/favicon48.webp b/iv/assets/favicon48.webp deleted file mode 100644 index 94597bd..0000000 Binary files a/iv/assets/favicon48.webp and /dev/null differ diff --git a/iv/assets/favicon512.png b/iv/assets/favicon512.png deleted file mode 100644 index 6b82574..0000000 Binary files a/iv/assets/favicon512.png and /dev/null differ diff --git a/iv/assets/favicon512.webp b/iv/assets/favicon512.webp deleted file mode 100644 index 0869ce3..0000000 Binary files a/iv/assets/favicon512.webp and /dev/null differ diff --git a/iv/assets/favicon96.png b/iv/assets/favicon96.png deleted file mode 100644 index e8fed60..0000000 Binary files a/iv/assets/favicon96.png and /dev/null differ diff --git a/iv/assets/favicon96.webp b/iv/assets/favicon96.webp deleted file mode 100644 index cbfb2d6..0000000 Binary files a/iv/assets/favicon96.webp and /dev/null differ diff --git a/iv/assets/fusionbanner_back.webp b/iv/assets/fusionbanner_back.webp deleted file mode 100644 index 87a9ff0..0000000 Binary files a/iv/assets/fusionbanner_back.webp and /dev/null differ diff --git a/iv/assets/fusionbanner_front.webp b/iv/assets/fusionbanner_front.webp deleted file mode 100644 index 642a6c7..0000000 Binary files a/iv/assets/fusionbanner_front.webp and /dev/null differ diff --git a/iv/assets/fusionbanner_front_mobile.webp b/iv/assets/fusionbanner_front_mobile.webp deleted file mode 100644 index 39d87ef..0000000 Binary files a/iv/assets/fusionbanner_front_mobile.webp and /dev/null differ diff --git a/iv/assets/promo1.jpg b/iv/assets/promo1.jpg deleted file mode 100644 index f11569c..0000000 Binary files a/iv/assets/promo1.jpg and /dev/null differ diff --git a/iv/assets/promo2.jpg b/iv/assets/promo2.jpg deleted file mode 100644 index b3bda7b..0000000 Binary files a/iv/assets/promo2.jpg and /dev/null differ diff --git a/iv/assets/promo3.jpg b/iv/assets/promo3.jpg deleted file mode 100644 index 5d60c77..0000000 Binary files a/iv/assets/promo3.jpg and /dev/null differ diff --git a/iv/assets/promo4.jpg b/iv/assets/promo4.jpg deleted file mode 100644 index 4f7a48d..0000000 Binary files a/iv/assets/promo4.jpg and /dev/null differ diff --git a/iv/assets/promo5.jpg b/iv/assets/promo5.jpg deleted file mode 100644 index 3e81f97..0000000 Binary files a/iv/assets/promo5.jpg and /dev/null differ diff --git a/iv/assets/site.webmanifest b/iv/assets/site.webmanifest deleted file mode 100644 index 45dc8a2..0000000 --- a/iv/assets/site.webmanifest +++ /dev/null @@ -1 +0,0 @@ -{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/iv/css/juxtapose.css b/iv/css/juxtapose.css deleted file mode 100644 index 2136713..0000000 --- a/iv/css/juxtapose.css +++ /dev/null @@ -1,347 +0,0 @@ -/* juxtapose - v1.2.2 - 2020-09-03 - * Copyright (c) 2020 Alex Duner and Northwestern University Knight Lab - */ -div.juxtapose { - width: 100%; - font-family: Helvetica, Arial, sans-serif; -} - -div.jx-slider { - width: 100%; - height: 100%; - position: relative; - overflow: hidden; - cursor: pointer; - color: #f3f3f3; -} - - -div.jx-handle { - position: absolute; - height: 100%; - width: 40px; - cursor: col-resize; - z-index: 15; - margin-left: -20px; -} - -.vertical div.jx-handle { - height: 40px; - width: 100%; - cursor: row-resize; - margin-top: -20px; - margin-left: 0; -} - -div.jx-control { - height: 100%; - margin-right: auto; - margin-left: auto; - width: 3px; - background-color: currentColor; -} - -.vertical div.jx-control { - height: 3px; - width: 100%; - background-color: currentColor; - position: relative; - top: 50%; - transform: translateY(-50%); -} - -div.jx-controller { - position: absolute; - margin: auto; - top: 0; - bottom: 0; - height: 60px; - width: 9px; - margin-left: -3px; - background-color: currentColor; -} - -.vertical div.jx-controller { - height: 9px; - width: 100px; - margin-left: auto; - margin-right: auto; - top: -3px; - position: relative; -} - -div.jx-arrow { - position: absolute; - margin: auto; - top: 0; - bottom: 0; - width: 0; - height: 0; - transition: all .2s ease; -} - -.vertical div.jx-arrow { - position: absolute; - margin: 0 auto; - left: 0; - right: 0; - width: 0; - height: 0; - transition: all .2s ease; -} - - -div.jx-arrow.jx-left { - left: 2px; - border-style: solid; - border-width: 8px 8px 8px 0; - border-color: transparent currentColor transparent transparent; -} - -div.jx-arrow.jx-right { - right: 2px; - border-style: solid; - border-width: 8px 0 8px 8px; - border-color: transparent transparent transparent currentColor; -} - -.vertical div.jx-arrow.jx-left { - left: 0px; - top: 2px; - border-style: solid; - border-width: 0px 8px 8px 8px; - border-color: transparent transparent currentColor transparent; -} - -.vertical div.jx-arrow.jx-right { - right: 0px; - top: auto; - bottom: 2px; - border-style: solid; - border-width: 8px 8px 0 8px; - border-color: currentColor transparent transparent transparent; -} - -div.jx-handle:hover div.jx-arrow.jx-left, -div.jx-handle:active div.jx-arrow.jx-left { - left: -1px; -} - -div.jx-handle:hover div.jx-arrow.jx-right, -div.jx-handle:active div.jx-arrow.jx-right { - right: -1px; -} - -.vertical div.jx-handle:hover div.jx-arrow.jx-left, -.vertical div.jx-handle:active div.jx-arrow.jx-left { - left: 0px; - top: 0px; -} - -.vertical div.jx-handle:hover div.jx-arrow.jx-right, -.vertical div.jx-handle:active div.jx-arrow.jx-right { - right: 0px; - bottom: 0px; -} - - -div.jx-image { - position: absolute; - height: 100%; - display: inline-block; - top: 0; - overflow: hidden; - -webkit-backface-visibility: hidden; -} - -.vertical div.jx-image { - width: 100%; - left: 0; - top: auto; -} - -div.jx-image img { - height: 100%; - width: auto; - z-index: 5; - position: absolute; - margin-bottom: 0; - - max-height: none; - max-width: none; - max-height: initial; - max-width: initial; -} - -.vertical div.jx-image img { - height: auto; - width: 100%; -} - -div.jx-image.jx-left { - left: 0; - background-position: left; -} - -div.jx-image.jx-left img { - left: 0; -} - -div.jx-image.jx-right { - right: 0; - background-position: right; -} - -div.jx-image.jx-right img { - right: 0; - bottom: 0; -} - - -.veritcal div.jx-image.jx-left { - top: 0; - background-position: top; -} - -.veritcal div.jx-image.jx-left img { - top: 0; -} - -.vertical div.jx-image.jx-right { - bottom: 0; - background-position: bottom; -} - -.veritcal div.jx-image.jx-right img { - bottom: 0; -} - - -div.jx-image div.jx-label { - font-size: 1em; - padding: .25em .75em; - position: relative; - display: inline-block; - top: 0; - background-color: #000; /* IE 8 */ - background-color: rgba(0,0,0,.7); - color: white; - z-index: 10; - white-space: nowrap; - line-height: 18px; - vertical-align: middle; -} - -div.jx-image.jx-left div.jx-label { - float: left; - left: 0; -} - -div.jx-image.jx-right div.jx-label { - float: right; - right: 0; -} - -.vertical div.jx-image div.jx-label { - display: table; - position: absolute; -} - -.vertical div.jx-image.jx-right div.jx-label { - left: 0; - bottom: 0; - top: auto; -} - -div.jx-credit { - line-height: 1.1; - font-size: 0.75em; -} - -div.jx-credit em { - font-weight: bold; - font-style: normal; -} - - -/* Animation */ - -div.jx-image.transition { - transition: width .5s ease; -} - -div.jx-handle.transition { - transition: left .5s ease; -} - -.vertical div.jx-image.transition { - transition: height .5s ease; -} - -.vertical div.jx-handle.transition { - transition: top .5s ease; -} - -/* Knight Lab Credit */ -a.jx-knightlab { - background-color: #000; /* IE 8 */ - background-color: rgba(0,0,0,.25); - bottom: 0; - display: table; - height: 14px; - line-height: 14px; - padding: 1px 4px 1px 5px; - position: absolute; - right: 0; - text-decoration: none; - z-index: 10; -} - -a.jx-knightlab div.knightlab-logo { - display: inline-block; - vertical-align: middle; - height: 8px; - width: 8px; - background-color: #c34528; - transform: rotate(45deg); - -ms-transform: rotate(45deg); - -webkit-transform: rotate(45deg); - top: -1.25px; - position: relative; - cursor: pointer; -} - -a.jx-knightlab:hover { - background-color: #000; /* IE 8 */ - background-color: rgba(0,0,0,.35); -} -a.jx-knightlab:hover div.knightlab-logo { - background-color: #ce4d28; -} - -a.jx-knightlab span.juxtapose-name { - display: table-cell; - margin: 0; - padding: 0; - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - color: white; - font-size: 10px; - padding-left: 0.375em; - vertical-align: middle; - line-height: normal; - text-shadow: none; -} - -/* keyboard accessibility */ -div.jx-controller:focus, -div.jx-image.jx-left div.jx-label:focus, -div.jx-image.jx-right div.jx-label:focus, -a.jx-knightlab:focus { - background: #eae34a; - color: #000; -} -a.jx-knightlab:focus span.juxtapose-name{ - color: #000; - border: none; -} diff --git a/iv/css/logo/ff_iv.png b/iv/css/logo/ff_iv.png deleted file mode 100644 index 13b3190..0000000 Binary files a/iv/css/logo/ff_iv.png and /dev/null differ diff --git a/iv/css/logo/ff_iv.svg b/iv/css/logo/ff_iv.svg deleted file mode 100644 index b430a85..0000000 --- a/iv/css/logo/ff_iv.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iv/css/logo/ff_iv.webp b/iv/css/logo/ff_iv.webp deleted file mode 100644 index 568eaa6..0000000 Binary files a/iv/css/logo/ff_iv.webp and /dev/null differ diff --git a/iv/css/logo/ff_iv_outline.svg b/iv/css/logo/ff_iv_outline.svg deleted file mode 100644 index e8e68af..0000000 --- a/iv/css/logo/ff_iv_outline.svg +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iv/css/logo/ff_mp3.png b/iv/css/logo/ff_mp3.png deleted file mode 100644 index ae45326..0000000 Binary files a/iv/css/logo/ff_mp3.png and /dev/null differ diff --git a/iv/css/logo/ff_mp3.svg b/iv/css/logo/ff_mp3.svg deleted file mode 100644 index bcc59cc..0000000 --- a/iv/css/logo/ff_mp3.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iv/css/logo/ff_mp3.webp b/iv/css/logo/ff_mp3.webp deleted file mode 100644 index bcc309c..0000000 Binary files a/iv/css/logo/ff_mp3.webp and /dev/null differ diff --git a/iv/css/logo/ff_mp3_outline.svg b/iv/css/logo/ff_mp3_outline.svg deleted file mode 100644 index 161b28a..0000000 --- a/iv/css/logo/ff_mp3_outline.svg +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iv/css/logo/fusionfix_emblem.png b/iv/css/logo/fusionfix_emblem.png deleted file mode 100644 index 6b5ca05..0000000 Binary files a/iv/css/logo/fusionfix_emblem.png and /dev/null differ diff --git a/iv/css/logo/fusionfix_emblem.svg b/iv/css/logo/fusionfix_emblem.svg deleted file mode 100644 index 40757e4..0000000 --- a/iv/css/logo/fusionfix_emblem.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/iv/css/logo/fusionfix_emblem.webp b/iv/css/logo/fusionfix_emblem.webp deleted file mode 100644 index 3d80d80..0000000 Binary files a/iv/css/logo/fusionfix_emblem.webp and /dev/null differ diff --git a/iv/css/logo/fusionfix_logo.svg b/iv/css/logo/fusionfix_logo.svg deleted file mode 100644 index 47c263f..0000000 --- a/iv/css/logo/fusionfix_logo.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/iv/css/logo/fusionfix_logo_2ln.svg b/iv/css/logo/fusionfix_logo_2ln.svg deleted file mode 100644 index bd0adb0..0000000 --- a/iv/css/logo/fusionfix_logo_2ln.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - diff --git a/iv/css/logo/fusionfix_newlogo3.png b/iv/css/logo/fusionfix_newlogo3.png deleted file mode 100644 index 60ab003..0000000 Binary files a/iv/css/logo/fusionfix_newlogo3.png and /dev/null differ diff --git a/iv/css/logo/fusionfix_newlogo3.webp b/iv/css/logo/fusionfix_newlogo3.webp deleted file mode 100644 index 5ef98c4..0000000 Binary files a/iv/css/logo/fusionfix_newlogo3.webp and /dev/null differ diff --git a/iv/css/media.css b/iv/css/media.css deleted file mode 100644 index 12a4d54..0000000 --- a/iv/css/media.css +++ /dev/null @@ -1,211 +0,0 @@ -@media (max-width: 1700px) { - - .block_text h2 { - font-size: 6.5rem; - } - -} - -@media (max-width: 1400px) { - - .block_text h2 { - font-size: 5.5rem; - } - - .block_text h3 { - font-size: 2rem; - margin-bottom: 80px; - } - - .image-comparison-wrapper .comparison-container { - height: 540px; - } - - #sidebar { - width: 68%; - } - -} - -@media (max-width: 1100px) { - - .block_image.image_1 { - height: 400px; - margin-bottom: 100px; - } - - .block_text.container_text_block .images .image_3 { - height: 300px; - margin-top: 820px; - } - - .block_text.container_text_block .image_1 { - height: 300px; - margin-top: 100px; - } - - .hero-2-container h3 { - font-size: 3.5rem; - margin-bottom: 36px; - } - -} - -@media (max-width: 900px) { - - .block_text.container_text_block .images .image_5 { - height: auto; - top: 0px; - left: 0px; - position: relative; - width: 100%; - } - - .block_text.container_text_block .image_7 { - height: auto; - position: relative; - width: 100%; - top: 0px; - left: 0px; - } - - .block_text.container_text_block .image_6 { - height: auto; - margin-top: 20px; - margin-bottom: 20px; - } - - .block_full_margin_1 { - margin-bottom: 50px; - } - - .container { - overflow: hidden; - } - - body { - padding: 8px; - } - - .character-text { - max-width: 100%; - } - - .hero-2-container p { - max-width: 100%; - font-size: 22px; - } - - .hero-2-container h3 { - font-size: 40px; - margin-bottom: 40px; - } - - .block_image.image_1 { - height: 280px; - margin-bottom: 40px; - } - - .block_text h2 { - font-size: 40px; - letter-spacing: -3px; - margin-bottom: 40px; - } - - .block_text h3 { - font-size: 26px; - margin-bottom: 40px; - } - - .block_text.container_text_block .images { - max-width: 100%; - margin-bottom: 20px; - } - - .block_text.container_text_block .images .image_2, - .block_text.container_text_block .images .image_3 { - height: 300px; - position: relative; - margin-top: 0px; - } - - .block_text.container_text_block .image_1 { - margin-bottom: 20px; - } - - .character-section.character_style_2 .images .image_2 { - width: 100%; - margin-bottom: 20px; - left: 0px; - margin-top: 20px; - } - - .character-section.character_style_2 { - flex-flow: wrap-reverse; - } - - .image-comparison-wrapper .comparison-container { - height: 237px; - } - - #sidebar { - width: 100%; - padding: 20px; - padding-top: 59px; - box-sizing: border-box; - } - - #sidebar .tab-list { - display: block; - } - - .hamburger { - top: 4%; - } - - #sidebar a { - font-size: 19px; - line-height: 24px; - } - - #sidebar .tab-list li span { - padding: 12px 20px; - } - - #sidebar .tab-list { - margin-bottom: 20px; - } - - .image-comparison-wrapper { - margin-top: 20px; - } - - .block_text.container_text_block .images .image_8 { - margin-top: 20px; - height: 189px; - } - - #sidebar li { - margin-bottom: 0px; - } - - .comparison-full-image .arrow_modal { - display: none; - } - - .hero-main-logo { - display: none; - width: 100%; - height: auto; - top: 14%; - left: 0px; - right: 0px; - margin-left: auto; - margin-right: auto; - } - - .hero-main-logo_mobile { - display: block; - } - -} \ No newline at end of file diff --git a/iv/css/normalize.css b/iv/css/normalize.css deleted file mode 100644 index efc3f2d..0000000 --- a/iv/css/normalize.css +++ /dev/null @@ -1,194 +0,0 @@ -body { - margin: 0px; - padding: 0px; -} - -img { - width: auto; - height: auto; - max-width: 100%; -} - -ul, li, p { - padding: 0px; - margin: 0px; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover, a:focus, a:active { - text-decoration: none; -} - -button, -button:hover, -button:focus, -button:active { - outline: 0; - border: 0; -} - -input, -input:hover, -input:focus, -input:active { - outline: 0; - border: 0; - box-sizing: border-box; -} - -textarea, -textarea:hover, -textarea:focus, -textarea:active, -textarea:focus-visible { - outline: 0; - border: 0; - box-sizing: border-box; -} - -code, -kbd, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -img { - border-style: none; -} - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - font-size: 100%; - line-height: 1.15; - margin: 0; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; /* 3 */ - white-space: normal; -} - -progress { - vertical-align: baseline; -} - -textarea { - overflow: auto; -} - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; - padding: 0; -} - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -details { - display: block; -} - -summary { - display: list-item; -} - -template { - display: none; -} - -[hidden] { - display: none; -} - -button, input { - width: 100%; -} \ No newline at end of file diff --git a/iv/css/style.css b/iv/css/style.css deleted file mode 100644 index 8b0a35e..0000000 --- a/iv/css/style.css +++ /dev/null @@ -1,1173 +0,0 @@ -* { - padding: 0; - margin: 0; - box-sizing: border-box; - font-family: Arial, Helvetica, sans-serif; -} - -html { - scroll-behavior: auto; -} - -a { - color: #fff9cb; -} - -section { - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - position: relative; - overflow: hidden; -} - -.bg-image { - background-size: cover; - background-position: center; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; - transform: scale(1.1); - transition: transform 0.1s ease; -} - -.content_lenny { - opacity: 0; - transform: translateY(50px); - transition: opacity 0.5s ease, transform 0.5s ease; -} - -.content_lenny.visible { - opacity: 1; - transform: translateY(0); -} - -.sticky { - position: sticky; - top: 0; -} - -body { - width: 100vw; - min-height: 100svh; - overflow-x: hidden; - overflow: hidden; - background: linear-gradient(223.17deg, - rgb(28, 24, 41) 0%, - rgb(27, 24, 40) 8.61%, - rgb(25, 23, 36) 17.21%, - rgb(22, 21, 32) 25.82%, - rgb(20, 19, 28) 34.42%, - rgb(18, 18, 24) 43.03%, - rgb(17, 17, 23) 51.63%); - padding-bottom: 20px; - box-sizing: border-box; -} - -/* Firefox */ -* { - scrollbar-width: thin; - scrollbar-color: gray #111; -} - -/* WebKit (Chrome, Edge, Safari) */ -*::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -*::-webkit-scrollbar-track { - background: #111; -} - -*::-webkit-scrollbar-thumb { - background-color: gray; - border-radius: 4px; - border: 2px solid #111; -} - - -.container { - min-height: 100svh; - position: relative; -} - -.overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: black; - z-index: 1; - pointer-events: none; -} - -.hero-main-container { - width: 100%; - height: 100vh; - position: relative; - transform: scale(1.25); - background-image: url("./logo/ff_iv.svg"); - background-size: 1000vh; - background-position: 50% 41.7%; - background-repeat: no-repeat; - background-origin: content-box; - padding-bottom: 200px; -} - -.hero-main-image { - width: 100%; - height: 100vh; - /* transform: scale(1.25); */ - position: absolute; - inset: 0; - object-fit: cover; -} - -.hero-main-logo { - width: 100%; - height: 100vh; - position: absolute; - inset: 0; - z-index: 1; - object-fit: cover; -} - -.hero-text-logo-container { - width: 100%; - height: 100vh; - position: absolute; - inset: 0; - z-index: 10; - object-fit: cover; - background-color: transparent; - display: flex; - flex-direction: column; - gap: 4rem; - justify-content: center; - align-items: center; -} - -.hero-text-logo { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - padding-bottom: 200px; - height: 100vh; - position: absolute; - inset: 0; -} - -/* Scroll Indicator Styles */ -.scroll-indicator { - position: absolute; - bottom: 10%; - left: 50%; - transform: translateX(-50%); - width: 34px; - height: 14px; - z-index: 10; -} - -.scroll-indicator svg { - color: #ffb0c4; - width: 100%; - height: 100%; -} - -.hero-text { - color: #ffb0c4; - text-align: center; - text-transform: uppercase; - background-image: radial-gradient(circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh); - -webkit-text-fill-color: transparent; - font-size: 4.5rem; - background-clip: text; - width: 100%; - line-height: 0.9; - margin-top: 30%; - display: block; - z-index: 10; - position: relative; -} - -.hero-text:hover { - opacity: 0.8; -} - -.hero-text_2 { - position: absolute; - display: block; - left: 0; - right: 0; - color: #ffb0c4; - text-align: center; - text-transform: uppercase; - background-image: radial-gradient(circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh); - -webkit-text-fill-color: transparent; - font-size: 2.5rem; - background-clip: text; - width: 100%; - line-height: 0.9; - margin-top: 9%; -} - -.hero-2-container { - width: 100%; - height: 100vh; - position: absolute; - inset: 0; - /* z-index: -1; */ - opacity: 0; - object-fit: cover; - background-image: radial-gradient(circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh); - -webkit-text-fill-color: transparent; - font-size: 6rem; - background-clip: text; - display: flex; - flex-direction: column; - gap: 2rem; - justify-content: center; - align-items: flex-start; - text-align: left; - padding: 0 2rem; - /* mobile */ - visibility: hidden; -} - -.container_hero-2 { - width: 100%; - max-width: 1200px; - margin: auto; -} - -.hero-2-container p { - max-width: 90%; - font-size: 2rem; -} - -.hero-2-container h3 { - font-size: 4.5rem; -} - -.hero-2-container h4 { - font-size: 4.0rem; -} - -.block_text p { - text-align: justify; -} - -.block_text.container_text_block { - width: 100%; - max-width: 1200px; - margin: auto; - margin-top: 50px; - margin-bottom: 50px; - padding: 10px; - box-sizing: border-box; -} - -.block_text h2 { - font-size: 7.5rem; - line-height: 112%; - letter-spacing: -10px; - color: #ffeb90; - margin-bottom: 80px; - text-transform: uppercase; -} - -.block_text h3 { - font-size: 3rem; - line-height: 120%; - color: #ff1582; - margin-bottom: 80px; -} - -.block_text h4 { - font-size: 2rem; - line-height: 120%; - color: #ff1582; - margin-bottom: 80px; -} - -.block_text p { - font-size: 1.4rem; - font-weight: 600; - color: #ffffff; - line-height: 1.5; -} - -.character-section { - display: flex; - flex-flow: wrap; - justify-content: space-between; -} - -.character-section .image a { - position: relative; -} - -.comparison-full-image { - position: relative; -} - -.character-section .image_plus, -.comparison-full-image .arrow_modal { - position: absolute; - color: #fff9cb; - background: #36364e; - border-radius: 100%; - left: 30px; - bottom: 30px; - display: flex; - align-items: center; - width: 60px; - height: 60px; - transition: transform 0.1s ease; - /* Smooth transform for Lenis */ -} - -.comparison-full-image .arrow_modal { - cursor: pointer; - z-index: 10; -} - -.comparison-full-image .arrow_modal:after { - display: block; - content: ''; - background-image: url('../img/arrow.svg'); - background-repeat: no-repeat; - background-size: contain; - width: 24px; - height: 24px; - margin: auto; -} - -.character-section .image:hover .image_plus, -.comparison-full-image:hover .arrow_modal { - color: #36364e; - background: #fff9cb; -} - -.comparison-full-image:hover .arrow_modal:after { - background-image: url('../img/arrow_hover.svg'); -} - -.character-section .image_plus svg { - margin: auto; - width: 30px; - height: auto; -} - -.character-text { - width: 100%; - max-width: 50%; -} - -.character-section_full { - position: relative; -} - -.block_image { - position: relative; -} - -.block_image.image_1 { - height: 800px; - margin-bottom: 200px; -} - -.block_image.image_2 { - height: 800px; - margin-bottom: 200px; - margin-top: 200px; -} - -.block_text.container_text_block .image { - position: relative; - width: 100%; - border-width: 0; - border-color: #fff9cb00; - box-sizing: border-box; - border-style: solid; - transition: 0.4s ease; -} - -.block_text.container_text_block .image:hover { - outline: none; - border-width: .5vw; - border-color: #fff9cb; -} - -.block_text.container_text_block .image_1 { - height: 900px; - margin-top: 100px; -} - -.block_text.container_text_block .images .image_2 { - height: 100vh; - position: absolute; - width: 100%; -} - -.block_text.container_text_block .images .image_3 { - height: 600px; - margin-top: 1020px; -} - -.block_text.container_text_block .images .image_5 { - height: 600px; - top: 840px; - left: 20px; - position: absolute; - width: 48%; - margin-top: 5em; -} - -.block_text.container_text_block .image_6 { - height: auto; - margin-top: 20px; - margin-bottom: 300px; -} - -.block_text.container_text_block .image_7 { - height: auto; - position: absolute; - width: 48%; - top: 1036px; - left: 20px; -} - -.block_text.container_text_block .images .image_8 { - height: 400px; - margin-top: 1020px; -} - -.block_text.container_text_block .images { - width: 100%; - max-width: 47%; -} - -.block_text.container_text_block .images4 { - width: 100%; - max-width: 47%; - position: relative; -} - -.block_text.container_text_block .images4 .image_2 { - height: 100vh; - position: absolute; - width: 100%; - left: 0; - top: 0; - box-sizing: border-box; - margin-bottom: 10px; -} - -.block_text.container_text_block .images10 { - width: 100%; - max-width: 47%; -} - -.block_text.container_text_block .images10 .image_2 { - height: 100vh; - position: absolute; - width: 77%; - top: 0; - box-sizing: border-box; - margin-bottom: 10px; - right: auto; -} - -.block_text.container_text_block img { - object-position: 80% center; - object-fit: cover; - height: 100%; - transition: 0.4s ease; -} - -.character-section.character_style_2 {} - -.character-section.character_style_2 .images .image_2 { - width: 48%; - left: 20px; -} - - - -#sidebar .tabs { - display: flex; - flex-direction: column; -} - -#sidebar .tab-list { - list-style: none; - padding: 0; - margin: 0; - display: flex; - margin-bottom: 50px; -} - -#sidebar .tab-list li { - margin: 0; -} - -#sidebar .tab-list li span { - display: block; - padding: 22px 25px; - text-decoration: none; - color: #ffffff; - border-radius: 53px; - font-size: 19px; - line-height: 19px; - font-weight: 600; - cursor: pointer; -} - -#sidebar .tab-list li span:hover { - color: #fff9cb; -} - -#sidebar .tab-list li.active span { - background-color: #ffffff; - color: #13131a; -} - -#sidebar .tab-content {} - -#sidebar .tab-pane { - display: none; -} - -#sidebar .tab-pane.active { - display: block; -} - -#sidebar .tab-pane ul { - list-style: none; - padding: 0; - margin: 0; -} - -#sidebar .tab-pane ul li span { - display: block; - padding: 5px 0; - text-decoration: none; - color: #0066cc; -} - -#sidebar .tab-pane ul li span:hover { - text-decoration: underline; -} - -#sidebar { - position: fixed; - top: 0; - right: 0; - height: 100%; - width: 50%; - background-color: #13131a; - box-shadow: 2px 0 5px rgba(0, 0, 0, 0.2); - transform: translateX(100%); - transition: transform 0.3s ease-in-out; - z-index: 40; - padding-top: 60px; - padding-left: 80px; - padding-right: 120px; - padding-bottom: 60px; - box-sizing: border-box; -} - -/* Открытый сайдбар */ -#sidebar.open { - transform: translateX(0); -} - -#sidebar .menu-content { - padding: 50px; - padding-right: 100px; -} - -#sidebar h2 { - font-size: 24px; - color: #333; - margin-bottom: 20px; -} - -#sidebar ul { - list-style: none; - padding: 0; - margin: 0; -} - -#sidebar li { - margin-bottom: 10px; - display: flex; - flex-flow: column; - height: 100%; -} - -#sidebar a { - display: block; - color: #ffffff; - text-decoration: none; - border-radius: 5px; - transition: background-color 0.2s; - font-size: 2em; - line-height: 0.64em; - text-transform: uppercase; - font-weight: 600; -} - -#sidebar a:hover { - color: #fff9cb; -} - -.hamburger { - position: fixed; - top: 7%; - right: 3%; - left: auto; - z-index: 100; - background: none; - border: none; - cursor: pointer; - padding: 10px; - width: auto; - max-width: max-content; -} - -.hamburger span { - display: block; - width: 33px; - height: 7px; - background-color: #ffffff; - margin-bottom: 7px; - transition: all 0.3s ease-in-out; -} - -.hamburger:hover span { - background-color: #fff9cb; -} - -.hamburger.open span { - width: 19px; - height: 3px; -} - -.hamburger.open span:nth-child(1) { - transform: rotate(49deg) translate(3px, 5px); -} - -.hamburger.open span:nth-child(2) { - transform: rotate(-48deg) translate(2px, -5px); -} - -.image-comparison-wrapper { - all: initial; - /* Сбрасываем стили, чтобы минимизировать влияние внешних стилей */ - display: block; - font-family: sans-serif; -} - -.image-comparison-wrapper .comparison-container { - position: relative; - width: 100%; - height: 800px; - margin: 0 auto; - overflow: hidden; - isolation: isolate; -} - -.image-comparison-wrapper .comparison-image { - position: absolute; - inset: 0; - width: 100%; - height: auto; - user-select: none; - transition: unset !important; -} - -.image-comparison-wrapper .comparison-image-overlay { - position: relative; - clip-path: inset(0 50% 0 0); -} - -.image-comparison-wrapper .comparison-image-overlay:after { - display: block; - content: ''; - position: absolute; - width: 100%; - height: 100%; - background-color: darkred; -} - -.image-comparison-wrapper .comparison-slider { - position: absolute; - top: 50%; - left: 0px; - width: 100%; - transform: translateY(-50%); - appearance: none; - height: 10px; - outline: none; - cursor: pointer; - z-index: 10; - background-color: #ffffff00; -} - -.image-comparison-wrapper .comparison-slider::-webkit-slider-thumb { - appearance: none; - width: 20px; - height: 20px; - background: #ffffff00; - border-radius: 50%; - cursor: pointer; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); - opacity: 0; -} - -.image-comparison-wrapper .comparison-slider::-moz-range-thumb { - width: 20px; - height: 20px; - background: #ffffff00; - border-radius: 50%; - cursor: pointer; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); - opacity: 0; -} - -.image-comparison-wrapper .comparison-slider::-ms-thumb { - width: 20px; - height: 20px; - background: #ffffff00; - border-radius: 50%; - cursor: pointer; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); - opacity: 1; -} - -.comparison-divider { - position: absolute; - background: #000000; - z-index: 1; - transition: top 0.1s ease; - display: block; - width: 2px; - height: 100%; - top: 0px; -} - -.comparison-handle { - position: absolute; - width: 16px; - height: 16px; - background: #2ecc71; - border-radius: 50%; - cursor: pointer; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); - top: 49%; - left: 0px; - right: auto; - padding: 10px; - z-index: 2; -} - -.copyright { - display: block; - text-align: center; - margin-top: 50px; - color: #000000; -} - -.copyright a { - text-decoration: none; - color: #000000; -} - -.block_full_margin_1 { - margin-bottom: 450px; -} - -.title_style_1 h2 { - font-size: 5.5rem; -} - -.image_comparison_block .block_text.container_text_block img { - transition: unset; -} - -.image_comparison_block .image-comparison-wrapper .comparison-image { - transition: unset; -} - -.block_text.container_text_block .images .image_4 { - margin-top: 100px; -} - -div.jx-controller { - display: none; - position: absolute; - margin: auto; - top: 0; - bottom: 0; - height: 14px; - width: 14px; - margin-left: -6px; - background-color: #2ecc71; - border-radius: 10px; -} - -div.jx-arrow { - display: none !important; -} - -div.jx-control { - background-color: rgb(0 0 0); -} - -a.jx-knightlab { - display: none !important; -} - - -.modal { - display: none; - visibility: hidden; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.8); - z-index: 1000; - transition: opacity 0.8s ease; -} - - -.modal.active_modal { - display: block; - visibility: visible; -} - - - -.modal.active_modal .modal-content { - position: relative; - max-width: max-content; - text-align: center; - margin: 3% auto; - border-radius: 4px; - background-color: #000; - padding: 4px; -} - -.modal.active_modal .modal-image { - max-width: 100%; - max-height: 80vh; - display: block; - /* Показываем изображение */ -} - -.modal.active_modal .modal-close { - display: none; - position: absolute; - top: -20px; - right: -20px; - font-size: 24px; - color: white; - cursor: pointer; -} - -.modal.active_modal .modal-prev, -.modal.active_modal .modal-next { - position: absolute; - top: 50%; - transform: translateY(-50%); - cursor: pointer; - display: block; - width: 50px; - height: 45px; - opacity: 0; - -webkit-transition: opacity .6s; - -moz-transition: opacity .6s; - -o-transition: opacity .6s; - transition: opacity .6s; -} - -.modal.active_modal .modal-content .modal-prev:hover, -.modal.active_modal .modal-content .modal-next:hover { - opacity: 1; -} - -.modal.active_modal .modal-prev { - left: 10px; - background-image: url(../lightbox/images/prev.png); -} - -.modal.active_modal .modal-next { - right: 10px; - background-image: url(../lightbox/images/next.png); -} - -.lb-data { - display: none; -} - -.hero-main-logo_mobile { - display: none; -} - -@media (max-width: 768px) { - .hero-text { - font-size: 2.5rem; - margin-top: 20%; - } - - .hero-text_2 { - font-size: 1.5rem; - margin-top: 5%; - } - - .hero-main-container { - /* Allow GSAP animations to control scale and background-size on mobile */ - position: relative; - } - - .hero-main-logo_mobile { - display: block !important; - /* Show mobile logo */ - } - - .hero-main-logo { - display: none; - } - - .character-section { - flex-direction: column; - align-items: center; - } - - .character-text { - max-width: 100%; - text-align: center; - } - - .images, - .images4, - .images10 { - max-width: 100%; - margin-top: 20px; - } - - .block_image { - height: 50vh; - } - - .block_text h2 { - font-size: 4rem; - letter-spacing: -5px; - } - - .block_text h3, - .block_text h4 { - font-size: 1.8rem; - } - - .block_text p { - font-size: 1.2rem; - } - - #sidebar { - width: 100%; - padding: 20px; - } - - .hamburger { - top: 5%; - right: 5%; - } - - .image-comparison-wrapper .comparison-container { - height: auto !important; - /* Dynamic height on mobile */ - } - - .modal-content { - max-width: 90vw; - max-height: 90vh; - padding: 10px; - } - - .modal-image { - max-height: 70vh; - } - - .scroll-indicator { - bottom: 5%; - width: 50px; - } - - /* Video optimizations */ - video { - width: 100%; - height: auto; - } -} - -/* Tablet (768-1024px) */ -@media (min-width: 769px) and (max-width: 1024px) { - .hero-text { - font-size: 3.5rem; - } - - .block_text h2 { - font-size: 5.5rem; - } - - /* Adjust other elements similarly */ -} - -/* General optimizations */ -.bg-image { - background-attachment: fixed; - /* Parallax only on desktop */ - transition: transform 0.3s ease; - /* Smoother */ -} - -@media (max-width: 768px) { - .bg-image { - background-attachment: scroll; - /* No fixed on mobile for perf */ - } -} - -/* Modal styles (refactored) */ -.modal { - transition: opacity 0.5s ease; -} - -.modal.active_modal { - opacity: 1; -} - -.modal-content { - transform: scale(0.95); - transition: transform 0.3s ease; -} - -.modal.active_modal .modal-content { - transform: scale(1); -} - -/* Swipe for modals on mobile */ -.modal { - touch-action: pan-y; - /* Allow vertical scroll */ -} - -/* Disable user selection on modal images and content */ -.modal img, -.modal .modal-content, -.modal .modal-image { - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; -} - -/* Disable tap highlight on mobile/touch devices */ -.modal .modal-prev, -.modal .modal-next, -.modal .modal-close, -.modal img { - -webkit-tap-highlight-color: transparent; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.modal .modal-prev:focus, -.modal .modal-next:focus, -.modal .modal-close:focus { - outline: none; -} - -@media (max-width: 768px) { - #definition .character-section.character_style_2 { - display: flex !important; - flex-direction: column !important; - } - - #definition .character-section.character_style_2 .character-text { - order: 1 !important; - /* H2 first */ - } - - #definition .character-section.character_style_2 .images { - order: 2 !important; - /* Images second */ - } - - #definition .character-section.character_style_2>div:last-child { - order: 3 !important; - /* Text and content last */ - } -} - -@media (min-width: 769px) { - #colorcorrection h2 { - font-size: 6.5rem; - } -} - -@media (max-width: 768px) { - #turnindicators .character-section.character_style_2 { - display: flex !important; - flex-direction: column !important; - } - - #turnindicators .character-section.character_style_2 .character-text { - order: 1 !important; - /* Text/H2 first */ - } - - #turnindicators .character-section.character_style_2>div:last-child { - order: 2 !important; - /* Next video/content second (after text) */ - } - - #turnindicators .character-section.character_style_2 .images { - order: 3 !important; - /* First video/images last */ - } -} - -@media (max-width: 768px) { - .character-text { - margin-top: 5em; - } -} \ No newline at end of file diff --git a/iv/img/0zfighting/1z_fightingcomparison.webm b/iv/img/0zfighting/1z_fightingcomparison.webm deleted file mode 100644 index 159f2c4..0000000 Binary files a/iv/img/0zfighting/1z_fightingcomparison.webm and /dev/null differ diff --git a/iv/img/10neonlights/1after.png b/iv/img/10neonlights/1after.png deleted file mode 100644 index e34b907..0000000 Binary files a/iv/img/10neonlights/1after.png and /dev/null differ diff --git a/iv/img/10neonlights/1after.webp b/iv/img/10neonlights/1after.webp deleted file mode 100644 index e8a22a4..0000000 Binary files a/iv/img/10neonlights/1after.webp and /dev/null differ diff --git a/iv/img/10neonlights/1after_preview.webp b/iv/img/10neonlights/1after_preview.webp deleted file mode 100644 index d7fbae6..0000000 Binary files a/iv/img/10neonlights/1after_preview.webp and /dev/null differ diff --git a/iv/img/10neonlights/1before.png b/iv/img/10neonlights/1before.png deleted file mode 100644 index ce1dffa..0000000 Binary files a/iv/img/10neonlights/1before.png and /dev/null differ diff --git a/iv/img/10neonlights/1before.webp b/iv/img/10neonlights/1before.webp deleted file mode 100644 index 28ab2a9..0000000 Binary files a/iv/img/10neonlights/1before.webp and /dev/null differ diff --git a/iv/img/10neonlights/1before_preview.webp b/iv/img/10neonlights/1before_preview.webp deleted file mode 100644 index 0e9a366..0000000 Binary files a/iv/img/10neonlights/1before_preview.webp and /dev/null differ diff --git a/iv/img/10neonlights/2after.png b/iv/img/10neonlights/2after.png deleted file mode 100644 index c15641e..0000000 Binary files a/iv/img/10neonlights/2after.png and /dev/null differ diff --git a/iv/img/10neonlights/2after.webp b/iv/img/10neonlights/2after.webp deleted file mode 100644 index ae96596..0000000 Binary files a/iv/img/10neonlights/2after.webp and /dev/null differ diff --git a/iv/img/10neonlights/2after_preview.webp b/iv/img/10neonlights/2after_preview.webp deleted file mode 100644 index daf1d4d..0000000 Binary files a/iv/img/10neonlights/2after_preview.webp and /dev/null differ diff --git a/iv/img/10neonlights/2before.png b/iv/img/10neonlights/2before.png deleted file mode 100644 index 2caf7a0..0000000 Binary files a/iv/img/10neonlights/2before.png and /dev/null differ diff --git a/iv/img/10neonlights/2before.webp b/iv/img/10neonlights/2before.webp deleted file mode 100644 index 2d7cc65..0000000 Binary files a/iv/img/10neonlights/2before.webp and /dev/null differ diff --git a/iv/img/10neonlights/2before_preview.webp b/iv/img/10neonlights/2before_preview.webp deleted file mode 100644 index 1ae6316..0000000 Binary files a/iv/img/10neonlights/2before_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/1after.png b/iv/img/11shadows/1after.png deleted file mode 100644 index 6bbcfea..0000000 Binary files a/iv/img/11shadows/1after.png and /dev/null differ diff --git a/iv/img/11shadows/1after.webp b/iv/img/11shadows/1after.webp deleted file mode 100644 index 7adb48c..0000000 Binary files a/iv/img/11shadows/1after.webp and /dev/null differ diff --git a/iv/img/11shadows/1after_preview.webp b/iv/img/11shadows/1after_preview.webp deleted file mode 100644 index e720e5c..0000000 Binary files a/iv/img/11shadows/1after_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/1before.png b/iv/img/11shadows/1before.png deleted file mode 100644 index e8324fa..0000000 Binary files a/iv/img/11shadows/1before.png and /dev/null differ diff --git a/iv/img/11shadows/1before.webp b/iv/img/11shadows/1before.webp deleted file mode 100644 index 22ae79c..0000000 Binary files a/iv/img/11shadows/1before.webp and /dev/null differ diff --git a/iv/img/11shadows/1before_preview.webp b/iv/img/11shadows/1before_preview.webp deleted file mode 100644 index 3516a6a..0000000 Binary files a/iv/img/11shadows/1before_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/2after.png b/iv/img/11shadows/2after.png deleted file mode 100644 index 6e2b551..0000000 Binary files a/iv/img/11shadows/2after.png and /dev/null differ diff --git a/iv/img/11shadows/2after.webp b/iv/img/11shadows/2after.webp deleted file mode 100644 index b817777..0000000 Binary files a/iv/img/11shadows/2after.webp and /dev/null differ diff --git a/iv/img/11shadows/2after_preview.webp b/iv/img/11shadows/2after_preview.webp deleted file mode 100644 index 4e3c83b..0000000 Binary files a/iv/img/11shadows/2after_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/2before.png b/iv/img/11shadows/2before.png deleted file mode 100644 index 6f1bef7..0000000 Binary files a/iv/img/11shadows/2before.png and /dev/null differ diff --git a/iv/img/11shadows/2before.webp b/iv/img/11shadows/2before.webp deleted file mode 100644 index 6c8704f..0000000 Binary files a/iv/img/11shadows/2before.webp and /dev/null differ diff --git a/iv/img/11shadows/2before_preview.webp b/iv/img/11shadows/2before_preview.webp deleted file mode 100644 index f1fba0b..0000000 Binary files a/iv/img/11shadows/2before_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_contacthardeningshadows.png b/iv/img/11shadows/3fusionfix_contacthardeningshadows.png deleted file mode 100644 index 1fb2edb..0000000 Binary files a/iv/img/11shadows/3fusionfix_contacthardeningshadows.png and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_contacthardeningshadows.webp b/iv/img/11shadows/3fusionfix_contacthardeningshadows.webp deleted file mode 100644 index 8e44e4b..0000000 Binary files a/iv/img/11shadows/3fusionfix_contacthardeningshadows.webp and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_contacthardeningshadows_preview.webp b/iv/img/11shadows/3fusionfix_contacthardeningshadows_preview.webp deleted file mode 100644 index 33fd319..0000000 Binary files a/iv/img/11shadows/3fusionfix_contacthardeningshadows_preview.webp and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_sharpshadows.png b/iv/img/11shadows/3fusionfix_sharpshadows.png deleted file mode 100644 index 4c328fe..0000000 Binary files a/iv/img/11shadows/3fusionfix_sharpshadows.png and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_sharpshadows.webp b/iv/img/11shadows/3fusionfix_sharpshadows.webp deleted file mode 100644 index 3631263..0000000 Binary files a/iv/img/11shadows/3fusionfix_sharpshadows.webp and /dev/null differ diff --git a/iv/img/11shadows/3fusionfix_sharpshadows_preview.webp b/iv/img/11shadows/3fusionfix_sharpshadows_preview.webp deleted file mode 100644 index 53671dc..0000000 Binary files a/iv/img/11shadows/3fusionfix_sharpshadows_preview.webp and /dev/null differ diff --git a/iv/img/12rain/1after.png b/iv/img/12rain/1after.png deleted file mode 100644 index 4fdbe7f..0000000 Binary files a/iv/img/12rain/1after.png and /dev/null differ diff --git a/iv/img/12rain/1after.webp b/iv/img/12rain/1after.webp deleted file mode 100644 index ddd3ffd..0000000 Binary files a/iv/img/12rain/1after.webp and /dev/null differ diff --git a/iv/img/12rain/1after_preview.webp b/iv/img/12rain/1after_preview.webp deleted file mode 100644 index 5d42c07..0000000 Binary files a/iv/img/12rain/1after_preview.webp and /dev/null differ diff --git a/iv/img/12rain/1before.png b/iv/img/12rain/1before.png deleted file mode 100644 index 5ae3cdf..0000000 Binary files a/iv/img/12rain/1before.png and /dev/null differ diff --git a/iv/img/12rain/1before.webp b/iv/img/12rain/1before.webp deleted file mode 100644 index d93b276..0000000 Binary files a/iv/img/12rain/1before.webp and /dev/null differ diff --git a/iv/img/12rain/1before_preview.webp b/iv/img/12rain/1before_preview.webp deleted file mode 100644 index 861bb57..0000000 Binary files a/iv/img/12rain/1before_preview.webp and /dev/null differ diff --git a/iv/img/12rain/2after.png b/iv/img/12rain/2after.png deleted file mode 100644 index 1c2be3a..0000000 Binary files a/iv/img/12rain/2after.png and /dev/null differ diff --git a/iv/img/12rain/2after.webp b/iv/img/12rain/2after.webp deleted file mode 100644 index e0a4b15..0000000 Binary files a/iv/img/12rain/2after.webp and /dev/null differ diff --git a/iv/img/12rain/2after_preview.webp b/iv/img/12rain/2after_preview.webp deleted file mode 100644 index 68e69b6..0000000 Binary files a/iv/img/12rain/2after_preview.webp and /dev/null differ diff --git a/iv/img/12rain/2before.png b/iv/img/12rain/2before.png deleted file mode 100644 index 24d7c4b..0000000 Binary files a/iv/img/12rain/2before.png and /dev/null differ diff --git a/iv/img/12rain/2before.webp b/iv/img/12rain/2before.webp deleted file mode 100644 index 0bd8e94..0000000 Binary files a/iv/img/12rain/2before.webp and /dev/null differ diff --git a/iv/img/12rain/2before_preview.webp b/iv/img/12rain/2before_preview.webp deleted file mode 100644 index 9223929..0000000 Binary files a/iv/img/12rain/2before_preview.webp and /dev/null differ diff --git a/iv/img/12rain/3after.png b/iv/img/12rain/3after.png deleted file mode 100644 index 842e4c9..0000000 Binary files a/iv/img/12rain/3after.png and /dev/null differ diff --git a/iv/img/12rain/3after.webp b/iv/img/12rain/3after.webp deleted file mode 100644 index decc4a8..0000000 Binary files a/iv/img/12rain/3after.webp and /dev/null differ diff --git a/iv/img/12rain/3after_preview.webp b/iv/img/12rain/3after_preview.webp deleted file mode 100644 index 26b94f4..0000000 Binary files a/iv/img/12rain/3after_preview.webp and /dev/null differ diff --git a/iv/img/12rain/3before.png b/iv/img/12rain/3before.png deleted file mode 100644 index 72d3d9a..0000000 Binary files a/iv/img/12rain/3before.png and /dev/null differ diff --git a/iv/img/12rain/3before.webp b/iv/img/12rain/3before.webp deleted file mode 100644 index 41e9865..0000000 Binary files a/iv/img/12rain/3before.webp and /dev/null differ diff --git a/iv/img/12rain/3before_preview.webp b/iv/img/12rain/3before_preview.webp deleted file mode 100644 index f50dfe2..0000000 Binary files a/iv/img/12rain/3before_preview.webp and /dev/null differ diff --git a/iv/img/12rain/4raindroplets1.webm b/iv/img/12rain/4raindroplets1.webm deleted file mode 100644 index 95d344b..0000000 Binary files a/iv/img/12rain/4raindroplets1.webm and /dev/null differ diff --git a/iv/img/13water/1after.png b/iv/img/13water/1after.png deleted file mode 100644 index 9ee187e..0000000 Binary files a/iv/img/13water/1after.png and /dev/null differ diff --git a/iv/img/13water/1after.webp b/iv/img/13water/1after.webp deleted file mode 100644 index afca3f9..0000000 Binary files a/iv/img/13water/1after.webp and /dev/null differ diff --git a/iv/img/13water/1after_preview.webp b/iv/img/13water/1after_preview.webp deleted file mode 100644 index b4ac477..0000000 Binary files a/iv/img/13water/1after_preview.webp and /dev/null differ diff --git a/iv/img/13water/1before.png b/iv/img/13water/1before.png deleted file mode 100644 index 03a28d6..0000000 Binary files a/iv/img/13water/1before.png and /dev/null differ diff --git a/iv/img/13water/1before.webp b/iv/img/13water/1before.webp deleted file mode 100644 index 41e2017..0000000 Binary files a/iv/img/13water/1before.webp and /dev/null differ diff --git a/iv/img/13water/1before_preview.webp b/iv/img/13water/1before_preview.webp deleted file mode 100644 index 1c576da..0000000 Binary files a/iv/img/13water/1before_preview.webp and /dev/null differ diff --git a/iv/img/13water/2after.png b/iv/img/13water/2after.png deleted file mode 100644 index d5ff1a7..0000000 Binary files a/iv/img/13water/2after.png and /dev/null differ diff --git a/iv/img/13water/2after.webp b/iv/img/13water/2after.webp deleted file mode 100644 index 89d16bb..0000000 Binary files a/iv/img/13water/2after.webp and /dev/null differ diff --git a/iv/img/13water/2after_preview.webp b/iv/img/13water/2after_preview.webp deleted file mode 100644 index 23814ee..0000000 Binary files a/iv/img/13water/2after_preview.webp and /dev/null differ diff --git a/iv/img/13water/2before.png b/iv/img/13water/2before.png deleted file mode 100644 index df5ffd6..0000000 Binary files a/iv/img/13water/2before.png and /dev/null differ diff --git a/iv/img/13water/2before.webp b/iv/img/13water/2before.webp deleted file mode 100644 index 5ab3d3c..0000000 Binary files a/iv/img/13water/2before.webp and /dev/null differ diff --git a/iv/img/13water/2before_preview.webp b/iv/img/13water/2before_preview.webp deleted file mode 100644 index 6f7446e..0000000 Binary files a/iv/img/13water/2before_preview.webp and /dev/null differ diff --git a/iv/img/13water/3after.png b/iv/img/13water/3after.png deleted file mode 100644 index c986642..0000000 Binary files a/iv/img/13water/3after.png and /dev/null differ diff --git a/iv/img/13water/3after.webp b/iv/img/13water/3after.webp deleted file mode 100644 index 6554398..0000000 Binary files a/iv/img/13water/3after.webp and /dev/null differ diff --git a/iv/img/13water/3after_preview.webp b/iv/img/13water/3after_preview.webp deleted file mode 100644 index 7f49ce9..0000000 Binary files a/iv/img/13water/3after_preview.webp and /dev/null differ diff --git a/iv/img/13water/3before.png b/iv/img/13water/3before.png deleted file mode 100644 index 59f6011..0000000 Binary files a/iv/img/13water/3before.png and /dev/null differ diff --git a/iv/img/13water/3before.webp b/iv/img/13water/3before.webp deleted file mode 100644 index dc25d4d..0000000 Binary files a/iv/img/13water/3before.webp and /dev/null differ diff --git a/iv/img/13water/3before_preview.webp b/iv/img/13water/3before_preview.webp deleted file mode 100644 index 4b6b406..0000000 Binary files a/iv/img/13water/3before_preview.webp and /dev/null differ diff --git a/iv/img/13water/foam.mkv b/iv/img/13water/foam.mkv deleted file mode 100644 index 07d9e22..0000000 Binary files a/iv/img/13water/foam.mkv and /dev/null differ diff --git a/iv/img/13water/foam.webm b/iv/img/13water/foam.webm deleted file mode 100644 index 810f4bf..0000000 Binary files a/iv/img/13water/foam.webm and /dev/null differ diff --git a/iv/img/14reflections/1after.png b/iv/img/14reflections/1after.png deleted file mode 100644 index 4be73eb..0000000 Binary files a/iv/img/14reflections/1after.png and /dev/null differ diff --git a/iv/img/14reflections/1after.webp b/iv/img/14reflections/1after.webp deleted file mode 100644 index b5e2bb4..0000000 Binary files a/iv/img/14reflections/1after.webp and /dev/null differ diff --git a/iv/img/14reflections/1after_preview.webp b/iv/img/14reflections/1after_preview.webp deleted file mode 100644 index bd7f8d2..0000000 Binary files a/iv/img/14reflections/1after_preview.webp and /dev/null differ diff --git a/iv/img/14reflections/1before.png b/iv/img/14reflections/1before.png deleted file mode 100644 index 35647e2..0000000 Binary files a/iv/img/14reflections/1before.png and /dev/null differ diff --git a/iv/img/14reflections/1before.webp b/iv/img/14reflections/1before.webp deleted file mode 100644 index 6927aec..0000000 Binary files a/iv/img/14reflections/1before.webp and /dev/null differ diff --git a/iv/img/14reflections/1before_preview.webp b/iv/img/14reflections/1before_preview.webp deleted file mode 100644 index d434df4..0000000 Binary files a/iv/img/14reflections/1before_preview.webp and /dev/null differ diff --git a/iv/img/14reflections/2after.png b/iv/img/14reflections/2after.png deleted file mode 100644 index 2309983..0000000 Binary files a/iv/img/14reflections/2after.png and /dev/null differ diff --git a/iv/img/14reflections/2after.webp b/iv/img/14reflections/2after.webp deleted file mode 100644 index 8203560..0000000 Binary files a/iv/img/14reflections/2after.webp and /dev/null differ diff --git a/iv/img/14reflections/2after_preview.webp b/iv/img/14reflections/2after_preview.webp deleted file mode 100644 index af10c68..0000000 Binary files a/iv/img/14reflections/2after_preview.webp and /dev/null differ diff --git a/iv/img/14reflections/2before.png b/iv/img/14reflections/2before.png deleted file mode 100644 index 8ffd3ce..0000000 Binary files a/iv/img/14reflections/2before.png and /dev/null differ diff --git a/iv/img/14reflections/2before.webp b/iv/img/14reflections/2before.webp deleted file mode 100644 index 6c70da5..0000000 Binary files a/iv/img/14reflections/2before.webp and /dev/null differ diff --git a/iv/img/14reflections/2before_preview.webp b/iv/img/14reflections/2before_preview.webp deleted file mode 100644 index d320f9e..0000000 Binary files a/iv/img/14reflections/2before_preview.webp and /dev/null differ diff --git a/iv/img/14reflections/3after.png b/iv/img/14reflections/3after.png deleted file mode 100644 index 67760f1..0000000 Binary files a/iv/img/14reflections/3after.png and /dev/null differ diff --git a/iv/img/14reflections/3after.webp b/iv/img/14reflections/3after.webp deleted file mode 100644 index 1a3bb5d..0000000 Binary files a/iv/img/14reflections/3after.webp and /dev/null differ diff --git a/iv/img/14reflections/3after_preview.webp b/iv/img/14reflections/3after_preview.webp deleted file mode 100644 index f2dc6c1..0000000 Binary files a/iv/img/14reflections/3after_preview.webp and /dev/null differ diff --git a/iv/img/14reflections/3before.png b/iv/img/14reflections/3before.png deleted file mode 100644 index d169f91..0000000 Binary files a/iv/img/14reflections/3before.png and /dev/null differ diff --git a/iv/img/14reflections/3before.webp b/iv/img/14reflections/3before.webp deleted file mode 100644 index c38890f..0000000 Binary files a/iv/img/14reflections/3before.webp and /dev/null differ diff --git a/iv/img/14reflections/3before_preview.webp b/iv/img/14reflections/3before_preview.webp deleted file mode 100644 index 81e07f1..0000000 Binary files a/iv/img/14reflections/3before_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/1consolelighting.png b/iv/img/15treelighting/1consolelighting.png deleted file mode 100644 index 0f9fb31..0000000 Binary files a/iv/img/15treelighting/1consolelighting.png and /dev/null differ diff --git a/iv/img/15treelighting/1consolelighting.webp b/iv/img/15treelighting/1consolelighting.webp deleted file mode 100644 index 15e73c0..0000000 Binary files a/iv/img/15treelighting/1consolelighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/1consolelighting_preview.webp b/iv/img/15treelighting/1consolelighting_preview.webp deleted file mode 100644 index 1af8acc..0000000 Binary files a/iv/img/15treelighting/1consolelighting_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/1consolelightingsquare.png b/iv/img/15treelighting/1consolelightingsquare.png deleted file mode 100644 index 7935921..0000000 Binary files a/iv/img/15treelighting/1consolelightingsquare.png and /dev/null differ diff --git a/iv/img/15treelighting/1consolelightingsquare.webp b/iv/img/15treelighting/1consolelightingsquare.webp deleted file mode 100644 index 52b8d59..0000000 Binary files a/iv/img/15treelighting/1consolelightingsquare.webp and /dev/null differ diff --git a/iv/img/15treelighting/1consolelightingsquare_preview.webp b/iv/img/15treelighting/1consolelightingsquare_preview.webp deleted file mode 100644 index 2d83b97..0000000 Binary files a/iv/img/15treelighting/1consolelightingsquare_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/1pclighting.png b/iv/img/15treelighting/1pclighting.png deleted file mode 100644 index 28c3698..0000000 Binary files a/iv/img/15treelighting/1pclighting.png and /dev/null differ diff --git a/iv/img/15treelighting/1pclighting.webp b/iv/img/15treelighting/1pclighting.webp deleted file mode 100644 index 797f251..0000000 Binary files a/iv/img/15treelighting/1pclighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/1pclighting_preview.webp b/iv/img/15treelighting/1pclighting_preview.webp deleted file mode 100644 index 3d07ee7..0000000 Binary files a/iv/img/15treelighting/1pclighting_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/1pclightingsquare.png b/iv/img/15treelighting/1pclightingsquare.png deleted file mode 100644 index 43d3605..0000000 Binary files a/iv/img/15treelighting/1pclightingsquare.png and /dev/null differ diff --git a/iv/img/15treelighting/1pclightingsquare.webp b/iv/img/15treelighting/1pclightingsquare.webp deleted file mode 100644 index 71094a5..0000000 Binary files a/iv/img/15treelighting/1pclightingsquare.webp and /dev/null differ diff --git a/iv/img/15treelighting/1pclightingsquare_preview.webp b/iv/img/15treelighting/1pclightingsquare_preview.webp deleted file mode 100644 index caf3e7d..0000000 Binary files a/iv/img/15treelighting/1pclightingsquare_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/2consolelighting.png b/iv/img/15treelighting/2consolelighting.png deleted file mode 100644 index 4102640..0000000 Binary files a/iv/img/15treelighting/2consolelighting.png and /dev/null differ diff --git a/iv/img/15treelighting/2consolelighting.webp b/iv/img/15treelighting/2consolelighting.webp deleted file mode 100644 index e066fa8..0000000 Binary files a/iv/img/15treelighting/2consolelighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/2consolelighting_preview.webp b/iv/img/15treelighting/2consolelighting_preview.webp deleted file mode 100644 index 99c9e85..0000000 Binary files a/iv/img/15treelighting/2consolelighting_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/2pclighting.png b/iv/img/15treelighting/2pclighting.png deleted file mode 100644 index 41df17b..0000000 Binary files a/iv/img/15treelighting/2pclighting.png and /dev/null differ diff --git a/iv/img/15treelighting/2pclighting.webp b/iv/img/15treelighting/2pclighting.webp deleted file mode 100644 index 90124d2..0000000 Binary files a/iv/img/15treelighting/2pclighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/2pclighting_preview.webp b/iv/img/15treelighting/2pclighting_preview.webp deleted file mode 100644 index e791ec1..0000000 Binary files a/iv/img/15treelighting/2pclighting_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/3pclighting.png b/iv/img/15treelighting/3pclighting.png deleted file mode 100644 index 55f3db8..0000000 Binary files a/iv/img/15treelighting/3pclighting.png and /dev/null differ diff --git a/iv/img/15treelighting/3pclighting.webp b/iv/img/15treelighting/3pclighting.webp deleted file mode 100644 index 974e5f2..0000000 Binary files a/iv/img/15treelighting/3pclighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/3pclighting_preview.webp b/iv/img/15treelighting/3pclighting_preview.webp deleted file mode 100644 index 6013eb1..0000000 Binary files a/iv/img/15treelighting/3pclighting_preview.webp and /dev/null differ diff --git a/iv/img/15treelighting/3pcpluslighting.png b/iv/img/15treelighting/3pcpluslighting.png deleted file mode 100644 index 07f2031..0000000 Binary files a/iv/img/15treelighting/3pcpluslighting.png and /dev/null differ diff --git a/iv/img/15treelighting/3pcpluslighting.webp b/iv/img/15treelighting/3pcpluslighting.webp deleted file mode 100644 index 3ca245a..0000000 Binary files a/iv/img/15treelighting/3pcpluslighting.webp and /dev/null differ diff --git a/iv/img/15treelighting/3pcpluslighting_preview.webp b/iv/img/15treelighting/3pcpluslighting_preview.webp deleted file mode 100644 index 7fe492a..0000000 Binary files a/iv/img/15treelighting/3pcpluslighting_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/1after.png b/iv/img/16distantlights/1after.png deleted file mode 100644 index a302f24..0000000 Binary files a/iv/img/16distantlights/1after.png and /dev/null differ diff --git a/iv/img/16distantlights/1after.webp b/iv/img/16distantlights/1after.webp deleted file mode 100644 index 5f14685..0000000 Binary files a/iv/img/16distantlights/1after.webp and /dev/null differ diff --git a/iv/img/16distantlights/1after_preview.webp b/iv/img/16distantlights/1after_preview.webp deleted file mode 100644 index 45c7cd8..0000000 Binary files a/iv/img/16distantlights/1after_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/1before.png b/iv/img/16distantlights/1before.png deleted file mode 100644 index 1920409..0000000 Binary files a/iv/img/16distantlights/1before.png and /dev/null differ diff --git a/iv/img/16distantlights/1before.webp b/iv/img/16distantlights/1before.webp deleted file mode 100644 index 18a0788..0000000 Binary files a/iv/img/16distantlights/1before.webp and /dev/null differ diff --git a/iv/img/16distantlights/1before_preview.webp b/iv/img/16distantlights/1before_preview.webp deleted file mode 100644 index 805eec1..0000000 Binary files a/iv/img/16distantlights/1before_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/2after.png b/iv/img/16distantlights/2after.png deleted file mode 100644 index f580f51..0000000 Binary files a/iv/img/16distantlights/2after.png and /dev/null differ diff --git a/iv/img/16distantlights/2after.webp b/iv/img/16distantlights/2after.webp deleted file mode 100644 index ce5a792..0000000 Binary files a/iv/img/16distantlights/2after.webp and /dev/null differ diff --git a/iv/img/16distantlights/2after_preview.webp b/iv/img/16distantlights/2after_preview.webp deleted file mode 100644 index 1a2c5b8..0000000 Binary files a/iv/img/16distantlights/2after_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/2before.png b/iv/img/16distantlights/2before.png deleted file mode 100644 index f97b980..0000000 Binary files a/iv/img/16distantlights/2before.png and /dev/null differ diff --git a/iv/img/16distantlights/2before.webp b/iv/img/16distantlights/2before.webp deleted file mode 100644 index 86ae251..0000000 Binary files a/iv/img/16distantlights/2before.webp and /dev/null differ diff --git a/iv/img/16distantlights/2before_preview.webp b/iv/img/16distantlights/2before_preview.webp deleted file mode 100644 index 828715f..0000000 Binary files a/iv/img/16distantlights/2before_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/3originaldistantlights.png b/iv/img/16distantlights/3originaldistantlights.png deleted file mode 100644 index 0fa716f..0000000 Binary files a/iv/img/16distantlights/3originaldistantlights.png and /dev/null differ diff --git a/iv/img/16distantlights/3originaldistantlights.webp b/iv/img/16distantlights/3originaldistantlights.webp deleted file mode 100644 index cc74636..0000000 Binary files a/iv/img/16distantlights/3originaldistantlights.webp and /dev/null differ diff --git a/iv/img/16distantlights/3originaldistantlights_preview.webp b/iv/img/16distantlights/3originaldistantlights_preview.webp deleted file mode 100644 index bea5a3c..0000000 Binary files a/iv/img/16distantlights/3originaldistantlights_preview.webp and /dev/null differ diff --git a/iv/img/16distantlights/3project2dfx.png b/iv/img/16distantlights/3project2dfx.png deleted file mode 100644 index e101df6..0000000 Binary files a/iv/img/16distantlights/3project2dfx.png and /dev/null differ diff --git a/iv/img/16distantlights/3project2dfx.webp b/iv/img/16distantlights/3project2dfx.webp deleted file mode 100644 index 6be3866..0000000 Binary files a/iv/img/16distantlights/3project2dfx.webp and /dev/null differ diff --git a/iv/img/16distantlights/3project2dfx_preview.webp b/iv/img/16distantlights/3project2dfx_preview.webp deleted file mode 100644 index 512dd60..0000000 Binary files a/iv/img/16distantlights/3project2dfx_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaa.png b/iv/img/17antialiasing/1fusionfix_smaa.png deleted file mode 100644 index ed63037..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaa.png and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaa.webp b/iv/img/17antialiasing/1fusionfix_smaa.webp deleted file mode 100644 index 10999f9..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaa.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaa_preview.webp b/iv/img/17antialiasing/1fusionfix_smaa_preview.webp deleted file mode 100644 index 3b03ed2..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaa_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaasquare.png b/iv/img/17antialiasing/1fusionfix_smaasquare.png deleted file mode 100644 index 0d5fe53..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaasquare.png and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaasquare.webp b/iv/img/17antialiasing/1fusionfix_smaasquare.webp deleted file mode 100644 index 0c18ee2..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaasquare.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1fusionfix_smaasquare_preview.webp b/iv/img/17antialiasing/1fusionfix_smaasquare_preview.webp deleted file mode 100644 index 070a007..0000000 Binary files a/iv/img/17antialiasing/1fusionfix_smaasquare_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1noaa.png b/iv/img/17antialiasing/1noaa.png deleted file mode 100644 index 49a862c..0000000 Binary files a/iv/img/17antialiasing/1noaa.png and /dev/null differ diff --git a/iv/img/17antialiasing/1noaa.webp b/iv/img/17antialiasing/1noaa.webp deleted file mode 100644 index 0536f6b..0000000 Binary files a/iv/img/17antialiasing/1noaa.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1noaa_preview.webp b/iv/img/17antialiasing/1noaa_preview.webp deleted file mode 100644 index 90eec01..0000000 Binary files a/iv/img/17antialiasing/1noaa_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1noaasquare.png b/iv/img/17antialiasing/1noaasquare.png deleted file mode 100644 index 26c2a65..0000000 Binary files a/iv/img/17antialiasing/1noaasquare.png and /dev/null differ diff --git a/iv/img/17antialiasing/1noaasquare.webp b/iv/img/17antialiasing/1noaasquare.webp deleted file mode 100644 index 6d825ee..0000000 Binary files a/iv/img/17antialiasing/1noaasquare.webp and /dev/null differ diff --git a/iv/img/17antialiasing/1noaasquare_preview.webp b/iv/img/17antialiasing/1noaasquare_preview.webp deleted file mode 100644 index 3e92e57..0000000 Binary files a/iv/img/17antialiasing/1noaasquare_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/2fusionfix_fxaa.png b/iv/img/17antialiasing/2fusionfix_fxaa.png deleted file mode 100644 index af45792..0000000 Binary files a/iv/img/17antialiasing/2fusionfix_fxaa.png and /dev/null differ diff --git a/iv/img/17antialiasing/2fusionfix_fxaa.webp b/iv/img/17antialiasing/2fusionfix_fxaa.webp deleted file mode 100644 index eec2d38..0000000 Binary files a/iv/img/17antialiasing/2fusionfix_fxaa.webp and /dev/null differ diff --git a/iv/img/17antialiasing/2fusionfix_fxaa_preview.webp b/iv/img/17antialiasing/2fusionfix_fxaa_preview.webp deleted file mode 100644 index a59f5c2..0000000 Binary files a/iv/img/17antialiasing/2fusionfix_fxaa_preview.webp and /dev/null differ diff --git a/iv/img/17antialiasing/2noaa.png b/iv/img/17antialiasing/2noaa.png deleted file mode 100644 index d7839bb..0000000 Binary files a/iv/img/17antialiasing/2noaa.png and /dev/null differ diff --git a/iv/img/17antialiasing/2noaa.webp b/iv/img/17antialiasing/2noaa.webp deleted file mode 100644 index 7057289..0000000 Binary files a/iv/img/17antialiasing/2noaa.webp and /dev/null differ diff --git a/iv/img/17antialiasing/2noaa_preview.webp b/iv/img/17antialiasing/2noaa_preview.webp deleted file mode 100644 index a3ecb3a..0000000 Binary files a/iv/img/17antialiasing/2noaa_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/1after.png b/iv/img/18sunshafts/1after.png deleted file mode 100644 index 95687ac..0000000 Binary files a/iv/img/18sunshafts/1after.png and /dev/null differ diff --git a/iv/img/18sunshafts/1after.webp b/iv/img/18sunshafts/1after.webp deleted file mode 100644 index a59d2db..0000000 Binary files a/iv/img/18sunshafts/1after.webp and /dev/null differ diff --git a/iv/img/18sunshafts/1after_preview.webp b/iv/img/18sunshafts/1after_preview.webp deleted file mode 100644 index a016cd8..0000000 Binary files a/iv/img/18sunshafts/1after_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/1before.png b/iv/img/18sunshafts/1before.png deleted file mode 100644 index c1a2876..0000000 Binary files a/iv/img/18sunshafts/1before.png and /dev/null differ diff --git a/iv/img/18sunshafts/1before.webp b/iv/img/18sunshafts/1before.webp deleted file mode 100644 index c423a02..0000000 Binary files a/iv/img/18sunshafts/1before.webp and /dev/null differ diff --git a/iv/img/18sunshafts/1before_preview.webp b/iv/img/18sunshafts/1before_preview.webp deleted file mode 100644 index eb13c3e..0000000 Binary files a/iv/img/18sunshafts/1before_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/2after.png b/iv/img/18sunshafts/2after.png deleted file mode 100644 index d0aa53b..0000000 Binary files a/iv/img/18sunshafts/2after.png and /dev/null differ diff --git a/iv/img/18sunshafts/2after.webp b/iv/img/18sunshafts/2after.webp deleted file mode 100644 index 082203a..0000000 Binary files a/iv/img/18sunshafts/2after.webp and /dev/null differ diff --git a/iv/img/18sunshafts/2after_preview.webp b/iv/img/18sunshafts/2after_preview.webp deleted file mode 100644 index 93efe7f..0000000 Binary files a/iv/img/18sunshafts/2after_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/2before.png b/iv/img/18sunshafts/2before.png deleted file mode 100644 index ee99397..0000000 Binary files a/iv/img/18sunshafts/2before.png and /dev/null differ diff --git a/iv/img/18sunshafts/2before.webp b/iv/img/18sunshafts/2before.webp deleted file mode 100644 index 0c79bef..0000000 Binary files a/iv/img/18sunshafts/2before.webp and /dev/null differ diff --git a/iv/img/18sunshafts/2before_preview.webp b/iv/img/18sunshafts/2before_preview.webp deleted file mode 100644 index b1bd70f..0000000 Binary files a/iv/img/18sunshafts/2before_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/3after.png b/iv/img/18sunshafts/3after.png deleted file mode 100644 index b62cfa8..0000000 Binary files a/iv/img/18sunshafts/3after.png and /dev/null differ diff --git a/iv/img/18sunshafts/3after.webp b/iv/img/18sunshafts/3after.webp deleted file mode 100644 index 1badcd9..0000000 Binary files a/iv/img/18sunshafts/3after.webp and /dev/null differ diff --git a/iv/img/18sunshafts/3after_preview.webp b/iv/img/18sunshafts/3after_preview.webp deleted file mode 100644 index ca28e75..0000000 Binary files a/iv/img/18sunshafts/3after_preview.webp and /dev/null differ diff --git a/iv/img/18sunshafts/3before.png b/iv/img/18sunshafts/3before.png deleted file mode 100644 index aa33af8..0000000 Binary files a/iv/img/18sunshafts/3before.png and /dev/null differ diff --git a/iv/img/18sunshafts/3before.webp b/iv/img/18sunshafts/3before.webp deleted file mode 100644 index c97158d..0000000 Binary files a/iv/img/18sunshafts/3before.webp and /dev/null differ diff --git a/iv/img/18sunshafts/3before_preview.webp b/iv/img/18sunshafts/3before_preview.webp deleted file mode 100644 index 4907321..0000000 Binary files a/iv/img/18sunshafts/3before_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1after.png b/iv/img/19volumetricfog/1after.png deleted file mode 100644 index 4ecbfc2..0000000 Binary files a/iv/img/19volumetricfog/1after.png and /dev/null differ diff --git a/iv/img/19volumetricfog/1after.webp b/iv/img/19volumetricfog/1after.webp deleted file mode 100644 index 9ac1328..0000000 Binary files a/iv/img/19volumetricfog/1after.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1after_preview.webp b/iv/img/19volumetricfog/1after_preview.webp deleted file mode 100644 index d37a06e..0000000 Binary files a/iv/img/19volumetricfog/1after_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1aftersquare.png b/iv/img/19volumetricfog/1aftersquare.png deleted file mode 100644 index c329ffd..0000000 Binary files a/iv/img/19volumetricfog/1aftersquare.png and /dev/null differ diff --git a/iv/img/19volumetricfog/1aftersquare.webp b/iv/img/19volumetricfog/1aftersquare.webp deleted file mode 100644 index 0cc9c32..0000000 Binary files a/iv/img/19volumetricfog/1aftersquare.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1aftersquare_preview.webp b/iv/img/19volumetricfog/1aftersquare_preview.webp deleted file mode 100644 index 005c054..0000000 Binary files a/iv/img/19volumetricfog/1aftersquare_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1before.png b/iv/img/19volumetricfog/1before.png deleted file mode 100644 index 0bbefe1..0000000 Binary files a/iv/img/19volumetricfog/1before.png and /dev/null differ diff --git a/iv/img/19volumetricfog/1before.webp b/iv/img/19volumetricfog/1before.webp deleted file mode 100644 index 8d96703..0000000 Binary files a/iv/img/19volumetricfog/1before.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1before_preview.webp b/iv/img/19volumetricfog/1before_preview.webp deleted file mode 100644 index 6f183e6..0000000 Binary files a/iv/img/19volumetricfog/1before_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1beforesquare.png b/iv/img/19volumetricfog/1beforesquare.png deleted file mode 100644 index 51f21fc..0000000 Binary files a/iv/img/19volumetricfog/1beforesquare.png and /dev/null differ diff --git a/iv/img/19volumetricfog/1beforesquare.webp b/iv/img/19volumetricfog/1beforesquare.webp deleted file mode 100644 index 7858ff8..0000000 Binary files a/iv/img/19volumetricfog/1beforesquare.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/1beforesquare_preview.webp b/iv/img/19volumetricfog/1beforesquare_preview.webp deleted file mode 100644 index de5583e..0000000 Binary files a/iv/img/19volumetricfog/1beforesquare_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/2after.png b/iv/img/19volumetricfog/2after.png deleted file mode 100644 index a0f5637..0000000 Binary files a/iv/img/19volumetricfog/2after.png and /dev/null differ diff --git a/iv/img/19volumetricfog/2after.webp b/iv/img/19volumetricfog/2after.webp deleted file mode 100644 index 34ace69..0000000 Binary files a/iv/img/19volumetricfog/2after.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/2after_preview.webp b/iv/img/19volumetricfog/2after_preview.webp deleted file mode 100644 index a30f310..0000000 Binary files a/iv/img/19volumetricfog/2after_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/2before.png b/iv/img/19volumetricfog/2before.png deleted file mode 100644 index bc44e1c..0000000 Binary files a/iv/img/19volumetricfog/2before.png and /dev/null differ diff --git a/iv/img/19volumetricfog/2before.webp b/iv/img/19volumetricfog/2before.webp deleted file mode 100644 index 7563dad..0000000 Binary files a/iv/img/19volumetricfog/2before.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/2before_preview.webp b/iv/img/19volumetricfog/2before_preview.webp deleted file mode 100644 index 2a73009..0000000 Binary files a/iv/img/19volumetricfog/2before_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/3after.png b/iv/img/19volumetricfog/3after.png deleted file mode 100644 index 73ef9d9..0000000 Binary files a/iv/img/19volumetricfog/3after.png and /dev/null differ diff --git a/iv/img/19volumetricfog/3after.webp b/iv/img/19volumetricfog/3after.webp deleted file mode 100644 index 42935a4..0000000 Binary files a/iv/img/19volumetricfog/3after.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/3after_preview.webp b/iv/img/19volumetricfog/3after_preview.webp deleted file mode 100644 index 82511b3..0000000 Binary files a/iv/img/19volumetricfog/3after_preview.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/3before.png b/iv/img/19volumetricfog/3before.png deleted file mode 100644 index 08d5276..0000000 Binary files a/iv/img/19volumetricfog/3before.png and /dev/null differ diff --git a/iv/img/19volumetricfog/3before.webp b/iv/img/19volumetricfog/3before.webp deleted file mode 100644 index d80c16a..0000000 Binary files a/iv/img/19volumetricfog/3before.webp and /dev/null differ diff --git a/iv/img/19volumetricfog/3before_preview.webp b/iv/img/19volumetricfog/3before_preview.webp deleted file mode 100644 index 058493a..0000000 Binary files a/iv/img/19volumetricfog/3before_preview.webp and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionoff.png b/iv/img/1definition/1vanilla_definitionoff.png deleted file mode 100644 index 4122c0d..0000000 Binary files a/iv/img/1definition/1vanilla_definitionoff.png and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionoff.webp b/iv/img/1definition/1vanilla_definitionoff.webp deleted file mode 100644 index 9d43a5c..0000000 Binary files a/iv/img/1definition/1vanilla_definitionoff.webp and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionoff_preview.webp b/iv/img/1definition/1vanilla_definitionoff_preview.webp deleted file mode 100644 index 7bfa857..0000000 Binary files a/iv/img/1definition/1vanilla_definitionoff_preview.webp and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionon.png b/iv/img/1definition/1vanilla_definitionon.png deleted file mode 100644 index 98c1b68..0000000 Binary files a/iv/img/1definition/1vanilla_definitionon.png and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionon.webp b/iv/img/1definition/1vanilla_definitionon.webp deleted file mode 100644 index 9e2137c..0000000 Binary files a/iv/img/1definition/1vanilla_definitionon.webp and /dev/null differ diff --git a/iv/img/1definition/1vanilla_definitionon_preview.webp b/iv/img/1definition/1vanilla_definitionon_preview.webp deleted file mode 100644 index 7b03212..0000000 Binary files a/iv/img/1definition/1vanilla_definitionon_preview.webp and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionoff.png b/iv/img/1definition/2vanilla_definitionoff.png deleted file mode 100644 index fb56ab7..0000000 Binary files a/iv/img/1definition/2vanilla_definitionoff.png and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionoff.webp b/iv/img/1definition/2vanilla_definitionoff.webp deleted file mode 100644 index 5fb4691..0000000 Binary files a/iv/img/1definition/2vanilla_definitionoff.webp and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionoff_preview.webp b/iv/img/1definition/2vanilla_definitionoff_preview.webp deleted file mode 100644 index a91182c..0000000 Binary files a/iv/img/1definition/2vanilla_definitionoff_preview.webp and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionon.png b/iv/img/1definition/2vanilla_definitionon.png deleted file mode 100644 index 22e3fc5..0000000 Binary files a/iv/img/1definition/2vanilla_definitionon.png and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionon.webp b/iv/img/1definition/2vanilla_definitionon.webp deleted file mode 100644 index b278531..0000000 Binary files a/iv/img/1definition/2vanilla_definitionon.webp and /dev/null differ diff --git a/iv/img/1definition/2vanilla_definitionon_preview.webp b/iv/img/1definition/2vanilla_definitionon_preview.webp deleted file mode 100644 index 3835b47..0000000 Binary files a/iv/img/1definition/2vanilla_definitionon_preview.webp and /dev/null differ diff --git a/iv/img/1definition/3fusionfix_definitionon.png b/iv/img/1definition/3fusionfix_definitionon.png deleted file mode 100644 index 2a46801..0000000 Binary files a/iv/img/1definition/3fusionfix_definitionon.png and /dev/null differ diff --git a/iv/img/1definition/3fusionfix_definitionon.webp b/iv/img/1definition/3fusionfix_definitionon.webp deleted file mode 100644 index ec2b38a..0000000 Binary files a/iv/img/1definition/3fusionfix_definitionon.webp and /dev/null differ diff --git a/iv/img/1definition/3fusionfix_definitionon_preview.webp b/iv/img/1definition/3fusionfix_definitionon_preview.webp deleted file mode 100644 index 0ca176f..0000000 Binary files a/iv/img/1definition/3fusionfix_definitionon_preview.webp and /dev/null differ diff --git a/iv/img/1definition/3vanilla_definitionon.png b/iv/img/1definition/3vanilla_definitionon.png deleted file mode 100644 index 98c1b68..0000000 Binary files a/iv/img/1definition/3vanilla_definitionon.png and /dev/null differ diff --git a/iv/img/1definition/3vanilla_definitionon.webp b/iv/img/1definition/3vanilla_definitionon.webp deleted file mode 100644 index 9e2137c..0000000 Binary files a/iv/img/1definition/3vanilla_definitionon.webp and /dev/null differ diff --git a/iv/img/1definition/3vanilla_definitionon_preview.webp b/iv/img/1definition/3vanilla_definitionon_preview.webp deleted file mode 100644 index 7b03212..0000000 Binary files a/iv/img/1definition/3vanilla_definitionon_preview.webp and /dev/null differ diff --git a/iv/img/1definition/4fusionfix_definitionon.png b/iv/img/1definition/4fusionfix_definitionon.png deleted file mode 100644 index 6d60b16..0000000 Binary files a/iv/img/1definition/4fusionfix_definitionon.png and /dev/null differ diff --git a/iv/img/1definition/4fusionfix_definitionon.webp b/iv/img/1definition/4fusionfix_definitionon.webp deleted file mode 100644 index 0fd4dbd..0000000 Binary files a/iv/img/1definition/4fusionfix_definitionon.webp and /dev/null differ diff --git a/iv/img/1definition/4fusionfix_definitionon_preview.webp b/iv/img/1definition/4fusionfix_definitionon_preview.webp deleted file mode 100644 index 13ce158..0000000 Binary files a/iv/img/1definition/4fusionfix_definitionon_preview.webp and /dev/null differ diff --git a/iv/img/1definition/4vanilla_definitionoff.png b/iv/img/1definition/4vanilla_definitionoff.png deleted file mode 100644 index fb56ab7..0000000 Binary files a/iv/img/1definition/4vanilla_definitionoff.png and /dev/null differ diff --git a/iv/img/1definition/4vanilla_definitionoff.webp b/iv/img/1definition/4vanilla_definitionoff.webp deleted file mode 100644 index 5fb4691..0000000 Binary files a/iv/img/1definition/4vanilla_definitionoff.webp and /dev/null differ diff --git a/iv/img/1definition/4vanilla_definitionoff_preview.webp b/iv/img/1definition/4vanilla_definitionoff_preview.webp deleted file mode 100644 index a91182c..0000000 Binary files a/iv/img/1definition/4vanilla_definitionoff_preview.webp and /dev/null differ diff --git a/iv/img/20cutscenes/1after.png b/iv/img/20cutscenes/1after.png deleted file mode 100644 index ca5b3fa..0000000 Binary files a/iv/img/20cutscenes/1after.png and /dev/null differ diff --git a/iv/img/20cutscenes/1after.webp b/iv/img/20cutscenes/1after.webp deleted file mode 100644 index b314835..0000000 Binary files a/iv/img/20cutscenes/1after.webp and /dev/null differ diff --git a/iv/img/20cutscenes/1after_preview.webp b/iv/img/20cutscenes/1after_preview.webp deleted file mode 100644 index deeebea..0000000 Binary files a/iv/img/20cutscenes/1after_preview.webp and /dev/null differ diff --git a/iv/img/20cutscenes/1before.png b/iv/img/20cutscenes/1before.png deleted file mode 100644 index 5108d4b..0000000 Binary files a/iv/img/20cutscenes/1before.png and /dev/null differ diff --git a/iv/img/20cutscenes/1before.webp b/iv/img/20cutscenes/1before.webp deleted file mode 100644 index 72b96f3..0000000 Binary files a/iv/img/20cutscenes/1before.webp and /dev/null differ diff --git a/iv/img/20cutscenes/1before_preview.webp b/iv/img/20cutscenes/1before_preview.webp deleted file mode 100644 index 454778f..0000000 Binary files a/iv/img/20cutscenes/1before_preview.webp and /dev/null differ diff --git a/iv/img/20cutscenes/2cutscenestuttercomparison.webm b/iv/img/20cutscenes/2cutscenestuttercomparison.webm deleted file mode 100644 index 2296ddd..0000000 Binary files a/iv/img/20cutscenes/2cutscenestuttercomparison.webm and /dev/null differ diff --git a/iv/img/21vehiclelights/1after.png b/iv/img/21vehiclelights/1after.png deleted file mode 100644 index 02e24bf..0000000 Binary files a/iv/img/21vehiclelights/1after.png and /dev/null differ diff --git a/iv/img/21vehiclelights/1after.webp b/iv/img/21vehiclelights/1after.webp deleted file mode 100644 index b5f18a6..0000000 Binary files a/iv/img/21vehiclelights/1after.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1after_preview.webp b/iv/img/21vehiclelights/1after_preview.webp deleted file mode 100644 index bbd8ef7..0000000 Binary files a/iv/img/21vehiclelights/1after_preview.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1aftersquare.png b/iv/img/21vehiclelights/1aftersquare.png deleted file mode 100644 index b435195..0000000 Binary files a/iv/img/21vehiclelights/1aftersquare.png and /dev/null differ diff --git a/iv/img/21vehiclelights/1aftersquare.webp b/iv/img/21vehiclelights/1aftersquare.webp deleted file mode 100644 index dc134de..0000000 Binary files a/iv/img/21vehiclelights/1aftersquare.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1aftersquare_preview.webp b/iv/img/21vehiclelights/1aftersquare_preview.webp deleted file mode 100644 index 9456b64..0000000 Binary files a/iv/img/21vehiclelights/1aftersquare_preview.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1before.png b/iv/img/21vehiclelights/1before.png deleted file mode 100644 index 8bd0a4c..0000000 Binary files a/iv/img/21vehiclelights/1before.png and /dev/null differ diff --git a/iv/img/21vehiclelights/1before.webp b/iv/img/21vehiclelights/1before.webp deleted file mode 100644 index 7caedec..0000000 Binary files a/iv/img/21vehiclelights/1before.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1before_preview.webp b/iv/img/21vehiclelights/1before_preview.webp deleted file mode 100644 index 1df424b..0000000 Binary files a/iv/img/21vehiclelights/1before_preview.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1beforesquare.png b/iv/img/21vehiclelights/1beforesquare.png deleted file mode 100644 index 8efcdaf..0000000 Binary files a/iv/img/21vehiclelights/1beforesquare.png and /dev/null differ diff --git a/iv/img/21vehiclelights/1beforesquare.webp b/iv/img/21vehiclelights/1beforesquare.webp deleted file mode 100644 index ad58a16..0000000 Binary files a/iv/img/21vehiclelights/1beforesquare.webp and /dev/null differ diff --git a/iv/img/21vehiclelights/1beforesquare_preview.webp b/iv/img/21vehiclelights/1beforesquare_preview.webp deleted file mode 100644 index 62d6f81..0000000 Binary files a/iv/img/21vehiclelights/1beforesquare_preview.webp and /dev/null differ diff --git a/iv/img/22turnindicators/1turnindicators.webm b/iv/img/22turnindicators/1turnindicators.webm deleted file mode 100644 index 41d28c7..0000000 Binary files a/iv/img/22turnindicators/1turnindicators.webm and /dev/null differ diff --git a/iv/img/22turnindicators/2hazardlights.webm b/iv/img/22turnindicators/2hazardlights.webm deleted file mode 100644 index cd8fcc0..0000000 Binary files a/iv/img/22turnindicators/2hazardlights.webm and /dev/null differ diff --git a/iv/img/23extendedcontrollersupport/2extendedcontrollersupport.webm b/iv/img/23extendedcontrollersupport/2extendedcontrollersupport.webm deleted file mode 100644 index 17987a1..0000000 Binary files a/iv/img/23extendedcontrollersupport/2extendedcontrollersupport.webm and /dev/null differ diff --git a/iv/img/23extendedcontrollersupport/gamepadicons.png b/iv/img/23extendedcontrollersupport/gamepadicons.png deleted file mode 100644 index 30c10e0..0000000 Binary files a/iv/img/23extendedcontrollersupport/gamepadicons.png and /dev/null differ diff --git a/iv/img/23extendedcontrollersupport/gamepadicons.webp b/iv/img/23extendedcontrollersupport/gamepadicons.webp deleted file mode 100644 index a343703..0000000 Binary files a/iv/img/23extendedcontrollersupport/gamepadicons.webp and /dev/null differ diff --git a/iv/img/23extendedcontrollersupport/gamepadicons_preview.webp b/iv/img/23extendedcontrollersupport/gamepadicons_preview.webp deleted file mode 100644 index 5d6eff1..0000000 Binary files a/iv/img/23extendedcontrollersupport/gamepadicons_preview.webp and /dev/null differ diff --git a/iv/img/24improvedmousecontrols/improvedmousecontrols.webm b/iv/img/24improvedmousecontrols/improvedmousecontrols.webm deleted file mode 100644 index 7f20654..0000000 Binary files a/iv/img/24improvedmousecontrols/improvedmousecontrols.webm and /dev/null differ diff --git a/iv/img/25centeringdelay/1vanillacenterdelay.webm b/iv/img/25centeringdelay/1vanillacenterdelay.webm deleted file mode 100644 index f2ef8e5..0000000 Binary files a/iv/img/25centeringdelay/1vanillacenterdelay.webm and /dev/null differ diff --git a/iv/img/25centeringdelay/2fusionfixcenterdelay.webm b/iv/img/25centeringdelay/2fusionfixcenterdelay.webm deleted file mode 100644 index d39e97f..0000000 Binary files a/iv/img/25centeringdelay/2fusionfixcenterdelay.webm and /dev/null differ diff --git a/iv/img/26covercentering/1covercentering.webm b/iv/img/26covercentering/1covercentering.webm deleted file mode 100644 index 0b59907..0000000 Binary files a/iv/img/26covercentering/1covercentering.webm and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraoff.png b/iv/img/27centeredcamera/1centeredcameraoff.png deleted file mode 100644 index a6be254..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraoff.png and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraoff.webp b/iv/img/27centeredcamera/1centeredcameraoff.webp deleted file mode 100644 index 9cdacfa..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraoff.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraoff_preview.webp b/iv/img/27centeredcamera/1centeredcameraoff_preview.webp deleted file mode 100644 index 413277e..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraoff_preview.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraon.png b/iv/img/27centeredcamera/1centeredcameraon.png deleted file mode 100644 index 7ebb8f0..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraon.png and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraon.webp b/iv/img/27centeredcamera/1centeredcameraon.webp deleted file mode 100644 index 9664aed..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraon.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/1centeredcameraon_preview.webp b/iv/img/27centeredcamera/1centeredcameraon_preview.webp deleted file mode 100644 index 50f68bb..0000000 Binary files a/iv/img/27centeredcamera/1centeredcameraon_preview.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraoff.png b/iv/img/27centeredcamera/2centeredcameraoff.png deleted file mode 100644 index 536ca62..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraoff.png and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraoff.webp b/iv/img/27centeredcamera/2centeredcameraoff.webp deleted file mode 100644 index e606b42..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraoff.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraoff_preview.webp b/iv/img/27centeredcamera/2centeredcameraoff_preview.webp deleted file mode 100644 index ec87217..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraoff_preview.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraon.png b/iv/img/27centeredcamera/2centeredcameraon.png deleted file mode 100644 index 04317d6..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraon.png and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraon.webp b/iv/img/27centeredcamera/2centeredcameraon.webp deleted file mode 100644 index b66f826..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraon.webp and /dev/null differ diff --git a/iv/img/27centeredcamera/2centeredcameraon_preview.webp b/iv/img/27centeredcamera/2centeredcameraon_preview.webp deleted file mode 100644 index 00e14ff..0000000 Binary files a/iv/img/27centeredcamera/2centeredcameraon_preview.webp and /dev/null differ diff --git a/iv/img/28improvedsnipercontrols/1improvedsnipercontrols.webm b/iv/img/28improvedsnipercontrols/1improvedsnipercontrols.webm deleted file mode 100644 index 54dab66..0000000 Binary files a/iv/img/28improvedsnipercontrols/1improvedsnipercontrols.webm and /dev/null differ diff --git a/iv/img/29alwaysrun/1alwaysrunkeyboardandmouse.webm b/iv/img/29alwaysrun/1alwaysrunkeyboardandmouse.webm deleted file mode 100644 index 6930dc5..0000000 Binary files a/iv/img/29alwaysrun/1alwaysrunkeyboardandmouse.webm and /dev/null differ diff --git a/iv/img/29alwaysrun/2alwaysrungamepad.webm b/iv/img/29alwaysrun/2alwaysrungamepad.webm deleted file mode 100644 index 5a3faeb..0000000 Binary files a/iv/img/29alwaysrun/2alwaysrungamepad.webm and /dev/null differ diff --git a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.png b/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.png deleted file mode 100644 index f24a991..0000000 Binary files a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.png and /dev/null differ diff --git a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.webp b/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.webp deleted file mode 100644 index fbf4b5b..0000000 Binary files a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield.webp and /dev/null differ diff --git a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield_preview.webp b/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield_preview.webp deleted file mode 100644 index 695c2ea..0000000 Binary files a/iv/img/2depthoffield/1fusionfix_veryhighdepthoffield_preview.webp and /dev/null differ diff --git a/iv/img/2depthoffield/1vanilla_1440pdepthoffield.png b/iv/img/2depthoffield/1vanilla_1440pdepthoffield.png deleted file mode 100644 index 17bfc49..0000000 Binary files a/iv/img/2depthoffield/1vanilla_1440pdepthoffield.png and /dev/null differ diff --git a/iv/img/2depthoffield/1vanilla_1440pdepthoffield.webp b/iv/img/2depthoffield/1vanilla_1440pdepthoffield.webp deleted file mode 100644 index 43c8378..0000000 Binary files a/iv/img/2depthoffield/1vanilla_1440pdepthoffield.webp and /dev/null differ diff --git a/iv/img/2depthoffield/1vanilla_1440pdepthoffield_preview.webp b/iv/img/2depthoffield/1vanilla_1440pdepthoffield_preview.webp deleted file mode 100644 index 1a0d0ce..0000000 Binary files a/iv/img/2depthoffield/1vanilla_1440pdepthoffield_preview.webp and /dev/null differ diff --git a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.png b/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.png deleted file mode 100644 index e7f4595..0000000 Binary files a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.png and /dev/null differ diff --git a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.webp b/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.webp deleted file mode 100644 index b4cbad6..0000000 Binary files a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield.webp and /dev/null differ diff --git a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield_preview.webp b/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield_preview.webp deleted file mode 100644 index 065ddcf..0000000 Binary files a/iv/img/2depthoffield/2fusionfix_veryhighdepthoffield_preview.webp and /dev/null differ diff --git a/iv/img/2depthoffield/2vanilla_1440pdepthoffield.png b/iv/img/2depthoffield/2vanilla_1440pdepthoffield.png deleted file mode 100644 index f60edf4..0000000 Binary files a/iv/img/2depthoffield/2vanilla_1440pdepthoffield.png and /dev/null differ diff --git a/iv/img/2depthoffield/2vanilla_1440pdepthoffield.webp b/iv/img/2depthoffield/2vanilla_1440pdepthoffield.webp deleted file mode 100644 index a1181ad..0000000 Binary files a/iv/img/2depthoffield/2vanilla_1440pdepthoffield.webp and /dev/null differ diff --git a/iv/img/2depthoffield/2vanilla_1440pdepthoffield_preview.webp b/iv/img/2depthoffield/2vanilla_1440pdepthoffield_preview.webp deleted file mode 100644 index 11b7bdc..0000000 Binary files a/iv/img/2depthoffield/2vanilla_1440pdepthoffield_preview.webp and /dev/null differ diff --git a/iv/img/30camerashake/1vanillaexample.webm b/iv/img/30camerashake/1vanillaexample.webm deleted file mode 100644 index 9abd0e4..0000000 Binary files a/iv/img/30camerashake/1vanillaexample.webm and /dev/null differ diff --git a/iv/img/30camerashake/2fusionfixexample.webm b/iv/img/30camerashake/2fusionfixexample.webm deleted file mode 100644 index de1c23e..0000000 Binary files a/iv/img/30camerashake/2fusionfixexample.webm and /dev/null differ diff --git a/iv/img/31improvedloadingtimes/1improvedloadingtimes.webm b/iv/img/31improvedloadingtimes/1improvedloadingtimes.webm deleted file mode 100644 index e955736..0000000 Binary files a/iv/img/31improvedloadingtimes/1improvedloadingtimes.webm and /dev/null differ diff --git a/iv/img/32seasonalevents/1christmas1.png b/iv/img/32seasonalevents/1christmas1.png deleted file mode 100644 index c713d19..0000000 Binary files a/iv/img/32seasonalevents/1christmas1.png and /dev/null differ diff --git a/iv/img/32seasonalevents/1christmas1.webp b/iv/img/32seasonalevents/1christmas1.webp deleted file mode 100644 index e2cd7c2..0000000 Binary files a/iv/img/32seasonalevents/1christmas1.webp and /dev/null differ diff --git a/iv/img/32seasonalevents/1christmas1_preview.webp b/iv/img/32seasonalevents/1christmas1_preview.webp deleted file mode 100644 index fbd2518..0000000 Binary files a/iv/img/32seasonalevents/1christmas1_preview.webp and /dev/null differ diff --git a/iv/img/32seasonalevents/2christmas2.png b/iv/img/32seasonalevents/2christmas2.png deleted file mode 100644 index db45337..0000000 Binary files a/iv/img/32seasonalevents/2christmas2.png and /dev/null differ diff --git a/iv/img/32seasonalevents/2christmas2.webp b/iv/img/32seasonalevents/2christmas2.webp deleted file mode 100644 index ee08260..0000000 Binary files a/iv/img/32seasonalevents/2christmas2.webp and /dev/null differ diff --git a/iv/img/32seasonalevents/2christmas2_preview.webp b/iv/img/32seasonalevents/2christmas2_preview.webp deleted file mode 100644 index 1002b4f..0000000 Binary files a/iv/img/32seasonalevents/2christmas2_preview.webp and /dev/null differ diff --git a/iv/img/32seasonalevents/3halloweenevent.png b/iv/img/32seasonalevents/3halloweenevent.png deleted file mode 100644 index f5f1d39..0000000 Binary files a/iv/img/32seasonalevents/3halloweenevent.png and /dev/null differ diff --git a/iv/img/32seasonalevents/3halloweenevent.webp b/iv/img/32seasonalevents/3halloweenevent.webp deleted file mode 100644 index 7a402a8..0000000 Binary files a/iv/img/32seasonalevents/3halloweenevent.webp and /dev/null differ diff --git a/iv/img/32seasonalevents/3halloweenevent_preview.webp b/iv/img/32seasonalevents/3halloweenevent_preview.webp deleted file mode 100644 index b8d592c..0000000 Binary files a/iv/img/32seasonalevents/3halloweenevent_preview.webp and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur10fps.png b/iv/img/3motionblur/1vanilla_motionblur10fps.png deleted file mode 100644 index 603b55e..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur10fps.png and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur10fps.webp b/iv/img/3motionblur/1vanilla_motionblur10fps.webp deleted file mode 100644 index dff0ec0..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur10fps.webp and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur10fps_preview.webp b/iv/img/3motionblur/1vanilla_motionblur10fps_preview.webp deleted file mode 100644 index 9f79331..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur10fps_preview.webp and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur120fps.png b/iv/img/3motionblur/1vanilla_motionblur120fps.png deleted file mode 100644 index e403ca7..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur120fps.png and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur120fps.webp b/iv/img/3motionblur/1vanilla_motionblur120fps.webp deleted file mode 100644 index e51e876..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur120fps.webp and /dev/null differ diff --git a/iv/img/3motionblur/1vanilla_motionblur120fps_preview.webp b/iv/img/3motionblur/1vanilla_motionblur120fps_preview.webp deleted file mode 100644 index 07529b5..0000000 Binary files a/iv/img/3motionblur/1vanilla_motionblur120fps_preview.webp and /dev/null differ diff --git a/iv/img/3motionblur/2fusionfixchangingmotionblur.mkv b/iv/img/3motionblur/2fusionfixchangingmotionblur.mkv deleted file mode 100644 index 3ae984e..0000000 Binary files a/iv/img/3motionblur/2fusionfixchangingmotionblur.mkv and /dev/null differ diff --git a/iv/img/3motionblur/2fusionfixchangingmotionblur.webm b/iv/img/3motionblur/2fusionfixchangingmotionblur.webm deleted file mode 100644 index a71c017..0000000 Binary files a/iv/img/3motionblur/2fusionfixchangingmotionblur.webm and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat1440p.png b/iv/img/4bloom/1vanilla_bloomat1440p.png deleted file mode 100644 index f0872da..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat1440p.png and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat1440p.webp b/iv/img/4bloom/1vanilla_bloomat1440p.webp deleted file mode 100644 index 24f2b35..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat1440p.webp and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat1440p_preview.webp b/iv/img/4bloom/1vanilla_bloomat1440p_preview.webp deleted file mode 100644 index c84b450..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat1440p_preview.webp and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat720p.png b/iv/img/4bloom/1vanilla_bloomat720p.png deleted file mode 100644 index 2c767ab..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat720p.png and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat720p.webp b/iv/img/4bloom/1vanilla_bloomat720p.webp deleted file mode 100644 index 6ca8d27..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat720p.webp and /dev/null differ diff --git a/iv/img/4bloom/1vanilla_bloomat720p_preview.webp b/iv/img/4bloom/1vanilla_bloomat720p_preview.webp deleted file mode 100644 index 63262e5..0000000 Binary files a/iv/img/4bloom/1vanilla_bloomat720p_preview.webp and /dev/null differ diff --git a/iv/img/4bloom/2fusionfix_bloomat1440p.png b/iv/img/4bloom/2fusionfix_bloomat1440p.png deleted file mode 100644 index 1b2f838..0000000 Binary files a/iv/img/4bloom/2fusionfix_bloomat1440p.png and /dev/null differ diff --git a/iv/img/4bloom/2fusionfix_bloomat1440p.webp b/iv/img/4bloom/2fusionfix_bloomat1440p.webp deleted file mode 100644 index 992f999..0000000 Binary files a/iv/img/4bloom/2fusionfix_bloomat1440p.webp and /dev/null differ diff --git a/iv/img/4bloom/2fusionfix_bloomat1440p_preview.webp b/iv/img/4bloom/2fusionfix_bloomat1440p_preview.webp deleted file mode 100644 index d843ec7..0000000 Binary files a/iv/img/4bloom/2fusionfix_bloomat1440p_preview.webp and /dev/null differ diff --git a/iv/img/4bloom/2vanilla_bloomat1440p.png b/iv/img/4bloom/2vanilla_bloomat1440p.png deleted file mode 100644 index f0872da..0000000 Binary files a/iv/img/4bloom/2vanilla_bloomat1440p.png and /dev/null differ diff --git a/iv/img/4bloom/2vanilla_bloomat1440p.webp b/iv/img/4bloom/2vanilla_bloomat1440p.webp deleted file mode 100644 index 24f2b35..0000000 Binary files a/iv/img/4bloom/2vanilla_bloomat1440p.webp and /dev/null differ diff --git a/iv/img/4bloom/2vanilla_bloomat1440p_preview.webp b/iv/img/4bloom/2vanilla_bloomat1440p_preview.webp deleted file mode 100644 index c84b450..0000000 Binary files a/iv/img/4bloom/2vanilla_bloomat1440p_preview.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/1after.png b/iv/img/5volumetriclights/1after.png deleted file mode 100644 index 8074254..0000000 Binary files a/iv/img/5volumetriclights/1after.png and /dev/null differ diff --git a/iv/img/5volumetriclights/1after.webp b/iv/img/5volumetriclights/1after.webp deleted file mode 100644 index 43bf4b2..0000000 Binary files a/iv/img/5volumetriclights/1after.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/1after_preview.webp b/iv/img/5volumetriclights/1after_preview.webp deleted file mode 100644 index 1dcc695..0000000 Binary files a/iv/img/5volumetriclights/1after_preview.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/1before.png b/iv/img/5volumetriclights/1before.png deleted file mode 100644 index f21f0cf..0000000 Binary files a/iv/img/5volumetriclights/1before.png and /dev/null differ diff --git a/iv/img/5volumetriclights/1before.webp b/iv/img/5volumetriclights/1before.webp deleted file mode 100644 index bd69244..0000000 Binary files a/iv/img/5volumetriclights/1before.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/1before_preview.webp b/iv/img/5volumetriclights/1before_preview.webp deleted file mode 100644 index cebce58..0000000 Binary files a/iv/img/5volumetriclights/1before_preview.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/2after.png b/iv/img/5volumetriclights/2after.png deleted file mode 100644 index 5e50d4a..0000000 Binary files a/iv/img/5volumetriclights/2after.png and /dev/null differ diff --git a/iv/img/5volumetriclights/2after.webp b/iv/img/5volumetriclights/2after.webp deleted file mode 100644 index cd25ad0..0000000 Binary files a/iv/img/5volumetriclights/2after.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/2after_preview.webp b/iv/img/5volumetriclights/2after_preview.webp deleted file mode 100644 index 04a5d7b..0000000 Binary files a/iv/img/5volumetriclights/2after_preview.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/2before.png b/iv/img/5volumetriclights/2before.png deleted file mode 100644 index 3155471..0000000 Binary files a/iv/img/5volumetriclights/2before.png and /dev/null differ diff --git a/iv/img/5volumetriclights/2before.webp b/iv/img/5volumetriclights/2before.webp deleted file mode 100644 index 6045e1d..0000000 Binary files a/iv/img/5volumetriclights/2before.webp and /dev/null differ diff --git a/iv/img/5volumetriclights/2before_preview.webp b/iv/img/5volumetriclights/2before_preview.webp deleted file mode 100644 index 635c508..0000000 Binary files a/iv/img/5volumetriclights/2before_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaoff.png b/iv/img/6colorcorrection/1consolegammaoff.png deleted file mode 100644 index c57a939..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaoff.png and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaoff.webp b/iv/img/6colorcorrection/1consolegammaoff.webp deleted file mode 100644 index d76a18b..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaoff.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaoff_preview.webp b/iv/img/6colorcorrection/1consolegammaoff_preview.webp deleted file mode 100644 index 1919774..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaoff_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaon.png b/iv/img/6colorcorrection/1consolegammaon.png deleted file mode 100644 index ca4bf8c..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaon.png and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaon.webp b/iv/img/6colorcorrection/1consolegammaon.webp deleted file mode 100644 index d78ce53..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaon.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/1consolegammaon_preview.webp b/iv/img/6colorcorrection/1consolegammaon_preview.webp deleted file mode 100644 index c1613f1..0000000 Binary files a/iv/img/6colorcorrection/1consolegammaon_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaoff.png b/iv/img/6colorcorrection/2consolegammaoff.png deleted file mode 100644 index 49358f6..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaoff.png and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaoff.webp b/iv/img/6colorcorrection/2consolegammaoff.webp deleted file mode 100644 index 3d79256..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaoff.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaoff_preview.webp b/iv/img/6colorcorrection/2consolegammaoff_preview.webp deleted file mode 100644 index cfdbda1..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaoff_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaon.png b/iv/img/6colorcorrection/2consolegammaon.png deleted file mode 100644 index f518d66..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaon.png and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaon.webp b/iv/img/6colorcorrection/2consolegammaon.webp deleted file mode 100644 index d319f71..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaon.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/2consolegammaon_preview.webp b/iv/img/6colorcorrection/2consolegammaon_preview.webp deleted file mode 100644 index 4244169..0000000 Binary files a/iv/img/6colorcorrection/2consolegammaon_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaoff.png b/iv/img/6colorcorrection/3consolegammaoff.png deleted file mode 100644 index 2b27424..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaoff.png and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaoff.webp b/iv/img/6colorcorrection/3consolegammaoff.webp deleted file mode 100644 index e8cf6ce..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaoff.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaoff_preview.webp b/iv/img/6colorcorrection/3consolegammaoff_preview.webp deleted file mode 100644 index aa64639..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaoff_preview.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaon.png b/iv/img/6colorcorrection/3consolegammaon.png deleted file mode 100644 index a76908b..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaon.png and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaon.webp b/iv/img/6colorcorrection/3consolegammaon.webp deleted file mode 100644 index 3c35432..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaon.webp and /dev/null differ diff --git a/iv/img/6colorcorrection/3consolegammaon_preview.webp b/iv/img/6colorcorrection/3consolegammaon_preview.webp deleted file mode 100644 index 09ec7bc..0000000 Binary files a/iv/img/6colorcorrection/3consolegammaon_preview.webp and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingoff.png b/iv/img/7tonemapping/1tonemappingoff.png deleted file mode 100644 index eb891c2..0000000 Binary files a/iv/img/7tonemapping/1tonemappingoff.png and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingoff.webp b/iv/img/7tonemapping/1tonemappingoff.webp deleted file mode 100644 index 56d6265..0000000 Binary files a/iv/img/7tonemapping/1tonemappingoff.webp and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingoff_preview.webp b/iv/img/7tonemapping/1tonemappingoff_preview.webp deleted file mode 100644 index 68778a2..0000000 Binary files a/iv/img/7tonemapping/1tonemappingoff_preview.webp and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingon.png b/iv/img/7tonemapping/1tonemappingon.png deleted file mode 100644 index de6bab8..0000000 Binary files a/iv/img/7tonemapping/1tonemappingon.png and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingon.webp b/iv/img/7tonemapping/1tonemappingon.webp deleted file mode 100644 index 1bab692..0000000 Binary files a/iv/img/7tonemapping/1tonemappingon.webp and /dev/null differ diff --git a/iv/img/7tonemapping/1tonemappingon_preview.webp b/iv/img/7tonemapping/1tonemappingon_preview.webp deleted file mode 100644 index 02899d9..0000000 Binary files a/iv/img/7tonemapping/1tonemappingon_preview.webp and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingoff.png b/iv/img/7tonemapping/2tonemappingoff.png deleted file mode 100644 index 0ee7a80..0000000 Binary files a/iv/img/7tonemapping/2tonemappingoff.png and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingoff.webp b/iv/img/7tonemapping/2tonemappingoff.webp deleted file mode 100644 index be8ec09..0000000 Binary files a/iv/img/7tonemapping/2tonemappingoff.webp and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingoff_preview.webp b/iv/img/7tonemapping/2tonemappingoff_preview.webp deleted file mode 100644 index 61d46d3..0000000 Binary files a/iv/img/7tonemapping/2tonemappingoff_preview.webp and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingon.png b/iv/img/7tonemapping/2tonemappingon.png deleted file mode 100644 index 2cdba7f..0000000 Binary files a/iv/img/7tonemapping/2tonemappingon.png and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingon.webp b/iv/img/7tonemapping/2tonemappingon.webp deleted file mode 100644 index f56f1d1..0000000 Binary files a/iv/img/7tonemapping/2tonemappingon.webp and /dev/null differ diff --git a/iv/img/7tonemapping/2tonemappingon_preview.webp b/iv/img/7tonemapping/2tonemappingon_preview.webp deleted file mode 100644 index 9f06ed9..0000000 Binary files a/iv/img/7tonemapping/2tonemappingon_preview.webp and /dev/null differ diff --git a/iv/img/8particles/1after.png b/iv/img/8particles/1after.png deleted file mode 100644 index 7626419..0000000 Binary files a/iv/img/8particles/1after.png and /dev/null differ diff --git a/iv/img/8particles/1after.webp b/iv/img/8particles/1after.webp deleted file mode 100644 index e95695b..0000000 Binary files a/iv/img/8particles/1after.webp and /dev/null differ diff --git a/iv/img/8particles/1after_preview.webp b/iv/img/8particles/1after_preview.webp deleted file mode 100644 index cc01f97..0000000 Binary files a/iv/img/8particles/1after_preview.webp and /dev/null differ diff --git a/iv/img/8particles/1before.png b/iv/img/8particles/1before.png deleted file mode 100644 index 7097f11..0000000 Binary files a/iv/img/8particles/1before.png and /dev/null differ diff --git a/iv/img/8particles/1before.webp b/iv/img/8particles/1before.webp deleted file mode 100644 index 1195ebb..0000000 Binary files a/iv/img/8particles/1before.webp and /dev/null differ diff --git a/iv/img/8particles/1before_preview.webp b/iv/img/8particles/1before_preview.webp deleted file mode 100644 index 5d931ca..0000000 Binary files a/iv/img/8particles/1before_preview.webp and /dev/null differ diff --git a/iv/img/8particles/2after.png b/iv/img/8particles/2after.png deleted file mode 100644 index 2c9f60f..0000000 Binary files a/iv/img/8particles/2after.png and /dev/null differ diff --git a/iv/img/8particles/2after.webp b/iv/img/8particles/2after.webp deleted file mode 100644 index fb4271a..0000000 Binary files a/iv/img/8particles/2after.webp and /dev/null differ diff --git a/iv/img/8particles/2after_preview.webp b/iv/img/8particles/2after_preview.webp deleted file mode 100644 index ee28b77..0000000 Binary files a/iv/img/8particles/2after_preview.webp and /dev/null differ diff --git a/iv/img/8particles/2before.png b/iv/img/8particles/2before.png deleted file mode 100644 index 235e922..0000000 Binary files a/iv/img/8particles/2before.png and /dev/null differ diff --git a/iv/img/8particles/2before.webp b/iv/img/8particles/2before.webp deleted file mode 100644 index 29545b2..0000000 Binary files a/iv/img/8particles/2before.webp and /dev/null differ diff --git a/iv/img/8particles/2before_preview.webp b/iv/img/8particles/2before_preview.webp deleted file mode 100644 index c436b41..0000000 Binary files a/iv/img/8particles/2before_preview.webp and /dev/null differ diff --git a/iv/img/8particles/3after.png b/iv/img/8particles/3after.png deleted file mode 100644 index 9b1e6bb..0000000 Binary files a/iv/img/8particles/3after.png and /dev/null differ diff --git a/iv/img/8particles/3after.webp b/iv/img/8particles/3after.webp deleted file mode 100644 index 1f141e2..0000000 Binary files a/iv/img/8particles/3after.webp and /dev/null differ diff --git a/iv/img/8particles/3after_preview.webp b/iv/img/8particles/3after_preview.webp deleted file mode 100644 index f1ad67a..0000000 Binary files a/iv/img/8particles/3after_preview.webp and /dev/null differ diff --git a/iv/img/8particles/3before.png b/iv/img/8particles/3before.png deleted file mode 100644 index c0eca65..0000000 Binary files a/iv/img/8particles/3before.png and /dev/null differ diff --git a/iv/img/8particles/3before.webp b/iv/img/8particles/3before.webp deleted file mode 100644 index efbd55c..0000000 Binary files a/iv/img/8particles/3before.webp and /dev/null differ diff --git a/iv/img/8particles/3before_preview.webp b/iv/img/8particles/3before_preview.webp deleted file mode 100644 index 6bdb142..0000000 Binary files a/iv/img/8particles/3before_preview.webp and /dev/null differ diff --git a/iv/img/9objectfading/1screendoortransparencycomparison.webm b/iv/img/9objectfading/1screendoortransparencycomparison.webm deleted file mode 100644 index d7174fe..0000000 Binary files a/iv/img/9objectfading/1screendoortransparencycomparison.webm and /dev/null differ diff --git a/iv/img/9objectfading/2terrainfadingcomparison.webm b/iv/img/9objectfading/2terrainfadingcomparison.webm deleted file mode 100644 index cac4e4c..0000000 Binary files a/iv/img/9objectfading/2terrainfadingcomparison.webm and /dev/null differ diff --git a/iv/img/arrow.svg b/iv/img/arrow.svg deleted file mode 100644 index 140a5da..0000000 --- a/iv/img/arrow.svg +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/iv/img/arrow_hover.svg b/iv/img/arrow_hover.svg deleted file mode 100644 index 0706621..0000000 --- a/iv/img/arrow_hover.svg +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/iv/img/convert.bat b/iv/img/convert.bat deleted file mode 100644 index 6c5307c..0000000 --- a/iv/img/convert.bat +++ /dev/null @@ -1,43 +0,0 @@ -@echo off -echo Converting PNG files to optimized WebP... - -:: Set quality level for both standard and preview WebP (0-100, lower = smaller file size but lower quality) -set QUALITY=85 - -:: Set lossless option (0=lossy, 1=lossless) -set LOSSLESS=0 - -:: Process all PNG files recursively -FOR /R %%a IN (*.png) DO ( - echo Converting: "%%a" - - REM Skip specific files if needed (uncomment and modify if needed) - REM IF /I "%%~nxa" NEQ "logo.png" ( - - :: Convert to standard WebP with optimized settings - convert.ex "%%~a" -strip ^ - -define webp:lossless=%LOSSLESS% ^ - -define webp:method=6 ^ - -define webp:alpha-quality=100 ^ - -quality %QUALITY% ^ - "%%~dpna.webp" - - :: Progress indicator for standard WebP - echo Created: "%%~dpna.webp" - - :: Convert to preview WebP (3x smaller dimensions) with _preview suffix - convert.ex "%%~a" -strip ^ - -resize 50%% ^ - -define webp:lossless=%LOSSLESS% ^ - -define webp:method=6 ^ - -define webp:alpha-quality=100 ^ - -quality %QUALITY% ^ - "%%~dpna_preview.webp" - - :: Progress indicator for preview WebP - echo Created: "%%~dpna_preview.webp" - REM ) -) - -echo Conversion complete! -pause \ No newline at end of file diff --git a/iv/img/convert.ex b/iv/img/convert.ex deleted file mode 100644 index 1dab214..0000000 Binary files a/iv/img/convert.ex and /dev/null differ diff --git a/iv/img/screens/stripe1.png b/iv/img/screens/stripe1.png deleted file mode 100644 index d3a4b44..0000000 Binary files a/iv/img/screens/stripe1.png and /dev/null differ diff --git a/iv/img/screens/stripe1.webp b/iv/img/screens/stripe1.webp deleted file mode 100644 index e11617b..0000000 Binary files a/iv/img/screens/stripe1.webp and /dev/null differ diff --git a/iv/img/screens/stripe10.png b/iv/img/screens/stripe10.png deleted file mode 100644 index 45d7aa5..0000000 Binary files a/iv/img/screens/stripe10.png and /dev/null differ diff --git a/iv/img/screens/stripe10.webp b/iv/img/screens/stripe10.webp deleted file mode 100644 index 944adde..0000000 Binary files a/iv/img/screens/stripe10.webp and /dev/null differ diff --git a/iv/img/screens/stripe10_preview.webp b/iv/img/screens/stripe10_preview.webp deleted file mode 100644 index b52a486..0000000 Binary files a/iv/img/screens/stripe10_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe11.png b/iv/img/screens/stripe11.png deleted file mode 100644 index e67eb43..0000000 Binary files a/iv/img/screens/stripe11.png and /dev/null differ diff --git a/iv/img/screens/stripe11.webp b/iv/img/screens/stripe11.webp deleted file mode 100644 index a172d3b..0000000 Binary files a/iv/img/screens/stripe11.webp and /dev/null differ diff --git a/iv/img/screens/stripe11_preview.webp b/iv/img/screens/stripe11_preview.webp deleted file mode 100644 index aac0c29..0000000 Binary files a/iv/img/screens/stripe11_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe12.png b/iv/img/screens/stripe12.png deleted file mode 100644 index 372a754..0000000 Binary files a/iv/img/screens/stripe12.png and /dev/null differ diff --git a/iv/img/screens/stripe12.webp b/iv/img/screens/stripe12.webp deleted file mode 100644 index 5cfd921..0000000 Binary files a/iv/img/screens/stripe12.webp and /dev/null differ diff --git a/iv/img/screens/stripe12_preview.webp b/iv/img/screens/stripe12_preview.webp deleted file mode 100644 index ab980c3..0000000 Binary files a/iv/img/screens/stripe12_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe13.png b/iv/img/screens/stripe13.png deleted file mode 100644 index 27622e8..0000000 Binary files a/iv/img/screens/stripe13.png and /dev/null differ diff --git a/iv/img/screens/stripe13.webp b/iv/img/screens/stripe13.webp deleted file mode 100644 index 3b2741a..0000000 Binary files a/iv/img/screens/stripe13.webp and /dev/null differ diff --git a/iv/img/screens/stripe13_preview.webp b/iv/img/screens/stripe13_preview.webp deleted file mode 100644 index 9675c10..0000000 Binary files a/iv/img/screens/stripe13_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe14.png b/iv/img/screens/stripe14.png deleted file mode 100644 index 32b032b..0000000 Binary files a/iv/img/screens/stripe14.png and /dev/null differ diff --git a/iv/img/screens/stripe14.webp b/iv/img/screens/stripe14.webp deleted file mode 100644 index 60cf6ee..0000000 Binary files a/iv/img/screens/stripe14.webp and /dev/null differ diff --git a/iv/img/screens/stripe14_preview.webp b/iv/img/screens/stripe14_preview.webp deleted file mode 100644 index 4da7347..0000000 Binary files a/iv/img/screens/stripe14_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe15.png b/iv/img/screens/stripe15.png deleted file mode 100644 index a5e378e..0000000 Binary files a/iv/img/screens/stripe15.png and /dev/null differ diff --git a/iv/img/screens/stripe15.webp b/iv/img/screens/stripe15.webp deleted file mode 100644 index b333faa..0000000 Binary files a/iv/img/screens/stripe15.webp and /dev/null differ diff --git a/iv/img/screens/stripe15_preview.webp b/iv/img/screens/stripe15_preview.webp deleted file mode 100644 index d4f4dd0..0000000 Binary files a/iv/img/screens/stripe15_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe16.png b/iv/img/screens/stripe16.png deleted file mode 100644 index 7d60f62..0000000 Binary files a/iv/img/screens/stripe16.png and /dev/null differ diff --git a/iv/img/screens/stripe16.webp b/iv/img/screens/stripe16.webp deleted file mode 100644 index 4a7c0a3..0000000 Binary files a/iv/img/screens/stripe16.webp and /dev/null differ diff --git a/iv/img/screens/stripe16_preview.webp b/iv/img/screens/stripe16_preview.webp deleted file mode 100644 index e0792a0..0000000 Binary files a/iv/img/screens/stripe16_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe17.png b/iv/img/screens/stripe17.png deleted file mode 100644 index 6343d97..0000000 Binary files a/iv/img/screens/stripe17.png and /dev/null differ diff --git a/iv/img/screens/stripe17.webp b/iv/img/screens/stripe17.webp deleted file mode 100644 index 349e746..0000000 Binary files a/iv/img/screens/stripe17.webp and /dev/null differ diff --git a/iv/img/screens/stripe17_preview.webp b/iv/img/screens/stripe17_preview.webp deleted file mode 100644 index 7300f55..0000000 Binary files a/iv/img/screens/stripe17_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe18.png b/iv/img/screens/stripe18.png deleted file mode 100644 index dfe084d..0000000 Binary files a/iv/img/screens/stripe18.png and /dev/null differ diff --git a/iv/img/screens/stripe18.webp b/iv/img/screens/stripe18.webp deleted file mode 100644 index 0c440c0..0000000 Binary files a/iv/img/screens/stripe18.webp and /dev/null differ diff --git a/iv/img/screens/stripe18_preview.webp b/iv/img/screens/stripe18_preview.webp deleted file mode 100644 index b649319..0000000 Binary files a/iv/img/screens/stripe18_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe19.png b/iv/img/screens/stripe19.png deleted file mode 100644 index 5311e6a..0000000 Binary files a/iv/img/screens/stripe19.png and /dev/null differ diff --git a/iv/img/screens/stripe19.webp b/iv/img/screens/stripe19.webp deleted file mode 100644 index 3aa2c5c..0000000 Binary files a/iv/img/screens/stripe19.webp and /dev/null differ diff --git a/iv/img/screens/stripe19_preview.webp b/iv/img/screens/stripe19_preview.webp deleted file mode 100644 index a9b2baf..0000000 Binary files a/iv/img/screens/stripe19_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe1_preview.webp b/iv/img/screens/stripe1_preview.webp deleted file mode 100644 index f55fda2..0000000 Binary files a/iv/img/screens/stripe1_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe2.png b/iv/img/screens/stripe2.png deleted file mode 100644 index 1124519..0000000 Binary files a/iv/img/screens/stripe2.png and /dev/null differ diff --git a/iv/img/screens/stripe2.webp b/iv/img/screens/stripe2.webp deleted file mode 100644 index bc013b6..0000000 Binary files a/iv/img/screens/stripe2.webp and /dev/null differ diff --git a/iv/img/screens/stripe20.png b/iv/img/screens/stripe20.png deleted file mode 100644 index 966e737..0000000 Binary files a/iv/img/screens/stripe20.png and /dev/null differ diff --git a/iv/img/screens/stripe20.webp b/iv/img/screens/stripe20.webp deleted file mode 100644 index f75f0a5..0000000 Binary files a/iv/img/screens/stripe20.webp and /dev/null differ diff --git a/iv/img/screens/stripe20_preview.webp b/iv/img/screens/stripe20_preview.webp deleted file mode 100644 index b639ad2..0000000 Binary files a/iv/img/screens/stripe20_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe21.png b/iv/img/screens/stripe21.png deleted file mode 100644 index a51b869..0000000 Binary files a/iv/img/screens/stripe21.png and /dev/null differ diff --git a/iv/img/screens/stripe21.webp b/iv/img/screens/stripe21.webp deleted file mode 100644 index acc98c7..0000000 Binary files a/iv/img/screens/stripe21.webp and /dev/null differ diff --git a/iv/img/screens/stripe21_preview.webp b/iv/img/screens/stripe21_preview.webp deleted file mode 100644 index 5f6e450..0000000 Binary files a/iv/img/screens/stripe21_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe22.png b/iv/img/screens/stripe22.png deleted file mode 100644 index 3b2b644..0000000 Binary files a/iv/img/screens/stripe22.png and /dev/null differ diff --git a/iv/img/screens/stripe22.webp b/iv/img/screens/stripe22.webp deleted file mode 100644 index 70d9667..0000000 Binary files a/iv/img/screens/stripe22.webp and /dev/null differ diff --git a/iv/img/screens/stripe22_preview.webp b/iv/img/screens/stripe22_preview.webp deleted file mode 100644 index dfa093d..0000000 Binary files a/iv/img/screens/stripe22_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe23.png b/iv/img/screens/stripe23.png deleted file mode 100644 index eee3a73..0000000 Binary files a/iv/img/screens/stripe23.png and /dev/null differ diff --git a/iv/img/screens/stripe23.webp b/iv/img/screens/stripe23.webp deleted file mode 100644 index 569e766..0000000 Binary files a/iv/img/screens/stripe23.webp and /dev/null differ diff --git a/iv/img/screens/stripe23_preview.webp b/iv/img/screens/stripe23_preview.webp deleted file mode 100644 index c8e516e..0000000 Binary files a/iv/img/screens/stripe23_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe24.png b/iv/img/screens/stripe24.png deleted file mode 100644 index 9c3b404..0000000 Binary files a/iv/img/screens/stripe24.png and /dev/null differ diff --git a/iv/img/screens/stripe24.webp b/iv/img/screens/stripe24.webp deleted file mode 100644 index fb08743..0000000 Binary files a/iv/img/screens/stripe24.webp and /dev/null differ diff --git a/iv/img/screens/stripe24_preview.webp b/iv/img/screens/stripe24_preview.webp deleted file mode 100644 index fd5e3de..0000000 Binary files a/iv/img/screens/stripe24_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe25.png b/iv/img/screens/stripe25.png deleted file mode 100644 index a1b61bf..0000000 Binary files a/iv/img/screens/stripe25.png and /dev/null differ diff --git a/iv/img/screens/stripe25.webp b/iv/img/screens/stripe25.webp deleted file mode 100644 index 6a5985e..0000000 Binary files a/iv/img/screens/stripe25.webp and /dev/null differ diff --git a/iv/img/screens/stripe25_preview.webp b/iv/img/screens/stripe25_preview.webp deleted file mode 100644 index 7b432c4..0000000 Binary files a/iv/img/screens/stripe25_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe26.png b/iv/img/screens/stripe26.png deleted file mode 100644 index e313523..0000000 Binary files a/iv/img/screens/stripe26.png and /dev/null differ diff --git a/iv/img/screens/stripe26.webp b/iv/img/screens/stripe26.webp deleted file mode 100644 index 3cf71f1..0000000 Binary files a/iv/img/screens/stripe26.webp and /dev/null differ diff --git a/iv/img/screens/stripe26_preview.webp b/iv/img/screens/stripe26_preview.webp deleted file mode 100644 index 56fd765..0000000 Binary files a/iv/img/screens/stripe26_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe27.png b/iv/img/screens/stripe27.png deleted file mode 100644 index d404a37..0000000 Binary files a/iv/img/screens/stripe27.png and /dev/null differ diff --git a/iv/img/screens/stripe27.webp b/iv/img/screens/stripe27.webp deleted file mode 100644 index 8eecc38..0000000 Binary files a/iv/img/screens/stripe27.webp and /dev/null differ diff --git a/iv/img/screens/stripe27_preview.webp b/iv/img/screens/stripe27_preview.webp deleted file mode 100644 index 53a320a..0000000 Binary files a/iv/img/screens/stripe27_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe28.png b/iv/img/screens/stripe28.png deleted file mode 100644 index df9aa37..0000000 Binary files a/iv/img/screens/stripe28.png and /dev/null differ diff --git a/iv/img/screens/stripe28.webp b/iv/img/screens/stripe28.webp deleted file mode 100644 index aed235b..0000000 Binary files a/iv/img/screens/stripe28.webp and /dev/null differ diff --git a/iv/img/screens/stripe28_preview.webp b/iv/img/screens/stripe28_preview.webp deleted file mode 100644 index fc40f27..0000000 Binary files a/iv/img/screens/stripe28_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe29.png b/iv/img/screens/stripe29.png deleted file mode 100644 index 958dac2..0000000 Binary files a/iv/img/screens/stripe29.png and /dev/null differ diff --git a/iv/img/screens/stripe29.webp b/iv/img/screens/stripe29.webp deleted file mode 100644 index da11a9f..0000000 Binary files a/iv/img/screens/stripe29.webp and /dev/null differ diff --git a/iv/img/screens/stripe29_preview.webp b/iv/img/screens/stripe29_preview.webp deleted file mode 100644 index 42e5949..0000000 Binary files a/iv/img/screens/stripe29_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe2_preview.webp b/iv/img/screens/stripe2_preview.webp deleted file mode 100644 index 8dd2564..0000000 Binary files a/iv/img/screens/stripe2_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe3.png b/iv/img/screens/stripe3.png deleted file mode 100644 index fdeb0f8..0000000 Binary files a/iv/img/screens/stripe3.png and /dev/null differ diff --git a/iv/img/screens/stripe3.webp b/iv/img/screens/stripe3.webp deleted file mode 100644 index a44c140..0000000 Binary files a/iv/img/screens/stripe3.webp and /dev/null differ diff --git a/iv/img/screens/stripe30.png b/iv/img/screens/stripe30.png deleted file mode 100644 index 58c009d..0000000 Binary files a/iv/img/screens/stripe30.png and /dev/null differ diff --git a/iv/img/screens/stripe30.webp b/iv/img/screens/stripe30.webp deleted file mode 100644 index 2b49741..0000000 Binary files a/iv/img/screens/stripe30.webp and /dev/null differ diff --git a/iv/img/screens/stripe30_preview.webp b/iv/img/screens/stripe30_preview.webp deleted file mode 100644 index cb4dbb2..0000000 Binary files a/iv/img/screens/stripe30_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe31.png b/iv/img/screens/stripe31.png deleted file mode 100644 index 39b01dc..0000000 Binary files a/iv/img/screens/stripe31.png and /dev/null differ diff --git a/iv/img/screens/stripe31.webp b/iv/img/screens/stripe31.webp deleted file mode 100644 index 97fc422..0000000 Binary files a/iv/img/screens/stripe31.webp and /dev/null differ diff --git a/iv/img/screens/stripe31_preview.webp b/iv/img/screens/stripe31_preview.webp deleted file mode 100644 index 4929437..0000000 Binary files a/iv/img/screens/stripe31_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe32.png b/iv/img/screens/stripe32.png deleted file mode 100644 index 6d0048b..0000000 Binary files a/iv/img/screens/stripe32.png and /dev/null differ diff --git a/iv/img/screens/stripe32.webp b/iv/img/screens/stripe32.webp deleted file mode 100644 index f968c58..0000000 Binary files a/iv/img/screens/stripe32.webp and /dev/null differ diff --git a/iv/img/screens/stripe32_preview.webp b/iv/img/screens/stripe32_preview.webp deleted file mode 100644 index 02efdba..0000000 Binary files a/iv/img/screens/stripe32_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe33.png b/iv/img/screens/stripe33.png deleted file mode 100644 index 94c175f..0000000 Binary files a/iv/img/screens/stripe33.png and /dev/null differ diff --git a/iv/img/screens/stripe33.webp b/iv/img/screens/stripe33.webp deleted file mode 100644 index c79f6c6..0000000 Binary files a/iv/img/screens/stripe33.webp and /dev/null differ diff --git a/iv/img/screens/stripe33_preview.webp b/iv/img/screens/stripe33_preview.webp deleted file mode 100644 index 7df6dab..0000000 Binary files a/iv/img/screens/stripe33_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe34.png b/iv/img/screens/stripe34.png deleted file mode 100644 index 91e4055..0000000 Binary files a/iv/img/screens/stripe34.png and /dev/null differ diff --git a/iv/img/screens/stripe34.webp b/iv/img/screens/stripe34.webp deleted file mode 100644 index d11525e..0000000 Binary files a/iv/img/screens/stripe34.webp and /dev/null differ diff --git a/iv/img/screens/stripe34_preview.webp b/iv/img/screens/stripe34_preview.webp deleted file mode 100644 index e6d2897..0000000 Binary files a/iv/img/screens/stripe34_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe3_preview.webp b/iv/img/screens/stripe3_preview.webp deleted file mode 100644 index 9ed77cc..0000000 Binary files a/iv/img/screens/stripe3_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe4.png b/iv/img/screens/stripe4.png deleted file mode 100644 index 2a1c471..0000000 Binary files a/iv/img/screens/stripe4.png and /dev/null differ diff --git a/iv/img/screens/stripe4.webp b/iv/img/screens/stripe4.webp deleted file mode 100644 index a03d35e..0000000 Binary files a/iv/img/screens/stripe4.webp and /dev/null differ diff --git a/iv/img/screens/stripe4_preview.webp b/iv/img/screens/stripe4_preview.webp deleted file mode 100644 index 2738838..0000000 Binary files a/iv/img/screens/stripe4_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe5.png b/iv/img/screens/stripe5.png deleted file mode 100644 index 8999c68..0000000 Binary files a/iv/img/screens/stripe5.png and /dev/null differ diff --git a/iv/img/screens/stripe5.webp b/iv/img/screens/stripe5.webp deleted file mode 100644 index 3177b23..0000000 Binary files a/iv/img/screens/stripe5.webp and /dev/null differ diff --git a/iv/img/screens/stripe5_preview.webp b/iv/img/screens/stripe5_preview.webp deleted file mode 100644 index 5b0ed78..0000000 Binary files a/iv/img/screens/stripe5_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe6.png b/iv/img/screens/stripe6.png deleted file mode 100644 index 7f5b050..0000000 Binary files a/iv/img/screens/stripe6.png and /dev/null differ diff --git a/iv/img/screens/stripe6.webp b/iv/img/screens/stripe6.webp deleted file mode 100644 index 9482460..0000000 Binary files a/iv/img/screens/stripe6.webp and /dev/null differ diff --git a/iv/img/screens/stripe6_preview.webp b/iv/img/screens/stripe6_preview.webp deleted file mode 100644 index a3e03c7..0000000 Binary files a/iv/img/screens/stripe6_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe7.png b/iv/img/screens/stripe7.png deleted file mode 100644 index 45d2317..0000000 Binary files a/iv/img/screens/stripe7.png and /dev/null differ diff --git a/iv/img/screens/stripe7.webp b/iv/img/screens/stripe7.webp deleted file mode 100644 index a7c99df..0000000 Binary files a/iv/img/screens/stripe7.webp and /dev/null differ diff --git a/iv/img/screens/stripe7_preview.webp b/iv/img/screens/stripe7_preview.webp deleted file mode 100644 index 31825e2..0000000 Binary files a/iv/img/screens/stripe7_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe8.png b/iv/img/screens/stripe8.png deleted file mode 100644 index 65db9c1..0000000 Binary files a/iv/img/screens/stripe8.png and /dev/null differ diff --git a/iv/img/screens/stripe8.webp b/iv/img/screens/stripe8.webp deleted file mode 100644 index beb9249..0000000 Binary files a/iv/img/screens/stripe8.webp and /dev/null differ diff --git a/iv/img/screens/stripe8_preview.webp b/iv/img/screens/stripe8_preview.webp deleted file mode 100644 index ed53ec0..0000000 Binary files a/iv/img/screens/stripe8_preview.webp and /dev/null differ diff --git a/iv/img/screens/stripe9.png b/iv/img/screens/stripe9.png deleted file mode 100644 index 52b14b2..0000000 Binary files a/iv/img/screens/stripe9.png and /dev/null differ diff --git a/iv/img/screens/stripe9.webp b/iv/img/screens/stripe9.webp deleted file mode 100644 index a894686..0000000 Binary files a/iv/img/screens/stripe9.webp and /dev/null differ diff --git a/iv/img/screens/stripe9_preview.webp b/iv/img/screens/stripe9_preview.webp deleted file mode 100644 index 3acf971..0000000 Binary files a/iv/img/screens/stripe9_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty.png b/iv/img/sponsor_blips/blip_boosty.png deleted file mode 100644 index 31e60eb..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty.webp b/iv/img/sponsor_blips/blip_boosty.webp deleted file mode 100644 index 6c25b2d..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty_hov.png b/iv/img/sponsor_blips/blip_boosty_hov.png deleted file mode 100644 index 8f7dd14..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty_hov.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty_hov.webp b/iv/img/sponsor_blips/blip_boosty_hov.webp deleted file mode 100644 index 68023d4..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty_hov.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty_hov_preview.webp b/iv/img/sponsor_blips/blip_boosty_hov_preview.webp deleted file mode 100644 index 2ea13c1..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty_hov_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_boosty_preview.webp b/iv/img/sponsor_blips/blip_boosty_preview.webp deleted file mode 100644 index 0c5c051..0000000 Binary files a/iv/img/sponsor_blips/blip_boosty_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon.png b/iv/img/sponsor_blips/blip_githubspon.png deleted file mode 100644 index fb23ad9..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon.webp b/iv/img/sponsor_blips/blip_githubspon.webp deleted file mode 100644 index 2bb57b4..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon_hov.png b/iv/img/sponsor_blips/blip_githubspon_hov.png deleted file mode 100644 index 24f9597..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon_hov.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon_hov.webp b/iv/img/sponsor_blips/blip_githubspon_hov.webp deleted file mode 100644 index 44e938a..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon_hov.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon_hov_preview.webp b/iv/img/sponsor_blips/blip_githubspon_hov_preview.webp deleted file mode 100644 index 8718982..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon_hov_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_githubspon_preview.webp b/iv/img/sponsor_blips/blip_githubspon_preview.webp deleted file mode 100644 index dbeee21..0000000 Binary files a/iv/img/sponsor_blips/blip_githubspon_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi.png b/iv/img/sponsor_blips/blip_kofi.png deleted file mode 100644 index 7b43337..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi.webp b/iv/img/sponsor_blips/blip_kofi.webp deleted file mode 100644 index 12d82d1..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi_hov.png b/iv/img/sponsor_blips/blip_kofi_hov.png deleted file mode 100644 index 8a918c9..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi_hov.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi_hov.webp b/iv/img/sponsor_blips/blip_kofi_hov.webp deleted file mode 100644 index 94bb7eb..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi_hov.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi_hov_preview.webp b/iv/img/sponsor_blips/blip_kofi_hov_preview.webp deleted file mode 100644 index b14e983..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi_hov_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_kofi_preview.webp b/iv/img/sponsor_blips/blip_kofi_preview.webp deleted file mode 100644 index 4f87fe4..0000000 Binary files a/iv/img/sponsor_blips/blip_kofi_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon.png b/iv/img/sponsor_blips/blip_patreon.png deleted file mode 100644 index a660fe1..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon.webp b/iv/img/sponsor_blips/blip_patreon.webp deleted file mode 100644 index df905ed..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon_hov.png b/iv/img/sponsor_blips/blip_patreon_hov.png deleted file mode 100644 index 14f12f3..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon_hov.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon_hov.webp b/iv/img/sponsor_blips/blip_patreon_hov.webp deleted file mode 100644 index 7abdad9..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon_hov.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon_hov_preview.webp b/iv/img/sponsor_blips/blip_patreon_hov_preview.webp deleted file mode 100644 index 0e7b8cf..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon_hov_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_patreon_preview.webp b/iv/img/sponsor_blips/blip_patreon_preview.webp deleted file mode 100644 index 1ed3f51..0000000 Binary files a/iv/img/sponsor_blips/blip_patreon_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal.png b/iv/img/sponsor_blips/blip_paypal.png deleted file mode 100644 index dde404a..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal.webp b/iv/img/sponsor_blips/blip_paypal.webp deleted file mode 100644 index fb6a652..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal_hov.png b/iv/img/sponsor_blips/blip_paypal_hov.png deleted file mode 100644 index e00ce4d..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal_hov.png and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal_hov.webp b/iv/img/sponsor_blips/blip_paypal_hov.webp deleted file mode 100644 index 4be9aab..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal_hov.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal_hov_preview.webp b/iv/img/sponsor_blips/blip_paypal_hov_preview.webp deleted file mode 100644 index 2a3a9c7..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal_hov_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_paypal_preview.webp b/iv/img/sponsor_blips/blip_paypal_preview.webp deleted file mode 100644 index 1c0fc71..0000000 Binary files a/iv/img/sponsor_blips/blip_paypal_preview.webp and /dev/null differ diff --git a/iv/img/sponsor_blips/blip_youtube.png b/iv/img/sponsor_blips/blip_youtube.png deleted file mode 100644 index 0f783db..0000000 Binary files a/iv/img/sponsor_blips/blip_youtube.png and /dev/null differ diff --git a/iv/js/ScrollTrigger.min.js b/iv/js/ScrollTrigger.min.js deleted file mode 100644 index 070c4cd..0000000 --- a/iv/js/ScrollTrigger.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * ScrollTrigger 3.12.2 - * https://greensock.com - * - * @license Copyright 2023, GreenSock. All rights reserved. - * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. - * @author: Jack Doyle, jack@greensock.com - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function _defineProperties(e,t){for(var r=0;r=Math.abs(r)?t:r}function O(){(Ae=Se.core.globals().ScrollTrigger)&&Ae.core&&function _integrate(){var e=Ae.core,r=e.bridge||{},t=e._scrollers,n=e._proxies;t.push.apply(t,ze),n.push.apply(n,Ie),ze=t,Ie=n,i=function _bridge(e,t){return r[e](t)}}()}function P(e){return(Se=e||r())&&"undefined"!=typeof document&&document.body&&(Te=window,Pe=(Ce=document).documentElement,Me=Ce.body,t=[Te,Ce,Pe,Me],Se.utils.clamp,De=Se.core.context||function(){},Oe="onpointerenter"in Me?"pointer":"mouse",Ee=E.isTouch=Te.matchMedia&&Te.matchMedia("(hover: none), (pointer: coarse)").matches?1:"ontouchstart"in Te||0=o,n=Math.abs(t)>=o;k&&(r||n)&&k(se,e,t,be,me),r&&(m&&0Math.abs(t)?"x":"y",ie=!0),"y"!==ae&&(be[2]+=e,se._vx.update(e,!0)),"x"!==ae&&(me[2]+=t,se._vy.update(t,!0)),n?ee=ee||requestAnimationFrame(bf):bf()}function ef(e){if(!_e(e,1)){var t=(e=M(e,s)).clientX,r=e.clientY,n=t-se.x,o=r-se.y,i=se.isDragging;se.x=t,se.y=r,(i||Math.abs(se.startX-t)>=a||Math.abs(se.startY-r)>=a)&&(h&&(re=!0),i||(se.isDragging=!0),df(n,o),i||p&&p(se))}}function hf(e){return e.touches&&1=e)return a[n];return a[n-1]}for(n=a.length,e+=r;n--;)if(a[n]<=e)return a[n];return a[0]}:function(e,t,r){void 0===r&&(r=.001);var n=i(e);return!t||Math.abs(n-e)r&&(n*=t/100),e=e.substr(0,r-1)),e=n+(e in q?q[e]*t:~e.indexOf("%")?parseFloat(e)*t/100:parseFloat(e)||0)}return e}function Bb(e,t,r,n,o,i,a,s){var l=o.startColor,c=o.endColor,u=o.fontSize,f=o.indent,d=o.fontWeight,p=Xe.createElement("div"),g=Ja(r)||"fixed"===z(r,"pinType"),h=-1!==e.indexOf("scroller"),v=g?We:r,b=-1!==e.indexOf("start"),m=b?l:c,y="border-color:"+m+";font-size:"+u+";color:"+m+";font-weight:"+d+";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";return y+="position:"+((h||s)&&g?"fixed;":"absolute;"),!h&&!s&&g||(y+=(n===He?D:I)+":"+(i+parseFloat(f))+"px;"),a&&(y+="box-sizing:border-box;text-align:left;width:"+a.offsetWidth+"px;"),p._isStart=b,p.setAttribute("class","gsap-marker-"+e+(t?" marker-"+t:"")),p.style.cssText=y,p.innerText=t||0===t?e+"-"+t:e,v.children[0]?v.insertBefore(p,v.children[0]):v.appendChild(p),p._offset=p["offset"+n.op.d2],H(p,0,n,b),p}function Gb(){return 34We.clientWidth)||(ze.cache++,v?k=k||requestAnimationFrame(Q):Q(),st||V("scrollStart"),st=at())}function Ib(){y=Ne.innerWidth,m=Ne.innerHeight}function Jb(){ze.cache++,je||h||Xe.fullscreenElement||Xe.webkitFullscreenElement||b&&y===Ne.innerWidth&&!(Math.abs(Ne.innerHeight-m)>.25*Ne.innerHeight)||c.restart(!0)}function Mb(){return vb(re,"scrollEnd",Mb)||Pt(!0)}function Pb(e){for(var t=0;tt)&&e.setPositions(e.start,Math.max(e.start+1,t),!0)}),r.forEach(function(e){return e&&e.render&&e.render(-1)}),ze.forEach(function(e){Ra(e)&&(e.smooth&&requestAnimationFrame(function(){return e.target.style.scrollBehavior="smooth"}),e.rec&&e(e.rec))}),Rb(_,1),c.pause(),Ct++,Q(rt=2),kt.forEach(function(e){return Ra(e.vars.onRefresh)&&e.vars.onRefresh(e)}),rt=re.isRefreshing=!1,V("refresh")}else ub(re,"scrollEnd",Mb)},j=0,Mt=1,Q=function _updateAll(e){if(!rt||2===e){re.isUpdating=!0,ot&&ot.update(0);var t=kt.length,r=at(),n=50<=r-T,o=t&&kt[0].scroll();if(Mt=o=F})},ke.update=function(e,t,r){if(!de||r||e){var n,o,i,a,s,l,c,u=!0===rt?re:ke.scroll(),f=e?0:(u-D)/N,d=f<0?0:1=Oa(be,he),fe)if(e||!n&&!l)lc(ae,V);else{var g=_t(ae,!0),h=u-D;lc(ae,We,g.top+(he===He?h:0)+xt,g.left+(he===He?0:h)+xt)}Et(n||l?W:G),Z&&d<1&&n||b(j+(1!==d||l?0:Q))}}else b(Ga(j+Q*d));!ue||A.tween||je||it||te.restart(!0),T&&(s||ce&&d&&(d<1||!tt))&&Ge(T.targets).forEach(function(e){return e.classList[n||ce?"add":"remove"](T.className)}),!k||ve||e||k(ke),a&&!je?(ve&&(c&&("complete"===i?O.pause().totalProgress(1):"reset"===i?O.restart(!0).pause():"restart"===i?O.restart(!0):O[i]()),k&&k(ke)),!s&&tt||(C&&s&&Va(ke,C),xe[o]&&Va(ke,xe[o]),ce&&(1===d?ke.kill(!1,1):xe[o]=0),s||xe[o=1===d?1:3]&&Va(ke,xe[o])),pe&&!n&&Math.abs(ke.getVelocity())>(Sa(pe)?pe:2500)&&(Ua(ke.callbackAnimation),ee?ee.progress(1):Ua(O,"reverse"===i?1:!d,1))):ve&&k&&!je&&k(ke)}if(x){var v=de?u/de.duration()*(de._caScrollDist||0):u;y(v+(q._isFlipped?1:0)),x(v)}S&&S(-u/de.duration()*(de._caScrollDist||0))}},ke.enable=function(e,t){ke.enabled||(ke.enabled=!0,ub(be,"resize",Jb),me||ub(be,"scroll",Hb),Te&&ub(ScrollTrigger,"refreshInit",Te),!1!==e&&(ke.progress=Oe=0,R=B=Me=Ae()),!1!==t&&ke.refresh())},ke.getTween=function(e){return e&&A?A.tween:ee},ke.setPositions=function(e,t,r,n){if(de){var o=de.scrollTrigger,i=de.duration(),a=o.end-o.start;e=o.start+a*e/i,t=o.start+a*t/i}ke.refresh(!1,!1,{start:Ba(e,r&&!!ke._startClamp),end:Ba(t,r&&!!ke._endClamp)},n),ke.update()},ke.adjustPinSpacing=function(e){if($&&e){var t=$.indexOf(he.d)+1;$[t]=parseFloat($[t])+e+xt,$[1]=parseFloat($[1])+e+xt,Et($)}},ke.disable=function(e,t){if(ke.enabled&&(!1!==e&&ke.revert(!0,!0),ke.enabled=ke.isActive=!1,t||ee&&ee.pause(),re=0,n&&(n.uncache=1),Te&&vb(ScrollTrigger,"refreshInit",Te),te&&(te.pause(),A.tween&&A.tween.kill()&&(A.tween=0)),!me)){for(var r=kt.length;r--;)if(kt[r].scroller===be&&kt[r]!==ke)return;vb(be,"resize",Jb),me||vb(be,"scroll",Hb)}},ke.kill=function(e,t){ke.disable(e,t),ee&&!t&&ee.kill(),a&&delete Tt[a];var r=kt.indexOf(ke);0<=r&&kt.splice(r,1),r===Qe&&0i&&(b()>i?a.progress(1)&&b(i):a.resetTo("scrollY",i))}Ta(e)||(e={}),e.preventDefault=e.isNormalizer=e.allowClicks=!0,e.type||(e.type="wheel,touch"),e.debounce=!!e.debounce,e.id=e.id||"normalizer";var n,i,l,o,a,c,u,s,f=e.normalizeScrollX,t=e.momentum,r=e.allowNestedScroll,d=e.onRelease,p=J(e.target)||Je,g=Le.core.globals().ScrollSmoother,h=g&&g.get(),v=R&&(e.content&&J(e.content)||h&&!1!==e.content&&!h.smooth()&&h.content()),b=K(p,He),m=K(p,qe),y=1,x=(E.isTouch&&Ne.visualViewport?Ne.visualViewport.scale*Ne.visualViewport.width:Ne.outerWidth)/Ne.innerWidth,_=0,w=Ra(t)?function(){return t(n)}:function(){return t||2.8},S=uc(p,e.type,!0,r),k=Fa,T=Fa;return v&&Le.set(v,{y:"+=0"}),e.ignoreCheck=function(e){return R&&"touchmove"===e.type&&function ignoreDrag(){if(o){requestAnimationFrame(rq);var e=Ga(n.deltaY/2),t=T(b.v-e);if(v&&t!==b.v+b.offset){b.offset=t-b.v;var r=Ga((parseFloat(v&&v._gsap.y)||0)-b.offset);v.style.transform="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, "+r+", 0, 1)",v._gsap.y=r+"px",b.cacheID=ze.cache,Q()}return!0}b.offset&&vq(),o=!0}()||1.05=i||i-1<=r)&&Le.to({},{onUpdate:Bq,duration:o})}else s.restart(!0);d&&d(e)},e.onWheel=function(){a._ts&&a.pause(),1e3a;)s=s._prev;return s?(e._next=s._next,s._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[i]=e,e._prev=s,e.parent=e._dp=t,e}function ya(t,e,r,i){void 0===r&&(r="_first"),void 0===i&&(i="_last");var n=e._prev,a=e._next;n?n._next=a:t[r]===e&&(t[r]=a),a?a._prev=n:t[i]===e&&(t[i]=n),e._next=e._prev=e.parent=null}function za(t,e){t.parent&&(!e||t.parent.autoRemoveChildren)&&t.parent.remove&&t.parent.remove(t),t._act=0}function Aa(t,e){if(t&&(!e||e._end>t._dur||e._start<0))for(var r=t;r;)r._dirty=1,r=r.parent;return t}function Ca(t,e,r,i){return t._startAt&&(L?t._startAt.revert(ht):t.vars.immediateRender&&!t.vars.autoRevert||t._startAt.render(e,!0,i))}function Ea(t){return t._repeat?Tt(t._tTime,t=t.duration()+t._rDelay)*t:0}function Ga(t,e){return(t-e._start)*e._ts+(0<=e._ts?0:e._dirty?e.totalDuration():e._tDur)}function Ha(t){return t._end=ja(t._start+(t._tDur/Math.abs(t._ts||t._rts||X)||0))}function Ia(t,e){var r=t._dp;return r&&r.smoothChildTiming&&t._ts&&(t._start=ja(r._time-(0X)&&e.render(r,!0)),Aa(t,e)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur(n=Math.abs(n))&&(a=i,o=n);return a}function tb(t){return za(t),t.scrollTrigger&&t.scrollTrigger.kill(!!L),t.progress()<1&&At(t,"onInterrupt"),t}function wb(t){if(x()&&t){var e=(t=!t.name&&t.default||t).name,r=s(t),i=e&&!r&&t.init?function(){this._props=[]}:t,n={init:T,render:he,add:Qt,kill:ce,modifier:fe,rawVars:0},a={targetTest:0,get:0,getSetter:ne,aliases:{},register:0};if(Ft(),t!==i){if(pt[e])return;qa(i,qa(ua(t,n),a)),yt(i.prototype,yt(n,ua(t,a))),pt[i.prop=e]=i,t.targetTest&&(gt.push(i),ft[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}S(e,i),t.register&&t.register(Ee,i,_e)}else t&&Ct.push(t)}function zb(t,e,r){return(6*(t+=t<0?1:1>16,e>>8&St,e&St]:0:Et.black;if(!p){if(","===e.substr(-1)&&(e=e.substr(0,e.length-1)),Et[e])p=Et[e];else if("#"===e.charAt(0)){if(e.length<6&&(e="#"+(n=e.charAt(1))+n+(a=e.charAt(2))+a+(s=e.charAt(3))+s+(5===e.length?e.charAt(4)+e.charAt(4):"")),9===e.length)return[(p=parseInt(e.substr(1,6),16))>>16,p>>8&St,p&St,parseInt(e.substr(7),16)/255];p=[(e=parseInt(e.substr(1),16))>>16,e>>8&St,e&St]}else if("hsl"===e.substr(0,3))if(p=d=e.match(tt),r){if(~e.indexOf("="))return p=e.match(et),i&&p.length<4&&(p[3]=1),p}else o=+p[0]%360/360,u=p[1]/100,n=2*(h=p[2]/100)-(a=h<=.5?h*(u+1):h+u-h*u),3=U?u.endTime(!1):t._dur;return r(e)&&(isNaN(e)||e in o)?(a=e.charAt(0),s="%"===e.substr(-1),n=e.indexOf("="),"<"===a||">"===a?(0<=n&&(e=e.replace(/=/,"")),("<"===a?u._start:u.endTime(0<=u._repeat))+(parseFloat(e.substr(1))||0)*(s?(n<0?u:i).totalDuration()/100:1)):n<0?(e in o||(o[e]=h),o[e]):(a=parseFloat(e.charAt(n-1)+e.substr(n+1)),s&&i&&(a=a/100*($(i)?i[0]:i).totalDuration()),1=r&&te)return i;i=i._next}else for(i=t._last;i&&i._start>=r;){if("isPause"===i.data&&i._start=n._start)&&n._ts&&h!==n){if(n.parent!==this)return this.render(t,e,r);if(n.render(0=this.totalDuration()||!v&&_)&&(f!==this._start&&Math.abs(l)===Math.abs(this._ts)||this._lock||(!t&&g||!(v===m&&0=i&&(a instanceof Zt?e&&n.push(a):(r&&n.push(a),t&&n.push.apply(n,a.getChildren(!0,e,r)))),a=a._next;return n},e.getById=function getById(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},e.remove=function remove(t){return r(t)?this.removeLabel(t):s(t)?this.killTweensOf(t):(ya(this,t),t===this._recent&&(this._recent=this._last),Aa(this))},e.totalTime=function totalTime(t,e){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=ja(Rt.time-(0r:!r||s.isActive())&&n.push(s):(i=s.getTweensOf(a,r)).length&&n.push.apply(n,i),s=s._next;return n},e.tweenTo=function tweenTo(t,e){e=e||{};var r,i=this,n=xt(i,t),a=e.startAt,s=e.onStart,o=e.onStartParams,u=e.immediateRender,h=Zt.to(i,qa({ease:e.ease||"none",lazy:!1,immediateRender:!1,time:n,overwrite:"auto",duration:e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale())||X,onStart:function onStart(){if(i.pause(),!r){var t=e.duration||Math.abs((n-(a&&"time"in a?a.time:i._time))/i.timeScale());h._dur!==t&&Ra(h,t,0,1).render(h._time,!0,!0),r=1}s&&s.apply(h,o||[])}},e));return u?h.render(0):h},e.tweenFromTo=function tweenFromTo(t,e,r){return this.tweenTo(e,qa({startAt:{time:xt(this,t)}},r))},e.recent=function recent(){return this._recent},e.nextLabel=function nextLabel(t){return void 0===t&&(t=this._time),rb(this,xt(this,t))},e.previousLabel=function previousLabel(t){return void 0===t&&(t=this._time),rb(this,xt(this,t),1)},e.currentLabel=function currentLabel(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+X)},e.shiftChildren=function shiftChildren(t,e,r){void 0===r&&(r=0);for(var i,n=this._first,a=this.labels;n;)n._start>=r&&(n._start+=t,n._end+=t),n=n._next;if(e)for(i in a)a[i]>=r&&(a[i]+=t);return Aa(this)},e.invalidate=function invalidate(t){var e=this._first;for(this._lock=0;e;)e.invalidate(t),e=e._next;return i.prototype.invalidate.call(this,t)},e.clear=function clear(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),Aa(this)},e.totalDuration=function totalDuration(t){var e,r,i,n=0,a=this,s=a._last,o=U;if(arguments.length)return a.timeScale((a._repeat<0?a.duration():a.totalDuration())/(a.reversed()?-t:t));if(a._dirty){for(i=a.parent;s;)e=s._prev,s._dirty&&s.totalDuration(),o<(r=s._start)&&a._sort&&s._ts&&!a._lock?(a._lock=1,Ka(a,s,r-s._delay,1)._lock=0):o=r,r<0&&s._ts&&(n-=r,(!i&&!a._dp||i&&i.smoothChildTiming)&&(a._start+=r/a._ts,a._time-=r,a._tTime-=r),a.shiftChildren(-r,!1,-Infinity),o=0),s._end>n&&s._ts&&(n=s._end),s=e;Ra(a,a===I&&a._time>n?a._time:n,1,1),a._dirty=0}return a._tDur},Timeline.updateRoot=function updateRoot(t){if(I._ts&&(na(I,Ga(t,I)),f=Rt.frame),Rt.frame>=mt){mt+=q.autoSleep||120;var e=I._first;if((!e||!e._ts)&&q.autoSleep&&Rt._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||Rt.sleep()}}},Timeline}(Ut);qa(Xt.prototype,{_lock:0,_hasPause:0,_forcing:0});function ac(t,e,i,n,a,o){var u,h,l,f;if(pt[t]&&!1!==(u=new pt[t]).init(a,u.rawVars?e[t]:function _processVars(t,e,i,n,a){if(s(t)&&(t=Kt(t,a,e,i,n)),!v(t)||t.style&&t.nodeType||$(t)||Z(t))return r(t)?Kt(t,a,e,i,n):t;var o,u={};for(o in t)u[o]=Kt(t[o],a,e,i,n);return u}(e[t],n,a,o,i),i,n,o)&&(i._pt=h=new _e(i._pt,a,t,0,1,u.render,u,0,u.priority),i!==c))for(l=i._ptLookup[i._targets.indexOf(a)],f=u._props.length;f--;)l[u._props[f]]=h;return u}function gc(t,r,e,i){var n,a,s=r.ease||i||"power1.inOut";if($(r))a=e[t]||(e[t]=[]),r.forEach(function(t,e){return a.push({t:e/(r.length-1)*100,v:t,e:s})});else for(n in r)a=e[n]||(e[n]=[]),"ease"===n||a.push({t:parseFloat(t),v:r[n],e:s})}var Nt,Wt,Qt=function _addPropTween(t,e,i,n,a,o,u,h,l,f){s(n)&&(n=n(a||0,t,o));var c,d=t[e],p="get"!==i?i:s(d)?l?t[e.indexOf("set")||!s(t["get"+e.substr(3)])?e:"get"+e.substr(3)](l):t[e]():d,_=s(d)?l?re:te:$t;if(r(n)&&(~n.indexOf("random(")&&(n=ob(n)),"="===n.charAt(1)&&(!(c=ka(p,n)+(Ya(p)||0))&&0!==c||(n=c))),!f||p!==n||Wt)return isNaN(p*n)||""===n?(d||e in t||Q(e,n),function _addComplexStringPropTween(t,e,r,i,n,a,s){var o,u,h,l,f,c,d,p,_=new _e(this._pt,t,e,0,1,ue,null,n),m=0,g=0;for(_.b=r,_.e=i,r+="",(d=~(i+="").indexOf("random("))&&(i=ob(i)),a&&(a(p=[r,i],t,e),r=p[0],i=p[1]),u=r.match(it)||[];o=it.exec(i);)l=o[0],f=i.substring(m,o.index),h?h=(h+1)%5:"rgba("===f.substr(-5)&&(h=1),l!==u[g++]&&(c=parseFloat(u[g-1])||0,_._pt={_next:_._pt,p:f||1===g?f:",",s:c,c:"="===l.charAt(1)?ka(c,l)-c:parseFloat(l)-c,m:h&&h<4?Math.round:0},m=it.lastIndex);return _.c=m")}),s.duration();else{for(l in u={},x)"ease"===l||"easeEach"===l||gc(l,x[l],u,x.easeEach);for(l in u)for(C=u[l].sort(function(t,e){return t.t-e.t}),o=D=0;o=t._tDur||e<0)&&t.ratio===u&&(u&&za(t,1),r||L||(At(t,u?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)}(this,t,e,r);return this},e.targets=function targets(){return this._targets},e.invalidate=function invalidate(t){return t&&this.vars.runBackwards||(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(t),z.prototype.invalidate.call(this,t)},e.resetTo=function resetTo(t,e,r,i){d||Rt.wake(),this._ts||this.play();var n,a=Math.min(this._dur,(this._dp._time-this._start)*this._ts);return this._initted||Gt(this,a),n=this._ease(a/this._dur),function _updatePropTweens(t,e,r,i,n,a,s){var o,u,h,l,f=(t._pt&&t._ptCache||(t._ptCache={}))[e];if(!f)for(f=t._ptCache[e]=[],h=t._ptLookup,l=t._targets.length;l--;){if((o=h[l][e])&&o.d&&o.d._pt)for(o=o.d._pt;o&&o.p!==e&&o.fp!==e;)o=o._next;if(!o)return Wt=1,t.vars[e]="+=0",Gt(t,s),Wt=0,1;f.push(o)}for(l=f.length;l--;)(o=(u=f[l])._pt||u).s=!i&&0!==i||n?o.s+(i||0)+a*o.c:i,o.c=r-o.s,u.e&&(u.e=ia(r)+Ya(u.e)),u.b&&(u.b=o.s+Ya(u.b))}(this,t,e,r,i,n,a)?this.resetTo(t,e,r,i):(Ia(this,0),this.parent||xa(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},e.kill=function kill(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e))return this._lazy=this._pt=0,this.parent?tb(this):this;if(this.timeline){var i=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,Nt&&!0!==Nt.vars.overwrite)._first||tb(this),this.parent&&i!==this.timeline.totalDuration()&&Ra(this,this._dur*this.timeline._tDur/i,0,1),this}var n,a,s,o,u,h,l,f=this._targets,c=t?Ot(t):f,d=this._ptLookup,p=this._pt;if((!e||"all"===e)&&function _arraysMatch(t,e){for(var r=t.length,i=r===e.length;i&&r--&&t[r]===e[r];);return r<0}(f,c))return"all"===e&&(this._pt=0),tb(this);for(n=this._op=this._op||[],"all"!==e&&(r(e)&&(u={},ha(e,function(t){return u[t]=1}),e=u),e=function _addAliasesToVars(t,e){var r,i,n,a,s=t[0]?fa(t[0]).harness:0,o=s&&s.aliases;if(!o)return e;for(i in r=yt({},e),o)if(i in r)for(n=(a=o[i].split(",")).length;n--;)r[a[n]]=r[i];return r}(f,e)),l=f.length;l--;)if(~c.indexOf(f[l]))for(u in a=d[l],"all"===e?(n[l]=e,o=a,s={}):(s=n[l]=n[l]||{},o=e),o)(h=a&&a[u])&&("kill"in h.d&&!0!==h.d.kill(u)||ya(this,h,"_pt"),delete a[u]),"all"!==s&&(s[u]=1);return this._initted&&!this._pt&&p&&tb(this),this},Tween.to=function to(t,e,r){return new Tween(t,e,r)},Tween.from=function from(t,e){return Va(1,arguments)},Tween.delayedCall=function delayedCall(t,e,r,i){return new Tween(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},Tween.fromTo=function fromTo(t,e,r){return Va(2,arguments)},Tween.set=function set(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new Tween(t,e)},Tween.killTweensOf=function killTweensOf(t,e,r){return I.killTweensOf(t,e,r)},Tween}(Ut);qa(Zt.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),ha("staggerTo,staggerFrom,staggerFromTo",function(r){Zt[r]=function(){var t=new Xt,e=Mt.call(arguments,0);return e.splice("staggerFromTo"===r?5:4,0,0),t[r].apply(t,e)}});function oc(t,e,r){return t.setAttribute(e,r)}function wc(t,e,r,i){i.mSet(t,e,i.m.call(i.tween,r,i.mt),i)}var $t=function _setterPlain(t,e,r){return t[e]=r},te=function _setterFunc(t,e,r){return t[e](r)},re=function _setterFuncWithParam(t,e,r,i){return t[e](i.fp,r)},ne=function _getSetter(t,e){return s(t[e])?te:u(t[e])&&t.setAttribute?oc:$t},ae=function _renderPlain(t,e){return e.set(e.t,e.p,Math.round(1e6*(e.s+e.c*t))/1e6,e)},se=function _renderBoolean(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},ue=function _renderComplexString(t,e){var r=e._pt,i="";if(!t&&e.b)i=e.b;else if(1===t&&e.e)i=e.e;else{for(;r;)i=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+i,r=r._next;i+=e.c}e.set(e.t,e.p,i,e)},he=function _renderPropTweens(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},fe=function _addPluginModifier(t,e,r,i){for(var n,a=this._pt;a;)n=a._next,a.p===i&&a.modifier(t,e,r),a=n},ce=function _killPropTweensOf(t){for(var e,r,i=this._pt;i;)r=i._next,i.p===t&&!i.op||i.op===t?ya(this,i,"_pt"):i.dep||(e=1),i=r;return!e},pe=function _sortPropTweensByPriority(t){for(var e,r,i,n,a=t._pt;a;){for(e=a._next,r=i;r&&r.pr>a.pr;)r=r._next;(a._prev=r?r._prev:n)?a._prev._next=a:i=a,(a._next=r)?r._prev=a:n=a,a=e}t._pt=i},_e=(PropTween.prototype.modifier=function modifier(t,e,r){this.mSet=this.mSet||this.set,this.set=wc,this.m=t,this.mt=r,this.tween=e},PropTween);function PropTween(t,e,r,i,n,a,s,o,u){this.t=e,this.s=i,this.c=n,this.p=r,this.r=a||ae,this.d=s||this,this.set=o||$t,this.pr=u||0,(this._next=t)&&(t._prev=this)}ha(vt+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",function(t){return ft[t]=1}),ot.TweenMax=ot.TweenLite=Zt,ot.TimelineLite=ot.TimelineMax=Xt,I=new Xt({sortChildren:!1,defaults:V,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),q.stringFilter=Fb;function Ec(t){return(ye[t]||Te).map(function(t){return t()})}function Fc(){var t=Date.now(),o=[];2= 200 && request.status < 400) { - data = JSON.parse(request.responseText); - var flickr_url = self.bestFlickrUrl(data.sizes.size); - self.setFlickrImage(flickr_url) - } else { - console.error("There was an error getting the picture from Flickr") - } - }; - request.onerror = function() { - console.error("There was an error getting the picture from Flickr") - }; - request.send() - }, - setFlickrImage: function(src) { - this.image.src = src - }, - bestFlickrUrl: function(ary) { - var dict = {}; - for (var i = 0; i < ary.length; i++) { - dict[ary[i].label] = ary[i].source - } - for (var j = 0; j < FLICKR_SIZE_PREFERENCES.length; j++) { - if (FLICKR_SIZE_PREFERENCES[j] in dict) { - return dict[FLICKR_SIZE_PREFERENCES[j]] - } - } - return ary[0].source - } - }; - - function getNaturalDimensions(DOMelement) { - if (DOMelement.naturalWidth && DOMelement.naturalHeight) { - return { - width: DOMelement.naturalWidth, - height: DOMelement.naturalHeight - } - } - var img = new Image; - img.src = DOMelement.src; - return { - width: img.width, - height: img.height - } - } - - function getImageDimensions(img) { - var dimensions = { - width: getNaturalDimensions(img).width, - height: getNaturalDimensions(img).height, - aspect: function() { - return this.width / this.height - } - }; - return dimensions - } - - function addClass(element, c) { - if (element.classList) { - element.classList.add(c) - } else { - element.className += " " + c - } - } - - function removeClass(element, c) { - element.className = element.className.replace(/(\S+)\s*/g, function(w, match) { - if (match === c) { - return "" - } - return w - }).replace(/^\s+/, "") - } - - function setText(element, text) { - if (document.body.textContent) { - element.textContent = text - } else { - element.innerText = text - } - } - - function getComputedWidthAndHeight(element) { - if (window.getComputedStyle) { - return { - width: parseInt(getComputedStyle(element).width, 10), - height: parseInt(getComputedStyle(element).height, 10) - } - } else { - w = element.getBoundingClientRect().right - element.getBoundingClientRect().left; - h = element.getBoundingClientRect().bottom - element.getBoundingClientRect().top; - return { - width: parseInt(w, 10) || 0, - height: parseInt(h, 10) || 0 - } - } - } - - function viewport() { - var e = window, - a = "inner"; - if (!("innerWidth" in window)) { - a = "client"; - e = document.documentElement || document.body - } - return { - width: e[a + "Width"], - height: e[a + "Height"] - } - } - - function getPageX(e) { - var pageX; - if (e.pageX) { - pageX = e.pageX - } else if (e.touches) { - pageX = e.touches[0].pageX - } else { - pageX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft - } - return pageX - } - - function getPageY(e) { - var pageY; - if (e.pageY) { - pageY = e.pageY - } else if (e.touches) { - pageY = e.touches[0].pageY - } else { - pageY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop - } - return pageY - } - - function checkFlickr(url) { - if (url.match(/flic.kr\/.+/i)) { - return true - } - var idx = url.indexOf("flickr.com/photos/"); - if (idx == -1) { - return false - } else { - return true - } - } - - function base58Decode(encoded) { - var alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", - base = alphabet.length; - if (typeof encoded !== "string") { - throw '"base58Decode" only accepts strings.' - } - var decoded = 0; - while (encoded) { - var alphabetPosition = alphabet.indexOf(encoded[0]); - if (alphabetPosition < 0) { - throw '"base58Decode" can\'t find "' + encoded[0] + '" in the alphabet: "' + alphabet + '"' - } - var powerOf = encoded.length - 1; - decoded += alphabetPosition * Math.pow(base, powerOf); - encoded = encoded.substring(1) - } - return decoded.toString() - } - - function getLeftPercent(slider, input) { - if (typeof input === "string" || typeof input === "number") { - leftPercent = parseInt(input, 10) - } else { - var sliderRect = slider.getBoundingClientRect(); - var offset = { - top: sliderRect.top + document.body.scrollTop + document.documentElement.scrollTop, - left: sliderRect.left + document.body.scrollLeft + document.documentElement.scrollLeft - }; - var width = slider.offsetWidth; - var pageX = getPageX(input); - var relativeX = pageX - offset.left; - leftPercent = relativeX / width * 100 - } - return leftPercent - } - - function getTopPercent(slider, input) { - if (typeof input === "string" || typeof input === "number") { - topPercent = parseInt(input, 10) - } else { - var sliderRect = slider.getBoundingClientRect(); - var offset = { - top: sliderRect.top + document.body.scrollTop + document.documentElement.scrollTop, - left: sliderRect.left + document.body.scrollLeft + document.documentElement.scrollLeft - }; - var width = slider.offsetHeight; - var pageY = getPageY(input); - var relativeY = pageY - offset.top; - topPercent = relativeY / width * 100 - } - return topPercent - } - var BOOLEAN_OPTIONS = { - animate: true, - showLabels: true, - showCredits: true, - makeResponsive: true - }; - - function interpret_boolean(x) { - if (typeof x != "string") { - return Boolean(x) - } - return !(x === "false" || x === "") - } - - function JXSlider(selector, images, options) { - this.selector = selector; - var i; - this.options = { - animate: true, - showLabels: true, - showCredits: true, - makeResponsive: true, - startingPosition: "50%", - mode: "horizontal", - callback: null - }; - for (i in this.options) { - if (i in options) { - if (i in BOOLEAN_OPTIONS) { - this.options[i] = interpret_boolean(options[i]) - } else { - this.options[i] = options[i] - } - } - } - if (images.length == 2) { - if (checkFlickr(images[0].src)) { - this.imgBefore = new FlickrGraphic(images[0], this) - } else { - this.imgBefore = new Graphic(images[0], this) - } - if (checkFlickr(images[1].src)) { - this.imgAfter = new FlickrGraphic(images[1], this) - } else { - this.imgAfter = new Graphic(images[1], this) - } - } else { - console.warn("The images parameter takes two Image objects.") - } - if (this.imgBefore.credit || this.imgAfter.credit) { - this.options.showCredits = true - } else { - this.options.showCredits = false - } - } - JXSlider.prototype = { - updateSlider: function(input, animate) { - var leftPercent, rightPercent; - if (this.options.mode === "vertical") { - leftPercent = getTopPercent(this.slider, input) - } else { - leftPercent = getLeftPercent(this.slider, input) - } - leftPercent = leftPercent.toFixed(2) + "%"; - leftPercentNum = parseFloat(leftPercent); - rightPercent = 100 - leftPercentNum + "%"; - if (leftPercentNum > 0 && leftPercentNum < 100) { - removeClass(this.handle, "transition"); - removeClass(this.rightImage, "transition"); - removeClass(this.leftImage, "transition"); - if (this.options.animate && animate) { - addClass(this.handle, "transition"); - addClass(this.leftImage, "transition"); - addClass(this.rightImage, "transition") - } - if (this.options.mode === "vertical") { - this.handle.style.top = leftPercent; - this.leftImage.style.height = leftPercent; - this.rightImage.style.height = rightPercent - } else { - this.handle.style.left = leftPercent; - this.leftImage.style.width = leftPercent; - this.rightImage.style.width = rightPercent - } - this.sliderPosition = leftPercent - } - }, - getPosition: function() { - return this.sliderPosition - }, - displayLabel: function(element, labelText) { - label = document.createElement("div"); - label.className = "jx-label"; - label.setAttribute("tabindex", 0); - setText(label, labelText); - element.appendChild(label) - }, - displayCredits: function() { - credit = document.createElement("div"); - credit.className = "jx-credit"; - text = "Photo Credits:"; - if (this.imgBefore.credit) { - text += " Before " + this.imgBefore.credit - } - if (this.imgAfter.credit) { - text += " After " + this.imgAfter.credit - } - credit.innerHTML = text; - this.wrapper.appendChild(credit) - }, - setStartingPosition: function(s) { - this.options.startingPosition = s - }, - checkImages: function() { - if (getImageDimensions(this.imgBefore.image).aspect() == getImageDimensions(this.imgAfter.image).aspect()) { - return true - } else { - return false - } - }, - calculateDims: function(width, height) { - var ratio = getImageDimensions(this.imgBefore.image).aspect(); - if (width) { - height = width / ratio - } else if (height) { - width = height * ratio - } - return { - width: width, - height: height, - ratio: ratio - } - }, - responsivizeIframe: function(dims) { - if (dims.height < window.innerHeight) { - if (dims.ratio >= 1) { - this.wrapper.style.paddingTop = parseInt((window.innerHeight - dims.height) / 2) + "px" - } - } else if (dims.height > window.innerHeight) { - dims = this.calculateDims(0, window.innerHeight); - this.wrapper.style.paddingLeft = parseInt((window.innerWidth - dims.width) / 2) + "px" - } - if (this.options.showCredits) { - dims.height -= 13 - } - return dims - }, - setWrapperDimensions: function() { - var wrapperWidth = getComputedWidthAndHeight(this.wrapper).width; - var wrapperHeight = getComputedWidthAndHeight(this.wrapper).height; - var dims = this.calculateDims(wrapperWidth, wrapperHeight); - if (window.location !== window.parent.location && !this.options.makeResponsive) { - dims = this.responsivizeIframe(dims) - } - this.wrapper.style.height = parseInt(dims.height) + "px"; - this.wrapper.style.width = parseInt(dims.width) + "px" - }, - optimizeWrapper: function(maxWidth) { - var result = juxtapose.OPTIMIZATION_ACCEPTED; - if (this.imgBefore.image.naturalWidth >= maxWidth && this.imgAfter.image.naturalWidth >= maxWidth) { - this.wrapper.style.width = maxWidth + "px"; - result = juxtapose.OPTIMIZATION_WAS_CONSTRAINED - } else if (this.imgAfter.image.naturalWidth < maxWidth) { - this.wrapper.style.width = this.imgAfter.image.naturalWidth + "px" - } else { - this.wrapper.style.width = this.imgBefore.image.naturalWidth + "px" - } - this.setWrapperDimensions(); - return result - }, - _onLoaded: function() { - if (this.imgBefore && this.imgBefore.loaded === true && this.imgAfter && this.imgAfter.loaded === true) { - this.wrapper = document.querySelector(this.selector); - addClass(this.wrapper, "juxtapose"); - this.wrapper.style.width = getNaturalDimensions(this.imgBefore.image).width; - this.setWrapperDimensions(); - this.slider = document.createElement("div"); - this.slider.className = "jx-slider"; - this.wrapper.appendChild(this.slider); - if (this.options.mode != "horizontal") { - addClass(this.slider, this.options.mode) - } - this.handle = document.createElement("div"); - this.handle.className = "jx-handle"; - this.rightImage = document.createElement("div"); - this.rightImage.className = "jx-image jx-right"; - this.rightImage.appendChild(this.imgAfter.image); - this.leftImage = document.createElement("div"); - this.leftImage.className = "jx-image jx-left"; - this.leftImage.appendChild(this.imgBefore.image); - this.labCredit = document.createElement("a"); - this.labCredit.setAttribute("href", "https://juxtapose.knightlab.com"); - this.labCredit.setAttribute("target", "_blank"); - this.labCredit.setAttribute("rel", "noopener"); - this.labCredit.className = "jx-knightlab"; - this.labLogo = document.createElement("div"); - this.labLogo.className = "knightlab-logo"; - this.labCredit.appendChild(this.labLogo); - this.projectName = document.createElement("span"); - this.projectName.className = "juxtapose-name"; - setText(this.projectName, "JuxtaposeJS"); - this.labCredit.appendChild(this.projectName); - this.slider.appendChild(this.handle); - this.slider.appendChild(this.leftImage); - this.slider.appendChild(this.rightImage); - this.slider.appendChild(this.labCredit); - this.leftArrow = document.createElement("div"); - this.rightArrow = document.createElement("div"); - this.control = document.createElement("div"); - this.controller = document.createElement("div"); - this.leftArrow.className = "jx-arrow jx-left"; - this.rightArrow.className = "jx-arrow jx-right"; - this.control.className = "jx-control"; - this.controller.className = "jx-controller"; - this.controller.setAttribute("tabindex", 0); - this.controller.setAttribute("role", "slider"); - this.controller.setAttribute("aria-valuenow", 50); - this.controller.setAttribute("aria-valuemin", 0); - this.controller.setAttribute("aria-valuemax", 100); - this.handle.appendChild(this.leftArrow); - this.handle.appendChild(this.control); - this.handle.appendChild(this.rightArrow); - this.control.appendChild(this.controller); - this._init() - } - }, - _init: function() { - if (this.checkImages() === false) { - console.warn(this, "Check that the two images have the same aspect ratio for the slider to work correctly.") - } - this.updateSlider(this.options.startingPosition, false); - if (this.options.showLabels === true) { - if (this.imgBefore.label) { - this.displayLabel(this.leftImage, this.imgBefore.label) - } - if (this.imgAfter.label) { - this.displayLabel(this.rightImage, this.imgAfter.label) - } - } - if (this.options.showCredits === true) { - this.displayCredits() - } - var self = this; - window.addEventListener("resize", function() { - self.setWrapperDimensions() - }); - this.slider.addEventListener("mousedown", function(e) { - e = e || window.event; - e.preventDefault(); - self.updateSlider(e, true); - animate = true; - this.addEventListener("mousemove", function(e) { - e = e || window.event; - e.preventDefault(); - if (animate) { - self.updateSlider(e, false) - } - }); - this.addEventListener("mouseup", function(e) { - e = e || window.event; - e.preventDefault(); - e.stopPropagation(); - this.removeEventListener("mouseup", arguments.callee); - animate = false - }) - }); - this.slider.addEventListener("touchstart", function(e) { - e = e || window.event; - e.preventDefault(); - e.stopPropagation(); - self.updateSlider(e, true); - this.addEventListener("touchmove", function(e) { - e = e || window.event; - e.preventDefault(); - e.stopPropagation(); - self.updateSlider(event, false) - }) - }); - this.handle.addEventListener("keydown", function(e) { - e = e || window.event; - var key = e.which || e.keyCode; - var ariaValue = parseFloat(this.style.left); - if (key == 37) { - ariaValue = ariaValue - 1; - var leftStart = parseFloat(this.style.left) - 1; - self.updateSlider(leftStart, false); - self.controller.setAttribute("aria-valuenow", ariaValue) - } - if (key == 39) { - ariaValue = ariaValue + 1; - var rightStart = parseFloat(this.style.left) + 1; - self.updateSlider(rightStart, false); - self.controller.setAttribute("aria-valuenow", ariaValue) - } - }); - this.leftImage.addEventListener("keydown", function(event) { - var key = event.which || event.keyCode; - if (key == 13 || key == 32) { - self.updateSlider("90%", true); - self.controller.setAttribute("aria-valuenow", 90) - } - }); - this.rightImage.addEventListener("keydown", function(event) { - var key = event.which || event.keyCode; - if (key == 13 || key == 32) { - self.updateSlider("10%", true); - self.controller.setAttribute("aria-valuenow", 10) - } - }); - juxtapose.sliders.push(this); - if (this.options.callback && typeof this.options.callback == "function") { - this.options.callback(this) - } - } - }; - juxtapose.makeSlider = function(element, idx) { - if (typeof idx == "undefined") { - idx = juxtapose.sliders.length - } - var w = element; - var images = w.querySelectorAll("img"); - var options = {}; - if (w.getAttribute("data-animate")) { - options.animate = w.getAttribute("data-animate") - } - if (w.getAttribute("data-showlabels")) { - options.showLabels = w.getAttribute("data-showlabels") - } - if (w.getAttribute("data-showcredits")) { - options.showCredits = w.getAttribute("data-showcredits") - } - if (w.getAttribute("data-startingposition")) { - options.startingPosition = w.getAttribute("data-startingposition") - } - if (w.getAttribute("data-mode")) { - options.mode = w.getAttribute("data-mode") - } - if (w.getAttribute("data-makeresponsive")) { - options.mode = w.getAttribute("data-makeresponsive") - } - specificClass = "juxtapose-" + idx; - addClass(element, specificClass); - selector = "." + specificClass; - if (w.innerHTML) { - w.innerHTML = "" - } else { - w.innerText = "" - } - slider = new juxtapose.JXSlider(selector, [{ - src: images[0].src, - label: images[0].getAttribute("data-label"), - credit: images[0].getAttribute("data-credit"), - alt: images[0].alt - }, { - src: images[1].src, - label: images[1].getAttribute("data-label"), - credit: images[1].getAttribute("data-credit"), - alt: images[1].alt - }], options) - }; - juxtapose.scanPage = function() { - var elements = document.querySelectorAll(".juxtapose"); - for (var i = 0; i < elements.length; i++) { - juxtapose.makeSlider(elements[i], i) - } - }; - juxtapose.JXSlider = JXSlider; - window.juxtapose = juxtapose; - juxtapose.scanPage() -})(document, window); -!window.addEventListener && function(WindowPrototype, DocumentPrototype, ElementPrototype, addEventListener, removeEventListener, dispatchEvent, registry) { - WindowPrototype[addEventListener] = DocumentPrototype[addEventListener] = ElementPrototype[addEventListener] = function(type, listener) { - var target = this; - registry.unshift([target, type, listener, function(event) { - event.currentTarget = target; - event.preventDefault = function() { - event.returnValue = false - }; - event.stopPropagation = function() { - event.cancelBubble = true - }; - event.target = event.srcElement || target; - listener.call(target, event) - }]); - this.attachEvent("on" + type, registry[0][3]) - }; - WindowPrototype[removeEventListener] = DocumentPrototype[removeEventListener] = ElementPrototype[removeEventListener] = function(type, listener) { - for (var index = 0, register; register = registry[index]; ++index) { - if (register[0] == this && register[1] == type && register[2] == listener) { - return this.detachEvent("on" + type, registry.splice(index, 1)[0][3]) - } - } - }; - WindowPrototype[dispatchEvent] = DocumentPrototype[dispatchEvent] = ElementPrototype[dispatchEvent] = function(eventObject) { - return this.fireEvent("on" + eventObject.type, eventObject) - } -}(Window.prototype, HTMLDocument.prototype, Element.prototype, "addEventListener", "removeEventListener", "dispatchEvent", []); \ No newline at end of file diff --git a/iv/js/lenis.min.js b/iv/js/lenis.min.js deleted file mode 100644 index 50dc7be..0000000 --- a/iv/js/lenis.min.js +++ /dev/null @@ -1 +0,0 @@ -var t,e;t=this,e=function(){function t(t,e,i){return Math.max(t,Math.min(e,i))}class Animate{advance(e){if(!this.isRunning)return;let i=!1;if(this.lerp)this.value=(s=this.value,o=this.to,n=60*this.lerp,l=e,function(t,e,i){return(1-i)*t+i*e}(s,o,1-Math.exp(-n*l))),Math.round(this.value)===this.to&&(this.value=this.to,i=!0);else{this.currentTime+=e;const s=t(0,this.currentTime/this.duration,1);i=s>=1;const o=i?1:this.easing(s);this.value=this.from+(this.to-this.from)*o}var s,o,n,l;this.onUpdate?.(this.value,i),i&&this.stop()}stop(){this.isRunning=!1}fromTo(t,e,{lerp:i=.1,duration:s=1,easing:o=(t=>t),onStart:n,onUpdate:l}){this.from=this.value=t,this.to=e,this.lerp=i,this.duration=s,this.easing=o,this.currentTime=0,this.isRunning=!0,n?.(),this.onUpdate=l}}class Dimensions{constructor({wrapper:t,content:e,autoResize:i=!0,debounce:s=250}={}){this.wrapper=t,this.content=e,i&&(this.debouncedResize=function(t,e){let i;return function(){let s=arguments,o=this;clearTimeout(i),i=setTimeout((function(){t.apply(o,s)}),e)}}(this.resize,s),this.wrapper===window?window.addEventListener("resize",this.debouncedResize,!1):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),window.removeEventListener("resize",this.debouncedResize,!1)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper===window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper===window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}}class Emitter{constructor(){this.events={}}emit(t,...e){let i=this.events[t]||[];for(let t=0,s=i.length;t{this.events[t]=this.events[t]?.filter((t=>e!==t))}}off(t,e){this.events[t]=this.events[t]?.filter((t=>e!==t))}destroy(){this.events={}}}const e=100/6;class VirtualScroll{constructor(t,{wheelMultiplier:e=1,touchMultiplier:i=1}){this.element=t,this.wheelMultiplier=e,this.touchMultiplier=i,this.touchStart={x:null,y:null},this.emitter=new Emitter,window.addEventListener("resize",this.onWindowResize,!1),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,{passive:!1}),this.element.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.addEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.addEventListener("touchend",this.onTouchEnd,{passive:!1})}on(t,e){return this.emitter.on(t,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize,!1),this.element.removeEventListener("wheel",this.onWheel,{passive:!1}),this.element.removeEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.removeEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.removeEventListener("touchend",this.onTouchEnd,{passive:!1})}onTouchStart=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:t})};onTouchMove=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t,s=-(e-this.touchStart.x)*this.touchMultiplier,o=-(i-this.touchStart.y)*this.touchMultiplier;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:s,y:o},this.emitter.emit("scroll",{deltaX:s,deltaY:o,event:t})};onTouchEnd=t=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:t})};onWheel=t=>{let{deltaX:i,deltaY:s,deltaMode:o}=t;i*=1===o?e:2===o?this.windowWidth:1,s*=1===o?e:2===o?this.windowHeight:1,i*=this.wheelMultiplier,s*=this.wheelMultiplier,this.emitter.emit("scroll",{deltaX:i,deltaY:s,event:t})};onWindowResize=()=>{this.windowWidth=window.innerWidth,this.windowHeight=window.innerHeight}}return class Lenis{constructor({wrapper:t=window,content:e=document.documentElement,wheelEventsTarget:i=t,eventsTarget:s=i,smoothWheel:o=!0,syncTouch:n=!1,syncTouchLerp:l=.075,touchInertiaMultiplier:r=35,duration:h,easing:a=(t=>Math.min(1,1.001-Math.pow(2,-10*t))),lerp:c=!h&&.1,infinite:d=!1,orientation:p="vertical",gestureOrientation:u="vertical",touchMultiplier:m=1,wheelMultiplier:g=1,autoResize:v=!0,__experimental__naiveDimensions:S=!1}={}){this.__isSmooth=!1,this.__isScrolling=!1,this.__isStopped=!1,this.__isLocked=!1,this.onVirtualScroll=({deltaX:t,deltaY:e,event:i})=>{if(i.ctrlKey)return;const s=i.type.includes("touch"),o=i.type.includes("wheel");if(this.options.syncTouch&&s&&"touchstart"===i.type&&!this.isStopped&&!this.isLocked)return void this.reset();const n=0===t&&0===e,l="vertical"===this.options.gestureOrientation&&0===e||"horizontal"===this.options.gestureOrientation&&0===t;if(n||l)return;let r=i.composedPath();if(r=r.slice(0,r.indexOf(this.rootElement)),r.find((t=>{var e,i,n,l,r;return(null===(e=t.hasAttribute)||void 0===e?void 0:e.call(t,"data-lenis-prevent"))||s&&(null===(i=t.hasAttribute)||void 0===i?void 0:i.call(t,"data-lenis-prevent-touch"))||o&&(null===(n=t.hasAttribute)||void 0===n?void 0:n.call(t,"data-lenis-prevent-wheel"))||(null===(l=t.classList)||void 0===l?void 0:l.contains("lenis"))&&!(null===(r=t.classList)||void 0===r?void 0:r.contains("lenis-stopped"))})))return;if(this.isStopped||this.isLocked)return void i.preventDefault();if(this.isSmooth=this.options.syncTouch&&s||this.options.smoothWheel&&o,!this.isSmooth)return this.isScrolling=!1,void this.animate.stop();i.preventDefault();let h=e;"both"===this.options.gestureOrientation?h=Math.abs(e)>Math.abs(t)?e:t:"horizontal"===this.options.gestureOrientation&&(h=t);const a=s&&this.options.syncTouch,c=s&&"touchend"===i.type&&Math.abs(h)>5;c&&(h=this.velocity*this.options.touchInertiaMultiplier),this.scrollTo(this.targetScroll+h,Object.assign({programmatic:!1},a?{lerp:c?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}))},this.onNativeScroll=()=>{if(!this.__preventNextScrollEvent&&!this.isScrolling){const t=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.velocity=0,this.direction=Math.sign(this.animatedScroll-t),this.emit()}},window.lenisVersion="1.0.42",t!==document.documentElement&&t!==document.body||(t=window),this.options={wrapper:t,content:e,wheelEventsTarget:i,eventsTarget:s,smoothWheel:o,syncTouch:n,syncTouchLerp:l,touchInertiaMultiplier:r,duration:h,easing:a,lerp:c,infinite:d,gestureOrientation:u,orientation:p,touchMultiplier:m,wheelMultiplier:g,autoResize:v,__experimental__naiveDimensions:S},this.animate=new Animate,this.emitter=new Emitter,this.dimensions=new Dimensions({wrapper:t,content:e,autoResize:v}),this.toggleClassName("lenis",!0),this.velocity=0,this.isLocked=!1,this.isStopped=!1,this.isSmooth=n||o,this.isScrolling=!1,this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll=new VirtualScroll(s,{touchMultiplier:m,wheelMultiplier:g}),this.virtualScroll.on("scroll",this.onVirtualScroll)}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll.destroy(),this.dimensions.destroy(),this.toggleClassName("lenis",!1),this.toggleClassName("lenis-smooth",!1),this.toggleClassName("lenis-scrolling",!1),this.toggleClassName("lenis-stopped",!1),this.toggleClassName("lenis-locked",!1)}on(t,e){return this.emitter.on(t,e)}off(t,e){return this.emitter.off(t,e)}setScroll(t){this.isHorizontal?this.rootElement.scrollLeft=t:this.rootElement.scrollTop=t}resize(){this.dimensions.resize()}emit(){this.emitter.emit("scroll",this)}reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.velocity=0,this.animate.stop()}start(){this.isStopped&&(this.isStopped=!1,this.reset())}stop(){this.isStopped||(this.isStopped=!0,this.animate.stop(),this.reset())}raf(t){const e=t-(this.time||t);this.time=t,this.animate.advance(.001*e)}scrollTo(e,{offset:i=0,immediate:s=!1,lock:o=!1,duration:n=this.options.duration,easing:l=this.options.easing,lerp:r=!n&&this.options.lerp,onComplete:h,force:a=!1,programmatic:c=!0}={}){if(!this.isStopped&&!this.isLocked||a){if(["top","left","start"].includes(e))e=0;else if(["bottom","right","end"].includes(e))e=this.limit;else{let t;if("string"==typeof e?t=document.querySelector(e):(null==e?void 0:e.nodeType)&&(t=e),t){if(this.options.wrapper!==window){const t=this.options.wrapper.getBoundingClientRect();i-=this.isHorizontal?t.left:t.top}const s=t.getBoundingClientRect();e=(this.isHorizontal?s.left:s.top)+this.animatedScroll}}if("number"==typeof e){if(e+=i,e=Math.round(e),this.options.infinite?c&&(this.targetScroll=this.animatedScroll=this.scroll):e=t(0,e,this.limit),s)return this.animatedScroll=this.targetScroll=e,this.setScroll(this.scroll),this.reset(),void(null==h||h(this));if(!c){if(e===this.targetScroll)return;this.targetScroll=e}this.animate.fromTo(this.animatedScroll,e,{duration:n,easing:l,lerp:r,onStart:()=>{o&&(this.isLocked=!0),this.isScrolling=!0},onUpdate:(t,e)=>{this.isScrolling=!0,this.velocity=t-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=t,this.setScroll(this.scroll),c&&(this.targetScroll=t),e||this.emit(),e&&(this.reset(),this.emit(),null==h||h(this),this.__preventNextScrollEvent=!0,requestAnimationFrame((()=>{delete this.__preventNextScrollEvent})))}})}}}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.__experimental__naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return"horizontal"===this.options.orientation}get actualScroll(){return this.isHorizontal?this.rootElement.scrollLeft:this.rootElement.scrollTop}get scroll(){return this.options.infinite?(t=this.animatedScroll,e=this.limit,(t%e+e)%e):this.animatedScroll;var t,e}get progress(){return 0===this.limit?1:this.scroll/this.limit}get isSmooth(){return this.__isSmooth}set isSmooth(t){this.__isSmooth!==t&&(this.__isSmooth=t,this.toggleClassName("lenis-smooth",t))}get isScrolling(){return this.__isScrolling}set isScrolling(t){this.__isScrolling!==t&&(this.__isScrolling=t,this.toggleClassName("lenis-scrolling",t))}get isStopped(){return this.__isStopped}set isStopped(t){this.__isStopped!==t&&(this.__isStopped=t,this.toggleClassName("lenis-stopped",t))}get isLocked(){return this.__isLocked}set isLocked(t){this.__isLocked!==t&&(this.__isLocked=t,this.toggleClassName("lenis-locked",t))}get className(){let t="lenis";return this.isStopped&&(t+=" lenis-stopped"),this.isLocked&&(t+=" lenis-locked"),this.isScrolling&&(t+=" lenis-scrolling"),this.isSmooth&&(t+=" lenis-smooth"),t}toggleClassName(t,e){this.rootElement.classList.toggle(t,e),this.emitter.emit("className change",this)}}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Lenis=e(); diff --git a/iv/js/script.js b/iv/js/script.js deleted file mode 100644 index c0f5f70..0000000 --- a/iv/js/script.js +++ /dev/null @@ -1,205 +0,0 @@ -gsap.registerPlugin(ScrollTrigger); - -// First step -gsap.from(".hero-main-container", { - scale: 1.45, - duration: 2.8, - ease: "power3.out", -}); - -gsap.to(".overlay", { - opacity: 0, - duration: 2.8, - ease: "power3.out", - onComplete: () => { - document.body.style.overflow = "visible"; - document.body.style.overflowX = "hidden"; - }, -}); - -// Scroll Indicator -const scrollIndicator = document.querySelector(".scroll-indicator"); -const bounceTimeline = gsap.timeline({ - repeat: -1, - yoyo: true, -}); - -bounceTimeline.to(scrollIndicator, { - y: 20, - opacity: 0.6, - duration: 0.8, - ease: "power1.inOut", -}); - -// Create a timeline for better control -const tl = gsap.timeline({ - scrollTrigger: { - trigger: ".container", - scrub: 2, - pin: true, - start: "top top", - end: "+=2000", - ease: "none", - }, -}); - -// Use responsive background sizes based on screen width -const initialBackgroundSize = "1000vh"; // Always start large -const finalBackgroundSize = window.innerWidth <= 768 ? "50vh" : "28vh"; - -// Need to ensure that the scale is like this otherwise some flicks happens -tl.set(".hero-main-container", { - scale: 1.25, - backgroundSize: initialBackgroundSize, // Ensure we start from the large size -}); - -tl.to(".hero-main-container", { - scale: 1, - duration: 1, -}); - -tl.to( - ".hero-main-logo", - { - opacity: 0, - duration: 0.5, - }, - "<" // starts at the same time of previous animation -); - -tl.to( - ".hero-main-image", - { - opacity: 0, - duration: 0.9, - }, - "<+=0.5" -); - -tl.to( - ".hero-main-container", - { - backgroundSize: finalBackgroundSize, - duration: 1.5, - }, - "<+=0.2" -); - -tl.fromTo( - ".hero-text", - { - backgroundImage: `radial-gradient( - circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh - )`, - }, - { - backgroundImage: `radial-gradient(circle at 50% 3.9575vh, rgb(255, 213, 133) 0vh, - rgb(247, 77, 82) 50.011vh, - rgb(145, 42, 105) 90.0183vh, - rgba(32, 31, 66, 0) 140.599vh)`, - duration: 3, - }, - "<1.2" // starts 1.2 seconds before the previous animation -); - -tl.fromTo( - ".hero-text_2", - { - backgroundImage: `radial-gradient( - circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh - )`, - }, - { - backgroundImage: `radial-gradient(circle at 50% 3.9575vh, rgb(255, 213, 133) 0vh, - rgb(247, 77, 82) 50.011vh, - rgb(145, 42, 105) 90.0183vh, - rgba(32, 31, 66, 0) 140.599vh)`, - duration: 3, - }, - "<1.2" // starts 1.2 seconds before the previous animation -); - -// logo purple -tl.fromTo( - ".hero-text-logo", - - { - opacity: 0, - maskImage: `radial-gradient(circle at 50% 145.835%, rgb(0, 0, 0) 36.11%, rgba(0, 0, 0, 0) 68.055%)`, - }, - { - opacity: 1, - maskImage: `radial-gradient( - circle at 50% 105.594%, - rgb(0, 0, 0) 62.9372%, - rgba(0, 0, 0, 0) 81.4686% - )`, - duration: 3, - }, - "<0.2" -); - -tl.set(".hero-main-container", { opacity: 0 }); - -tl.to(".hero-1-container", { scale: 0.85, duration: 3 }, "<-=3"); - -tl.set( - ".hero-1-container", - { - maskImage: `radial-gradient(circle at 50% 16.1137vh, rgb(0, 0, 0) 96.1949vh, rgba(0, 0, 0, 0) 112.065vh)`, - }, - "<+=2.1" -); - -tl.to( - ".hero-1-container", - { - maskImage: `radial-gradient(circle at 50% -40vh, rgb(0, 0, 0) 0vh, rgba(0, 0, 0, 0) 80vh)`, - duration: 2, - }, - "<+=0.2" // Start 0.2 seconds after the mask is set -); - -tl.to( - ".hero-text-logo", - { - opacity: 0, - duration: 2, - }, - "<1.5" -); - -tl.set(".hero-1-container", { opacity: 0 }); -tl.set(".hero-2-container", { visibility: "visible" }); - -tl.to(".hero-2-container", { opacity: 1, duration: 3 }, "<+=0.2"); - -tl.fromTo( - ".hero-2-container", - { - backgroundImage: `radial-gradient( - circle at 50% 200vh, - rgba(255, 214, 135, 0) 0, - rgba(157, 47, 106, 0.5) 90vh, - rgba(157, 47, 106, 0.8) 120vh, - rgba(32, 31, 66, 0) 150vh - )`, - }, - { - backgroundImage: `radial-gradient(circle at 50% 3.9575vh, rgb(255, 213, 133) 0vh, - rgb(247, 77, 82) 50.011vh, - rgb(145, 42, 105) 90.0183vh, - rgba(32, 31, 66, 0) 140.599vh)`, - duration: 3, - }, - "<1.2" // starts 1.2 seconds before the previous animation - // he times from the start of the previous animation and since we're using 1.5s for the prev duration it's like 70% of the previous animation -); diff --git a/iv/lightbox/css/lightbox.css b/iv/lightbox/css/lightbox.css deleted file mode 100644 index ba1c98b..0000000 --- a/iv/lightbox/css/lightbox.css +++ /dev/null @@ -1,195 +0,0 @@ -body.lb-disable-scrolling { - overflow: hidden; -} - -.lightboxOverlay { - position: absolute; - top: 0; - left: 0; - z-index: 9999; - background-color: black; - opacity: 0.8; - display: none; -} - -.lightbox { - position: absolute; - left: 0; - width: 100%; - z-index: 10000; - text-align: center; - line-height: 0; - font-weight: normal; - outline: none; -} - -.lightbox .lb-image { - display: block; - height: auto; - max-width: inherit; - max-height: none; - border-radius: 3px; - - /* Image border */ - border: 4px solid white; -} - -.lightbox a img { - border: none; -} - -.lb-outerContainer { - position: relative; - width: 250px; - height: 250px; - margin: 0 auto; - border-radius: 4px; - - /* Background color behind image. - This is visible during transitions. */ - background-color: white; -} - -.lb-outerContainer:after { - content: ""; - display: table; - clear: both; -} - -.lb-loader { - position: absolute; - top: 43%; - left: 0; - height: 25%; - width: 100%; - text-align: center; - line-height: 0; -} - -.lb-cancel { - display: block; - width: 32px; - height: 32px; - margin: 0 auto; - background: url(../images/loading.gif) no-repeat; -} - -.lb-nav { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 10; -} - -.lb-container > .nav { - left: 0; -} - -.lb-nav a { - outline: none; - background-image: url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='); -} - -.lb-prev, .lb-next { - height: 100%; - cursor: pointer; - display: block; -} - -.lb-nav a.lb-prev { - width: 34%; - left: 0; - float: left; - background: url(../images/prev.png) left 48% no-repeat; - opacity: 0; - -webkit-transition: opacity 0.6s; - -moz-transition: opacity 0.6s; - -o-transition: opacity 0.6s; - transition: opacity 0.6s; -} - -.lb-nav a.lb-prev:hover { - opacity: 1; -} - -.lb-nav a.lb-next { - width: 64%; - right: 0; - float: right; - background: url(../images/next.png) right 48% no-repeat; - opacity: 0; - -webkit-transition: opacity 0.6s; - -moz-transition: opacity 0.6s; - -o-transition: opacity 0.6s; - transition: opacity 0.6s; -} - -.lb-nav a.lb-next:hover { - opacity: 1; -} - -.lb-dataContainer { - margin: 0 auto; - padding-top: 5px; - width: 100%; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} - -.lb-dataContainer:after { - content: ""; - display: table; - clear: both; -} - -.lb-data { - padding: 0 4px; - color: #ccc; -} - -.lb-data .lb-details { - width: 85%; - float: left; - text-align: left; - line-height: 1.1em; -} - -.lb-data .lb-caption { - font-size: 13px; - font-weight: bold; - line-height: 1em; -} - -.lb-data .lb-caption a { - color: #4ae; -} - -.lb-data .lb-number { - display: block; - clear: left; - padding-bottom: 1em; - font-size: 12px; - color: #999999; -} - -.lb-data .lb-close { - display: block; - float: right; - width: 30px; - height: 30px; - background: url(../images/close.png) top right no-repeat; - text-align: right; - outline: none; - opacity: 0.7; - -webkit-transition: opacity 0.2s; - -moz-transition: opacity 0.2s; - -o-transition: opacity 0.2s; - transition: opacity 0.2s; -} - -.lb-data .lb-close:hover { - cursor: pointer; - opacity: 1; -} diff --git a/iv/lightbox/css/lightbox.min.css b/iv/lightbox/css/lightbox.min.css deleted file mode 100644 index 2094499..0000000 --- a/iv/lightbox/css/lightbox.min.css +++ /dev/null @@ -1 +0,0 @@ -.lb-loader,.lightbox{text-align:center;line-height:0}body.lb-disable-scrolling{overflow:hidden}.lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:#000;opacity:.8;display:none}.lightbox{position:absolute;left:0;width:100%;z-index:10000;font-weight:400;outline:0}.lightbox .lb-image{display:block;height:auto;max-width:inherit;max-height:none;border-radius:3px;border:4px solid #fff}.lightbox a img{border:none}.lb-outerContainer{position:relative;width:250px;height:250px;margin:0 auto;border-radius:4px;background-color:#fff}.lb-loader,.lb-nav{position:absolute;left:0}.lb-outerContainer:after{content:"";display:table;clear:both}.lb-loader{top:43%;height:25%;width:100%}.lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat}.lb-nav{top:0;height:100%;width:100%;z-index:10}.lb-container>.nav{left:0}.lb-nav a{outline:0;background-image:url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)}.lb-next,.lb-prev{height:100%;cursor:pointer;display:block}.lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../images/prev.png) left 48% no-repeat;opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-prev:hover{opacity:1}.lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../images/next.png) right 48% no-repeat;opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s}.lb-nav a.lb-next:hover{opacity:1}.lb-dataContainer{margin:0 auto;padding-top:5px;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.lb-dataContainer:after{content:"";display:table;clear:both}.lb-data{padding:0 4px;color:#ccc}.lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em}.lb-data .lb-caption{font-size:13px;font-weight:700;line-height:1em}.lb-data .lb-caption a{color:#4ae}.lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999}.lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../images/close.png) top right no-repeat;text-align:right;outline:0;opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lb-data .lb-close:hover{cursor:pointer;opacity:1} \ No newline at end of file diff --git a/iv/lightbox/images/close.png b/iv/lightbox/images/close.png deleted file mode 100644 index 20baa1d..0000000 Binary files a/iv/lightbox/images/close.png and /dev/null differ diff --git a/iv/lightbox/images/close.webp b/iv/lightbox/images/close.webp deleted file mode 100644 index 2727fa8..0000000 Binary files a/iv/lightbox/images/close.webp and /dev/null differ diff --git a/iv/lightbox/images/loading.gif b/iv/lightbox/images/loading.gif deleted file mode 100644 index 5087c2a..0000000 Binary files a/iv/lightbox/images/loading.gif and /dev/null differ diff --git a/iv/lightbox/images/next.png b/iv/lightbox/images/next.png deleted file mode 100644 index 08365ac..0000000 Binary files a/iv/lightbox/images/next.png and /dev/null differ diff --git a/iv/lightbox/images/next.webp b/iv/lightbox/images/next.webp deleted file mode 100644 index 704b9bc..0000000 Binary files a/iv/lightbox/images/next.webp and /dev/null differ diff --git a/iv/lightbox/images/prev.png b/iv/lightbox/images/prev.png deleted file mode 100644 index 329fa98..0000000 Binary files a/iv/lightbox/images/prev.png and /dev/null differ diff --git a/iv/lightbox/images/prev.webp b/iv/lightbox/images/prev.webp deleted file mode 100644 index 9a0b77b..0000000 Binary files a/iv/lightbox/images/prev.webp and /dev/null differ diff --git a/iv/lightbox/js/lightbox-plus-jquery.js b/iv/lightbox/js/lightbox-plus-jquery.js deleted file mode 100644 index b98bc50..0000000 --- a/iv/lightbox/js/lightbox-plus-jquery.js +++ /dev/null @@ -1,11288 +0,0 @@ -/*! - * jQuery JavaScript Library v3.7.1 - * https://jquery.com/ - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2023-08-28T13:37Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket trac-14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 - // Plus for old WebKit, typeof returns "function" for HTML collections - // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) - return typeof obj === "function" && typeof obj.nodeType !== "number" && - typeof obj.item !== "function"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var version = "3.7.1", - - rhtmlSuffix = /HTML$/i, - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - - // Retrieve the text value of an array of DOM nodes - text: function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += jQuery.text( node ); - } - } - if ( nodeType === 1 || nodeType === 11 ) { - return elem.textContent; - } - if ( nodeType === 9 ) { - return elem.documentElement.textContent; - } - if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - isXMLDoc: function( elem ) { - var namespace = elem && elem.namespaceURI, - docElem = elem && ( elem.ownerDocument || elem ).documentElement; - - // Assume HTML when documentElement doesn't yet exist, such as inside - // document fragments. - return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), - function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -} -var pop = arr.pop; - - -var sort = arr.sort; - - -var splice = arr.splice; - - -var whitespace = "[\\x20\\t\\r\\n\\f]"; - - -var rtrimCSS = new RegExp( - "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", - "g" -); - - - - -// Note: an element does not contain itself -jQuery.contains = function( a, b ) { - var bup = b && b.parentNode; - - return a === bup || !!( bup && bup.nodeType === 1 && ( - - // Support: IE 9 - 11+ - // IE doesn't have `contains` on SVG. - a.contains ? - a.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); -}; - - - - -// CSS string/identifier serialization -// https://drafts.csswg.org/cssom/#common-serializing-idioms -var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; - -function fcssescape( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; -} - -jQuery.escapeSelector = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - - - - -var preferredDoc = document, - pushNative = push; - -( function() { - -var i, - Expr, - outermostContext, - sortInput, - hasDuplicate, - push = pushNative, - - // Local document vars - document, - documentElement, - documentIsHTML, - rbuggyQSA, - matches, - - // Instance-specific data - expando = jQuery.expando, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + - "loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + - whitespace + "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - ID: new RegExp( "^#(" + identifier + ")" ), - CLASS: new RegExp( "^\\.(" + identifier + ")" ), - TAG: new RegExp( "^(" + identifier + "|[*])" ), - ATTR: new RegExp( "^" + attributes ), - PSEUDO: new RegExp( "^" + pseudos ), - CHILD: new RegExp( - "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - bool: new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - needsContext: new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - if ( nonHex ) { - - // Strip the backslash prefix from a non-hex escape sequence - return nonHex; - } - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - return high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes; see `setDocument`. - // Support: IE 9 - 11+, Edge 12 - 18+ - // Removing the function wrapper causes a "Permission Denied" - // error in IE/Edge. - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && nodeName( elem, "fieldset" ); - }, - { dir: "parentNode", next: "legend" } - ); - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android <=4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { - apply: function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - }, - call: function( target ) { - pushNative.apply( target, slice.call( arguments, 1 ) ); - } - }; -} - -function find( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE 9 only - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - push.call( results, elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE 9 only - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - find.contains( context, elem ) && - elem.id === m ) { - - push.call( results, elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when - // strict-comparing two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( newContext != context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = jQuery.escapeSelector( nid ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties - // (see https://github.com/jquery/sizzle/issues/157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by jQuery selector module - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - return nodeName( elem, "input" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && - elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11+ - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a jQuery selector context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [node] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -function setDocument( node ) { - var subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - documentElement = document.documentElement; - documentIsHTML = !jQuery.isXMLDoc( document ); - - // Support: iOS 7 only, IE 9 - 11+ - // Older browsers didn't support unprefixed `matches`. - matches = documentElement.matches || - documentElement.webkitMatchesSelector || - documentElement.msMatchesSelector; - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors - // (see trac-13936). - // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, - // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. - if ( documentElement.msMatchesSelector && - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 9 - 11+, Edge 12 - 18+ - subWindow.addEventListener( "unload", unloadHandler ); - } - - // Support: IE <10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - documentElement.appendChild( el ).id = jQuery.expando; - return !document.getElementsByName || - !document.getElementsByName( jQuery.expando ).length; - } ); - - // Support: IE 9 only - // Check to see if it's possible to do matchesSelector - // on a disconnected node. - support.disconnectedMatch = assert( function( el ) { - return matches.call( el, "*" ); - } ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // IE/Edge don't support the :scope pseudo-class. - support.scope = assert( function() { - return document.querySelectorAll( ":scope" ); - } ); - - // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only - // Make sure the `:has()` argument is parsed unforgivingly. - // We include `*` in the test to detect buggy implementations that are - // _selectively_ forgiving (specifically when the list includes at least - // one valid selector). - // Note that we treat complete lack of support for `:has()` as if it were - // spec-compliant support, which is fine because use of `:has()` in such - // environments will fail in the qSA path and fall back to jQuery traversal - // anyway. - support.cssHas = assert( function() { - try { - document.querySelector( ":has(*,:jqfake)" ); - return false; - } catch ( e ) { - return true; - } - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter.ID = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find.ID = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter.ID = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find.ID = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find.TAG = function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else { - return context.querySelectorAll( tag ); - } - }; - - // Class - Expr.find.CLASS = function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - rbuggyQSA = []; - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - documentElement.appendChild( el ).innerHTML = - "" + - ""; - - // Support: iOS <=7 - 8 only - // Boolean attributes and "value" are not treated correctly in some XML documents - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: iOS <=7 - 8 only - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: iOS 8 only - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ - // In some of the document kinds, these selectors wouldn't work natively. - // This is probably OK but for backwards compatibility we want to maintain - // handling them through jQuery traversal in jQuery 3.x. - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE 9 - 11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ - // In some of the document kinds, these selectors wouldn't work natively. - // This is probably OK but for backwards compatibility we want to maintain - // handling them through jQuery traversal in jQuery 3.x. - documentElement.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - } ); - - if ( !support.cssHas ) { - - // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ - // Our regular `try-catch` mechanism fails to detect natively-unsupported - // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) - // in browsers that parse the `:has()` argument as a forgiving selector list. - // https://drafts.csswg.org/selectors/#relational now requires the argument - // to be parsed unforgivingly, but browsers have not yet fully adjusted. - rbuggyQSA.push( ":has" ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a === document || a.ownerDocument == preferredDoc && - find.contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b === document || b.ownerDocument == preferredDoc && - find.contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - }; - - return document; -} - -find.matches = function( expr, elements ) { - return find( expr, null, null, elements ); -}; - -find.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return find( expr, document, null, [ elem ] ).length > 0; -}; - -find.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return jQuery.contains( context, elem ); -}; - - -find.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (see trac-13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - if ( val !== undefined ) { - return val; - } - - return elem.getAttribute( name ); -}; - -find.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -jQuery.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - // - // Support: Android <=4.0+ - // Testing for detecting duplicates is unpredictable so instead assume we can't - // depend on duplicate detection in all browsers without a stable sort. - hasDuplicate = !support.sortStable; - sortInput = !support.sortStable && slice.call( results, 0 ); - sort.call( results, sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - splice.call( results, duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -jQuery.fn.uniqueSort = function() { - return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); -}; - -Expr = jQuery.expr = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - ATTR: function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) - .replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - CHILD: function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - find.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) - ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - find.error( match[ 0 ] ); - } - - return match; - }, - - PSEUDO: function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr.CHILD.test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - TAG: function( nodeNameSelector ) { - var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return nodeName( elem, expectedNodeName ); - }; - }, - - CLASS: function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + ")" + className + - "(" + whitespace + "|$)" ) ) && - classCache( className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - ATTR: function( name, operator, check ) { - return function( elem ) { - var result = find.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - if ( operator === "=" ) { - return result === check; - } - if ( operator === "!=" ) { - return result !== check; - } - if ( operator === "^=" ) { - return check && result.indexOf( check ) === 0; - } - if ( operator === "*=" ) { - return check && result.indexOf( check ) > -1; - } - if ( operator === "$=" ) { - return check && result.slice( -check.length ) === check; - } - if ( operator === "~=" ) { - return ( " " + result.replace( rwhitespace, " " ) + " " ) - .indexOf( check ) > -1; - } - if ( operator === "|=" ) { - return result === check || result.slice( 0, check.length + 1 ) === check + "-"; - } - - return false; - }; - }, - - CHILD: function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - nodeName( node, name ) : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || ( parent[ expando ] = {} ); - cache = outerCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - cache = outerCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - nodeName( node, name ) : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - outerCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - PSEUDO: function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // https://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - find.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as jQuery does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - not: markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrimCSS, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element - // (see https://github.com/jquery/sizzle/issues/299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - has: markFunction( function( selector ) { - return function( elem ) { - return find( selector, elem ).length > 0; - }; - } ), - - contains: markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // https://www.w3.org/TR/selectors/#lang-pseudo - lang: markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - find.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - target: function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - root: function( elem ) { - return elem === documentElement; - }, - - focus: function( elem ) { - return elem === safeActiveElement() && - document.hasFocus() && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - enabled: createDisabledPseudo( false ), - disabled: createDisabledPseudo( true ), - - checked: function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - return ( nodeName( elem, "input" ) && !!elem.checked ) || - ( nodeName( elem, "option" ) && !!elem.selected ); - }, - - selected: function( elem ) { - - // Support: IE <=11+ - // Accessing the selectedIndex property - // forces the browser to treat the default option as - // selected when in an optgroup. - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - empty: function( elem ) { - - // https://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - parent: function( elem ) { - return !Expr.pseudos.empty( elem ); - }, - - // Element/input types - header: function( elem ) { - return rheader.test( elem.nodeName ); - }, - - input: function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - button: function( elem ) { - return nodeName( elem, "input" ) && elem.type === "button" || - nodeName( elem, "button" ); - }, - - text: function( elem ) { - var attr; - return nodeName( elem, "input" ) && elem.type === "text" && - - // Support: IE <10 only - // New HTML5 attribute values (e.g., "search") appear - // with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - first: createPositionalPseudo( function() { - return [ 0 ]; - } ), - - last: createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - even: createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - odd: createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - lt: createPositionalPseudo( function( matchIndexes, length, argument ) { - var i; - - if ( argument < 0 ) { - i = argument + length; - } else if ( argument > length ) { - i = length; - } else { - i = argument; - } - - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - gt: createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos.nth = Expr.pseudos.eq; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -function tokenize( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rleadingCombinator.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrimCSS, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - if ( parseOnly ) { - return soFar.length; - } - - return soFar ? - find.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -} - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - if ( skip && nodeName( elem, skip ) ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = outerCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - outerCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - find( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, matcherOut, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || - multipleContexts( selector || "*", - context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems; - - if ( matcher ) { - - // If we have a postFinder, or filtered seed, or non-seed postFilter - // or preexisting results, - matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results; - - // Find primary matches - matcher( matcherIn, matcherOut, context, xml ); - } else { - matcherOut = matcherIn; - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element - // (see https://github.com/jquery/sizzle/issues/299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrimCSS, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find.TAG( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: iOS <=7 - 9 only - // Tolerate NodeList properties (IE: "length"; Safari: ) matching - // elements by id. (see trac-14142) - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - push.call( results, elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - jQuery.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -function compile( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -} - -/** - * A low-level selection function that works with jQuery's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with jQuery selector compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -function select( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find.ID( - token.matches[ 0 ].replace( runescape, funescape ), - context - ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && - testContext( context.parentNode ) || context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -} - -// One-time assignments - -// Support: Android <=4.0 - 4.1+ -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Initialize against the default document -setDocument(); - -// Support: Android <=4.0 - 4.1+ -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -jQuery.find = find; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.unique = jQuery.uniqueSort; - -// These have always been private, but they used to be documented as part of -// Sizzle so let's maintain them for now for backwards compatibility purposes. -find.compile = compile; -find.select = select; -find.setDocument = setDocument; -find.tokenize = tokenize; - -find.escape = jQuery.escapeSelector; -find.getText = jQuery.text; -find.isXML = jQuery.isXMLDoc; -find.selectors = jQuery.expr; -find.support = jQuery.support; -find.uniqueSort = jQuery.uniqueSort; - - /* eslint-enable */ - -} )(); - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (trac-9521) - // Strict HTML recognition (trac-11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to jQuery#find - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.error ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the error, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getErrorHook ) { - process.error = jQuery.Deferred.getErrorHook(); - - // The deprecated alias of the above. While the name suggests - // returning the stack, not an error instance, jQuery just passes - // it directly to `console.warn` so both will work; an instance - // just better cooperates with source maps. - } else if ( jQuery.Deferred.getStackHook ) { - process.error = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the primary Deferred - primary = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - primary.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( primary.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return primary.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); - } - - return primary.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error -// captured before the async barrier to get the original error cause -// which may otherwise be hidden. -jQuery.Deferred.exceptionHook = function( error, asyncError ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, - error.stack, asyncError ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See trac-6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (trac-9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see trac-8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (trac-14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (trac-11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (trac-14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (trac-13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (trac-12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (trac-13208) - // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (trac-13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", true ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, isSetup ) { - - // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add - if ( !isSetup ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - if ( !saved ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - this[ type ](); - result = dataPriv.get( this, type ); - dataPriv.set( this, type, false ); - - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - - return result; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering - // the native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved ) { - - // ...and capture the result - dataPriv.set( this, type, jQuery.event.trigger( - saved[ 0 ], - saved.slice( 1 ), - this - ) ); - - // Abort handling of the native event by all jQuery handlers while allowing - // native handlers on the same element to run. On target, this is achieved - // by stopping immediate propagation just on the jQuery event. However, - // the native event is re-wrapped by a jQuery one on each level of the - // propagation so the only way to stop it for jQuery is to stop it for - // everyone via native `stopPropagation()`. This is not a problem for - // focus/blur which don't bubble, but it does also stop click on checkboxes - // and radios. We accept this limitation. - event.stopPropagation(); - event.isImmediatePropagationStopped = returnTrue; - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (trac-504, trac-13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - - function focusMappedHandler( nativeEvent ) { - if ( document.documentMode ) { - - // Support: IE 11+ - // Attach a single focusin/focusout handler on the document while someone wants - // focus/blur. This is because the former are synchronous in IE while the latter - // are async. In other browsers, all those handlers are invoked synchronously. - - // `handle` from private data would already wrap the event, but we need - // to change the `type` here. - var handle = dataPriv.get( this, "handle" ), - event = jQuery.event.fix( nativeEvent ); - event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; - event.isSimulated = true; - - // First, handle focusin/focusout - handle( nativeEvent ); - - // ...then, handle focus/blur - // - // focus/blur don't bubble while focusin/focusout do; simulate the former by only - // invoking the handler at the lower level. - if ( event.target === event.currentTarget ) { - - // The setup part calls `leverageNative`, which, in turn, calls - // `jQuery.event.add`, so event handle will already have been set - // by this point. - handle( event ); - } - } else { - - // For non-IE browsers, attach a single capturing handler on the document - // while someone wants focusin/focusout. - jQuery.event.simulate( delegateType, nativeEvent.target, - jQuery.event.fix( nativeEvent ) ); - } - } - - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - var attaches; - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, true ); - - if ( document.documentMode ) { - - // Support: IE 9 - 11+ - // We use the same native handler for focusin & focus (and focusout & blur) - // so we need to coordinate setup & teardown parts between those events. - // Use `delegateType` as the key as `type` is already used by `leverageNative`. - attaches = dataPriv.get( this, delegateType ); - if ( !attaches ) { - this.addEventListener( delegateType, focusMappedHandler ); - } - dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); - } else { - - // Return false to allow normal processing in the caller - return false; - } - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - teardown: function() { - var attaches; - - if ( document.documentMode ) { - attaches = dataPriv.get( this, delegateType ) - 1; - if ( !attaches ) { - this.removeEventListener( delegateType, focusMappedHandler ); - dataPriv.remove( this, delegateType ); - } else { - dataPriv.set( this, delegateType, attaches ); - } - } else { - - // Return false to indicate standard teardown should be applied - return false; - } - }, - - // Suppress native focus or blur if we're currently inside - // a leveraged native-event stack - _default: function( event ) { - return dataPriv.get( event.target, type ); - }, - - delegateType: delegateType - }; - - // Support: Firefox <=44 - // Firefox doesn't have focus(in | out) events - // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 - // - // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 - // focus(in | out) events fire after focus & blur events, - // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order - // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 - // - // Support: IE 9 - 11+ - // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, - // attach a single handler for both events in IE. - jQuery.event.special[ delegateType ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - dataHolder = document.documentMode ? this : doc, - attaches = dataPriv.get( dataHolder, delegateType ); - - // Support: IE 9 - 11+ - // We use the same native handler for focusin & focus (and focusout & blur) - // so we need to coordinate setup & teardown parts between those events. - // Use `delegateType` as the key as `type` is already used by `leverageNative`. - if ( !attaches ) { - if ( document.documentMode ) { - this.addEventListener( delegateType, focusMappedHandler ); - } else { - doc.addEventListener( type, focusMappedHandler, true ); - } - } - dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - dataHolder = document.documentMode ? this : doc, - attaches = dataPriv.get( dataHolder, delegateType ) - 1; - - if ( !attaches ) { - if ( document.documentMode ) { - this.removeEventListener( delegateType, focusMappedHandler ); - } else { - doc.removeEventListener( type, focusMappedHandler, true ); - } - dataPriv.remove( dataHolder, delegateType ); - } else { - dataPriv.set( dataHolder, delegateType, attaches ); - } - } - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (trac-8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Re-enable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - - // Unwrap a CDATA section containing script contents. This shouldn't be - // needed as in XML documents they're already not visible when - // inspecting element contents and in HTML documents they have no - // meaning but we're preserving that logic for backwards compatibility. - // This will be removed completely in 4.0. See gh-4904. - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew jQuery#find here for performance reasons: - // https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var rcustomProp = /^--/; - - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (trac-8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - // - // Support: Firefox 70+ - // Only Firefox includes border widths - // in computed dimensions. (gh-4529) - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "box-sizing:content-box;border:1px solid"; - - // Support: Chrome 86+ - // Height set through cssText does not get applied. - // Computed height then comes back as 0. - tr.style.height = "1px"; - trChild.style.height = "9px"; - - // Support: Android 8 Chrome 86+ - // In our bodyBackground.html iframe, - // display for all div elements is set to "inline", - // which causes a problem only in Android 8 Chrome 86. - // Ensuring the div is `display: block` - // gets around this issue. - trChild.style.display = "block"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + - parseInt( trStyle.borderTopWidth, 10 ) + - parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - isCustomProp = rcustomProp.test( name ), - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, trac-12537) - // .css('--customProperty) (gh-3144) - if ( computed ) { - - // Support: IE <=9 - 11+ - // IE only supports `"float"` in `getPropertyValue`; in computed styles - // it's only available as `"cssFloat"`. We no longer modify properties - // sent to `.css()` apart from camelCasing, so we need to check both. - // Normally, this would create difference in behavior: if - // `getPropertyValue` returns an empty string, the value returned - // by `.css()` would be `undefined`. This is usually the case for - // disconnected elements. However, in IE even disconnected elements - // with no styles return `"none"` for `getPropertyValue( "float" )` - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( isCustomProp && ret ) { - - // Support: Firefox 105+, Chrome <=105+ - // Spec requires trimming whitespace for custom properties (gh-4926). - // Firefox only trims leading whitespace. Chrome just collapses - // both leading & trailing whitespace to a single space. - // - // Fall back to `undefined` if empty string returned. - // This collapses a missing definition with property defined - // and set to an empty string but there's no standard API - // allowing us to differentiate them without a performance penalty - // and returning `undefined` aligns with older jQuery. - // - // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED - // as whitespace while CSS does not, but this is not a problem - // because CSS preprocessing replaces them with U+000A LINE FEED - // (which *is* CSS whitespace) - // https://www.w3.org/TR/css-syntax-3/#input-preprocessing - ret = ret.replace( rtrimCSS, "$1" ) || undefined; - } - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0, - marginDelta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - // Count margin delta separately to only add it after scroll gutter adjustment. - // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). - if ( box === "margin" ) { - marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta + marginDelta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - animationIterationCount: true, - aspectRatio: true, - borderImageSlice: true, - columnCount: true, - flexGrow: true, - flexShrink: true, - fontWeight: true, - gridArea: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnStart: true, - gridRow: true, - gridRowEnd: true, - gridRowStart: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - scale: true, - widows: true, - zIndex: true, - zoom: true, - - // SVG-related - fillOpacity: true, - floodOpacity: true, - stopOpacity: true, - strokeMiterlimit: true, - strokeOpacity: true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (trac-7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug trac-9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (trac-7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // Use proper attribute retrieval (trac-12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classNames, cur, curValue, className, i, finalValue; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classNames = classesToArray( value ); - - if ( classNames.length ) { - return this.each( function() { - curValue = getClass( this ); - cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - if ( cur.indexOf( " " + className + " " ) < 0 ) { - cur += className + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - this.setAttribute( "class", finalValue ); - } - } - } ); - } - - return this; - }, - - removeClass: function( value ) { - var classNames, cur, curValue, className, i, finalValue; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classNames = classesToArray( value ); - - if ( classNames.length ) { - return this.each( function() { - curValue = getClass( this ); - - // This expression is here for better compressibility (see addClass) - cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - - // Remove *all* instances - while ( cur.indexOf( " " + className + " " ) > -1 ) { - cur = cur.replace( " " + className + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - this.setAttribute( "class", finalValue ); - } - } - } ); - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var classNames, className, i, self, - type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - classNames = classesToArray( value ); - - return this.each( function() { - if ( isValidValue ) { - - // Toggle individual class names - self = jQuery( this ); - - for ( i = 0; i < classNames.length; i++ ) { - className = classNames[ i ]; - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (trac-14686, trac-14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (trac-2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, parserErrorElem; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} - - parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; - if ( !xml || parserErrorElem ) { - jQuery.error( "Invalid XML: " + ( - parserErrorElem ? - jQuery.map( parserErrorElem.childNodes, function( el ) { - return el.textContent; - } ).join( "\n" ) : - data - ) ); - } - return xml; -}; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (trac-9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (trac-6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ).filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ).map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // trac-7653, trac-8125, trac-8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - -originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes trac-9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (trac-10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket trac-12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // trac-9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script but not if jsonp - if ( !isSuccess && - jQuery.inArray( "script", s.dataTypes ) > -1 && - jQuery.inArray( "json", s.dataTypes ) < 0 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (trac-11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // trac-1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see trac-8605, trac-14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // trac-14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - - - - \ No newline at end of file diff --git a/p2dfx.html b/p2dfx.html deleted file mode 100644 index 7f4d5ba..0000000 --- a/p2dfx.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - - - - - - - - Project2DFX for GTA III, VC, SA and IV - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-

About Project2DFX

-

Project2DFX is a set of plugins for GTA III, Vice City, San Andreas, Liberty City Stories, - Vice City Stories and GTA IV: The Complete Edition which - adds LOD - corona effect to a game map, making LOD-world look a lot better. -
It also includes an open source - Limit - Adjuster to enhance and improve certain game limits. -

-
-
-
-
-
- - -
-
- -
-
- - -
-
-
-
-
-

Contact Us

- -
-
-
-
-
- - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..c498f5b --- /dev/null +++ b/package.json @@ -0,0 +1,49 @@ +{ + "name": "fusionfix", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@astrojs/svelte": "^7.1.1", + "@biomejs/biome": "^2.2.4", + "@fontsource/iceland": "^5.2.8", + "@fontsource/lora": "^5.2.8", + "@fontsource/montserrat": "^5.2.8", + "@fontsource/pacifico": "^5.2.7", + "@fontsource/warnes": "^5.2.8", + "@keystatic/astro": "^5.0.6", + "@keystatic/core": "^0.5.48", + "@tabler/icons": "^3.35.0", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/vite": "^4.1.13", + "@tanstack/table-core": "^8.21.3", + "astro": "^5.13.9", + "astro-icon": "^1.1.5", + "export-to-csv": "^1.4.0", + "github-buttons": "^2.29.1", + "gsap": "^3.13.0", + "lightgallery": "2.9.0-beta.1", + "react": "^19.1.1", + "react-dom": "^19.1.1", + "sharp": "^0.34.4", + "svelte": "^5.39.5", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.13", + "typescript": "^5.9.2" + }, + "devDependencies": { + "@iconify/svelte": "^5.0.2", + "@internationalized/date": "^3.9.0", + "@lucide/svelte": "^0.544.0", + "@tailwindcss/typography": "^0.5.18", + "bits-ui": "^2.11.1", + "clsx": "^2.1.1", + "tailwind-variants": "^3.1.1", + "tw-animate-css": "^1.3.8" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..bd8ba49 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7755 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@astrojs/svelte': + specifier: ^7.1.1 + version: 7.1.1(@types/node@24.5.2)(astro@5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(jiti@2.5.1)(lightningcss@1.30.1)(svelte@5.39.5)(typescript@5.9.2)(yaml@2.8.1) + '@biomejs/biome': + specifier: ^2.2.4 + version: 2.2.4 + '@fontsource/iceland': + specifier: ^5.2.8 + version: 5.2.8 + '@fontsource/lora': + specifier: ^5.2.8 + version: 5.2.8 + '@fontsource/montserrat': + specifier: ^5.2.8 + version: 5.2.8 + '@fontsource/pacifico': + specifier: ^5.2.7 + version: 5.2.7 + '@fontsource/warnes': + specifier: ^5.2.8 + version: 5.2.8 + '@keystatic/astro': + specifier: ^5.0.6 + version: 5.0.6(@keystatic/core@0.5.48(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(astro@5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@keystatic/core': + specifier: ^0.5.48 + version: 0.5.48(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tabler/icons': + specifier: ^3.35.0 + version: 3.35.0 + '@tailwindcss/forms': + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@4.1.13) + '@tailwindcss/vite': + specifier: ^4.1.13 + version: 4.1.13(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + '@tanstack/table-core': + specifier: ^8.21.3 + version: 8.21.3 + astro: + specifier: ^5.13.9 + version: 5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + astro-icon: + specifier: ^1.1.5 + version: 1.1.5 + export-to-csv: + specifier: ^1.4.0 + version: 1.4.0 + github-buttons: + specifier: ^2.29.1 + version: 2.29.1 + gsap: + specifier: ^3.13.0 + version: 3.13.0 + lightgallery: + specifier: 2.9.0-beta.1 + version: 2.9.0-beta.1 + react: + specifier: ^19.1.1 + version: 19.1.1 + react-dom: + specifier: ^19.1.1 + version: 19.1.1(react@19.1.1) + sharp: + specifier: ^0.34.4 + version: 0.34.4 + svelte: + specifier: ^5.39.5 + version: 5.39.5 + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + tailwindcss: + specifier: ^4.1.13 + version: 4.1.13 + typescript: + specifier: ^5.9.2 + version: 5.9.2 + devDependencies: + '@iconify/svelte': + specifier: ^5.0.2 + version: 5.0.2(svelte@5.39.5) + '@internationalized/date': + specifier: ^3.9.0 + version: 3.9.0 + '@lucide/svelte': + specifier: ^0.544.0 + version: 0.544.0(svelte@5.39.5) + '@tailwindcss/typography': + specifier: ^0.5.18 + version: 0.5.18(tailwindcss@4.1.13) + bits-ui: + specifier: ^2.11.1 + version: 2.11.1(@internationalized/date@3.9.0)(svelte@5.39.5) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + tailwind-variants: + specifier: ^3.1.1 + version: 3.1.1(tailwind-merge@3.3.1)(tailwindcss@4.1.13) + tw-animate-css: + specifier: ^1.3.8 + version: 1.3.8 + +packages: + + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@astrojs/compiler@2.13.0': + resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} + + '@astrojs/internal-helpers@0.7.2': + resolution: {integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==} + + '@astrojs/markdown-remark@6.3.6': + resolution: {integrity: sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==} + + '@astrojs/prism@3.3.0': + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@astrojs/svelte@7.1.1': + resolution: {integrity: sha512-DgaW4iGi8wT/qQifJLt5aBeDEqQCufz/hCGdo79x2z0csW1OOe/F6nXo915THpt2a90sMlkyvu7hktlnl8NJkg==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + astro: ^5.0.0 + svelte: ^5.1.16 + typescript: ^5.3.3 + + '@astrojs/telemetry@3.3.0': + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@biomejs/biome@2.2.4': + resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.2.4': + resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.2.4': + resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.2.4': + resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.2.4': + resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.2.4': + resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.2.4': + resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.2.4': + resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.2.4': + resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@braintree/sanitize-url@6.0.4': + resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==} + + '@capsizecss/unpack@2.4.0': + resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} + + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.13.5': + resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.24.8': + resolution: {integrity: sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@fontsource/iceland@5.2.8': + resolution: {integrity: sha512-UB1LoJlHFy9CaccxFgLOId7713Uf9irFP+WIyqsgVXk71fqnu0BSJlWYGbLWsaNPWBHSm6VzhogQ0PSyFWO7BA==} + + '@fontsource/lora@5.2.8': + resolution: {integrity: sha512-AQlfsHw4TP1x/eb2IZ6VjQ70ctKa39m9JN9A4zlvDOeKYLrCs+GaYIEQ86Y6YfSPGHn01bErXkRcyktOW0LOPQ==} + + '@fontsource/montserrat@5.2.8': + resolution: {integrity: sha512-xTjLxSbSfCycDB0pwmNsfNvdfWPaDaRQ2LC6yt/ZI7SdvXG52zHnzNYC/09mzuAuWNJyShkteutfCoDgym56hQ==} + + '@fontsource/pacifico@5.2.7': + resolution: {integrity: sha512-L+YiZn3Lb8rVN15zcLlti62doVxQeFpS+dJmulKkFrUo3dZIAxZLHwXoKaaHm+VVcOTrT/mmKCZqGOIWVmFV2w==} + + '@fontsource/warnes@5.2.8': + resolution: {integrity: sha512-zkb7E1ePzN7GqS/IXKdjVAhPwmq9Utf4RFYeuf88UvV0ByLSBfQTLmP1IM5jwnhWqw6omSyHUtHLx98p2juamw==} + + '@formatjs/ecma402-abstract@2.3.4': + resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} + + '@formatjs/fast-memoize@2.2.7': + resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} + + '@formatjs/icu-messageformat-parser@2.11.2': + resolution: {integrity: sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==} + + '@formatjs/icu-skeleton-parser@1.8.14': + resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} + + '@formatjs/intl-localematcher@0.6.1': + resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@iconify/svelte@5.0.2': + resolution: {integrity: sha512-1iWUT+1veS/QOAzKDG0NPgBtJYGoJqEPwF97voTm8jw6PQ6yU0hL73lEwFoTGMrZmatLvh9cjRBmeSHHaltmrg==} + peerDependencies: + svelte: '>4.0.0' + + '@iconify/tools@4.1.3': + resolution: {integrity: sha512-guPw9jvkrCCGFUvPr+NgUcQIpQcIll38NQzUzrEMK/1vrDmeJ9jstsp/Dx5LIP2na9BUBLHKOKXA6cERTpnGFw==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@internationalized/date@3.9.0': + resolution: {integrity: sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg==} + + '@internationalized/message@3.1.8': + resolution: {integrity: sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==} + + '@internationalized/number@3.6.5': + resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} + + '@internationalized/string@3.2.7': + resolution: {integrity: sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@keystar/ui@0.7.19': + resolution: {integrity: sha512-8yXXli2w6rzK4wYQ1LNjznV2v08SkKHdLDWCOaCffuQkULZRGU7oRZJIYTEqCRy8b6K3frbIuhqyRcKzEv+xgA==} + peerDependencies: + next: '>=14' + react: ^18.2.0 || ^19.0.0 + react-dom: ^18.2.0 || ^19.0.0 + peerDependenciesMeta: + next: + optional: true + + '@keystatic/astro@5.0.6': + resolution: {integrity: sha512-kUBXkXpE9/JH2fFx0in+tym6YVIDoHgxW9J9WHOJ+uwbpJJcUH6IRqVyutgZr8DO/UDaAhoZc41zcIUyWz0Trw==} + peerDependencies: + '@keystatic/core': '*' + astro: 2 || 3 || 4 || 5 + react: ^18.2.0 || ^19.0.0 + react-dom: ^18.2.0 || ^19.0.0 + + '@keystatic/core@0.5.48': + resolution: {integrity: sha512-ar4zHMsG+YpQjIj2JT8utvAyyUN57eXTz0ibAr1MPkhTo75vQvgEzVHfBR65RZHJzmEix6iGbUYq3iJwPcVNfQ==} + peerDependencies: + react: ^18.2.0 || ^19.0.0 + react-dom: ^18.2.0 || ^19.0.0 + + '@lucide/svelte@0.544.0': + resolution: {integrity: sha512-9f9O6uxng2pLB01sxNySHduJN3HTl5p0HDu4H26VR51vhZfiMzyOMe9Mhof3XAk4l813eTtl+/DYRvGyoRR+yw==} + peerDependencies: + svelte: ^5 + + '@markdoc/markdoc@0.4.0': + resolution: {integrity: sha512-fSh4P3Y4E7oaKYc2oNzSIJVPDto7SMzAuQN1Iyx53UxzleA6QzRdNWRxmiPqtVDaDi5dELd2yICoG91csrGrAw==} + engines: {node: '>=14.7.0'} + peerDependencies: + '@types/react': '*' + react: '*' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@react-aria/actiongroup@3.7.20': + resolution: {integrity: sha512-a70hN9dntg/m5y7x6vtFKv9zjafpje2mI79aUf5+ujnlJbMOKy/x9ETIby2jOy2W22GJnddPispY9s7QK6VO9Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/breadcrumbs@3.5.28': + resolution: {integrity: sha512-6S3QelpajodEzN7bm49XXW5gGoZksK++cl191W0sexq/E5hZHAEA9+CFC8pL3px13ji7qHGqKAxOP4IUVBdVpQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/button@3.14.1': + resolution: {integrity: sha512-Ug06unKEYVG3OF6zKmpVR7VfLzpj7eJVuFo3TCUxwFJG7DI28pZi2TaGWnhm7qjkxfl1oz0avQiHVfDC99gSuw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/calendar@3.9.1': + resolution: {integrity: sha512-dCJliRIi3x3VmAZkJDNTZddq0+QoUX9NS7GgdqPPYcJIMbVPbyLWL61//0SrcCr3MuSRCoI1eQZ8PkQe/2PJZQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/checkbox@3.16.1': + resolution: {integrity: sha512-YcG3QhuGIwqPHo4GVGVmwxPM5Ayq9CqYfZjla/KTfJILPquAJ12J7LSMpqS/Z5TlMNgIIqZ3ZdrYmjQlUY7eUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/combobox@3.13.2': + resolution: {integrity: sha512-PNyqlaM19A+lKX9hwqkKTXvWDilCKaRH2RdrB/C5AfmGi3bh/IKsu66c8ohgadXB2AIdJB36EOOm3hNh8G9DqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/datepicker@3.15.1': + resolution: {integrity: sha512-RfUOvsupON6E5ZELpBgb9qxsilkbqwzsZ78iqCDTVio+5kc5G9jVeHEIQOyHnavi/TmJoAnbmmVpEbE6M9lYJQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/dialog@3.5.30': + resolution: {integrity: sha512-fiodaeMSTiC4qKNwnCLbNykyvfcxuz/PiU/pBNhWYd4lUrX1TauBQb0++o5/K6OHt8iB+A7/LSHRbPtyOSWE9g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/dnd@3.11.2': + resolution: {integrity: sha512-xaIUV0zPtUTLIBoE7qlGFPfRTfyDJT78fDzawYq6FwZcjgrl8X408UDCUaKk6xSJRh9UjNn78hil1WDYTLFNWA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/form@3.1.1': + resolution: {integrity: sha512-PjZC25UgH5orit9p56Ymbbo288F3eaDd3JUvD8SG+xgx302HhlFAOYsQLLAb4k4H03bp0gWtlUEkfX6KYcE1Tw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/grid@3.14.4': + resolution: {integrity: sha512-l1FLQNKnoHpY4UClUTPUV0AqJ5bfAULEE0ErY86KznWLd+Hqzo7mHLqqDV02CDa/8mIUcdoax/MrYYIbPDlOZA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/gridlist@3.14.0': + resolution: {integrity: sha512-8NWDaUbPe6ujI+kSvDqr2onPYWlBXiaLCQ6nfYOo+GFKxeVCsv4a2I5HAAoGf9THNQ5b8b8kJa+M0xyL1Z71XA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/i18n@3.12.12': + resolution: {integrity: sha512-JN6p+Xc6Pu/qddGRoeYY6ARsrk2Oz7UiQc9nLEPOt3Ch+blJZKWwDjcpo/p6/wVZdD/2BgXS7El6q6+eMg7ibw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/label@3.7.21': + resolution: {integrity: sha512-8G+059/GZahgQbrhMcCcVcrjm7W+pfzrypH/Qkjo7C1yqPGt6geeFwWeOIbiUZoI0HD9t9QvQPryd6m46UC7Tg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/landmark@3.0.6': + resolution: {integrity: sha512-dMPBqJWTDAr3Lj5hA+XYDH2PWqtFghYy+y7iq7K5sK/96cub8hZEUjhwn+HGgHsLerPp0dWt293nKupAJnf4Vw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/link@3.8.5': + resolution: {integrity: sha512-klhV4roPp5MLRXJv1N+7SXOj82vx4gzVpuwQa3vouA+YI1my46oNzwgtkLGSTvE9OvDqYzPDj2YxFYhMywrkuw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/listbox@3.14.8': + resolution: {integrity: sha512-uRgbuD9afFv0PDhQ/VXCmAwlYctIyKRzxztkqp1p/1yz/tn/hs+bG9kew9AI02PtlRO1mSc+32O+mMDXDer8hA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/live-announcer@3.4.4': + resolution: {integrity: sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==} + + '@react-aria/menu@3.19.2': + resolution: {integrity: sha512-WzDLW2MotL0L5/LEwc5oGgISf2ODuw4FnRpF0Zk+J4tKFfC88odvKz848ubBvThRXuXEvL0BHY+WqtM+j9fn3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/meter@3.4.26': + resolution: {integrity: sha512-BI+Ri0dkhx9jjf6yPbOLl69M6808Fi08KNEmserMEapy++5usB/8krh9ARuR0GZYUPFOcny0Ml0or/HqamyFvw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/numberfield@3.12.1': + resolution: {integrity: sha512-3KjxGgWiF4GRvIyqrE3nCndkkEJ68v86y0nx89TpAjdzg7gCgdXgU2Lr4BhC/xImrmlqCusw0IBUMhsEq9EQWA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/overlays@3.29.1': + resolution: {integrity: sha512-Yz92XNPnbrTnxrvNrY/fXJ3iWaYNrj0q24ddvZNNKDcWak0S1/mQeUwNb+PwS2AryhFU5VQqKz5rNsM96TKmPQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/progress@3.4.26': + resolution: {integrity: sha512-EJBzbE0IjXrJ19ofSyNKDnqC70flUM0Z+9heMRPLi6Uz01o6Uuz9tjyzmoPnd9Q1jnTT7dCl7ydhdYTGsWFcUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/radio@3.12.1': + resolution: {integrity: sha512-feZdMJyNp+UX03seIX0W6gdUk8xayTY+U0Ct61eci6YXzyyZoL2PVh49ojkbyZ2UZA/eXeygpdF5sgQrKILHCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/searchfield@3.8.8': + resolution: {integrity: sha512-Yn6esCYEym3Cwrh/OZt6o/RFzsG2zyCAEZf7BhWk6NWUvP6aPwHgoSDVSjDN6YnnPn4yMqkqPnZulHV4+MvE/w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/select@3.16.2': + resolution: {integrity: sha512-MwsOJ6FfPxzrLP6spnYg2SUeGKNm4m5vyH6GebecLxTO1ee7/YyTNP1xkrQTqPMP9xx6uqhzFLFuCym2b6ripA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/selection@3.25.1': + resolution: {integrity: sha512-HG+k3rDjuhnXPdVyv9CKiebee2XNkFYeYZBxEGlK3/pFVBzndnc8BXNVrXSgtCHLs2d090JBVKl1k912BPbj0Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/separator@3.4.12': + resolution: {integrity: sha512-rvFCPdOPMQKY/Bpv2jNzXtetCuBLYSRCvpzam1LpMaEgwau5yECbId66+M2UX/cscPccKNU537SM6ei2j7RGog==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/spinbutton@3.6.18': + resolution: {integrity: sha512-dnmh7sNsprhYTpqCJhcuc9QJ9C/IG/o9TkgW5a9qcd2vS+dzEgqAiJKIMbJFG9kiJymv2NwIPysF12IWix+J3A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/switch@3.7.7': + resolution: {integrity: sha512-auV3g1qh+d/AZk7Idw2BOcYeXfCD9iDaiGmlcLJb9Eaz4nkq8vOkQxIXQFrn9Xhb+PfQzmQYKkt5N6P2ZNsw/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/table@3.17.7': + resolution: {integrity: sha512-FxXryGTxePgh8plIxlOMwXdleGWjK52vsmbRoqz66lTIHMUMLTmmm+Y0V3lBOIoaW1rxvKcolYgS79ROnbDYBw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/tabs@3.10.7': + resolution: {integrity: sha512-iA1M6H+N+9GggsEy/6MmxpMpeOocwYgFy2EoEl3it24RVccY6iZT4AweJq96s5IYga5PILpn7VVcpssvhkPgeA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/tag@3.7.1': + resolution: {integrity: sha512-VpF26ez+QmEzTK8E9tXZ4cofa1wocjnIo/Bd1LCXgLCytnHAkYGxeIRm5QbznJ0aF/9UgR1QtMqhyRrCZg9QqA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/textfield@3.18.1': + resolution: {integrity: sha512-8yCoirnQzbbQgdk5J5bqimEu3GhHZ9FXeMHez1OF+H+lpTwyTYQ9XgioEN3HKnVUBNEufG4lYkQMxTKJdq1v9g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/toast@3.0.2': + resolution: {integrity: sha512-iaiHDE1CKYM3BbNEp3A2Ed8YAlpXUGyY6vesKISdHEZ2lJ7r+1hbcFoTNdG8HfbB8Lz5vw8Wd2o+ZmQ2tnDY9Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/toggle@3.12.1': + resolution: {integrity: sha512-XaFiRs1KEcIT6bTtVY/KTQxw4kinemj/UwXw2iJTu9XS43hhJ/9cvj8KzNGrKGqaxTpOYj62TnSHZbSiFViHDA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/toolbar@3.0.0-beta.20': + resolution: {integrity: sha512-Kxvqw+TpVOE/eSi8RAQ9xjBQ2uXe8KkRvlRNQWQsrzkZDkXhzqGfQuJnBmozFxqpzSLwaVqQajHFUSvPAScT8Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/tooltip@3.8.7': + resolution: {integrity: sha512-Aj7DPJYGZ9/+2ZfhkvbN7YMeA5qu4oy4LVQiMCpqNwcFzvhTAVhN7J7cS6KjA64fhd1shKm3BZ693Ez6lSpqwg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/virtualizer@4.1.9': + resolution: {integrity: sha512-LN5MfnM/fpZegzkqciipyAvPzbi4DNOGGCh98hVlpIT8IdTm0gNW1Ho2vza15EFcYgt9iinCZ9lhLT5HmE2ZtQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/visually-hidden@3.8.27': + resolution: {integrity: sha512-hD1DbL3WnjPnCdlQjwe19bQVRAGJyN0Aaup+s7NNtvZUn7AjoEH78jo8TE+L8yM7z/OZUQF26laCfYqeIwWn4g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/calendar@3.8.4': + resolution: {integrity: sha512-q9mq0ydOLS5vJoHLnYfSCS/vppfjbg0XHJlAoPR+w+WpYZF4wPP453SrlX9T1DbxCEYFTpcxcMk/O8SDW3miAw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/checkbox@3.7.1': + resolution: {integrity: sha512-ezfKRJsDuRCLtNoNOi9JXCp6PjffZWLZ/vENW/gbRDL8i46RKC/HpfJrJhvTPmsLYazxPC99Me9iq3v0VoNCsw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/collections@3.12.7': + resolution: {integrity: sha512-0kQc0mI986GOCQHvRy4L0JQiotIK/KmEhR9Mu/6V0GoSdqg5QeUe4kyoNWj3bl03uQXme80v0L2jLHt+fOHHjA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/combobox@3.11.1': + resolution: {integrity: sha512-ZZh+SaAmddoY+MeJr470oDYA0nGaJm4xoHCBapaBA0JNakGC/wTzF/IRz3tKQT2VYK4rumr1BJLZQydGp7zzeg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/data@3.14.0': + resolution: {integrity: sha512-3GUsOXatYohBX2wTQHnJKVQlFfYXnt7IoDDuIaUeM8kXlF+dRSFAOAfPUSGAph6lJz2ht4dq1SEl6ZL/u+dRlQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/datepicker@3.15.1': + resolution: {integrity: sha512-t64iYPms9y+MEQgOAu0XUHccbEXWVUWBHJWnYvAmILCHY8ZAOeSPAT1g4v9nzyiApcflSNXgpsvbs9BBEsrWww==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/dnd@3.7.0': + resolution: {integrity: sha512-DddpCVkqt6vUPHLqe/2FHxW/gkR4tEt7W0MbFcCeCLbc9lmvzOClPwNpjmU/3UnU+vPQnwGGUeF3HvaxduUq2Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/flags@3.1.2': + resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + + '@react-stately/form@3.2.1': + resolution: {integrity: sha512-btgOPXkwvd6fdWKoepy5Ue43o2932OSkQxozsR7US1ffFLcQc3SNlADHaRChIXSG8ffPo9t0/Sl4eRzaKu3RgQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/grid@3.11.5': + resolution: {integrity: sha512-4cNjGYaNkcVS2wZoNHUrMRICBpkHStYw57EVemP7MjiWEVu53kzPgR1Iwmti2WFCpi1Lwu0qWNeCfzKpXW4BTg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/layout@4.5.0': + resolution: {integrity: sha512-giN20XXxSjOG/pRSdzKkHhIFochl0Wer2aWCYceXRNSoP0dTPNU7bjn2p3n3atVRdC9iZpmwIiASO5qDf89sLQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/list@3.13.0': + resolution: {integrity: sha512-Panv8TmaY8lAl3R7CRhyUadhf2yid6VKsRDBCBB1FHQOOeL7lqIraz/oskvpabZincuaIUWqQhqYslC4a6dvuA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/menu@3.9.7': + resolution: {integrity: sha512-mfz1YoCgtje61AGxVdQaAFLlOXt9vV5dd1lQljYUPRafA/qu5Ursz4fNVlcavWW9GscebzFQErx+y0oSP7EUtQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/numberfield@3.10.1': + resolution: {integrity: sha512-lXABmcTneVvXYMGTgZvTCr4E+upOi7VRLL50ZzTMJqHwB/qlEQPAam3dmddQRwIsuCM3MEnL7bSZFFlSYAtkEw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/overlays@3.6.19': + resolution: {integrity: sha512-swZXfDvxTYd7tKEpijEHBFFaEmbbnCvEhGlmrAz4K72cuRR9O5u+lcla8y1veGBbBSzrIdKNdBoIIJ+qQH+1TQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/radio@3.11.1': + resolution: {integrity: sha512-ld9KWztI64gssg7zSZi9li21sG85Exb+wFPXtCim1TtpnEpmRtB05pXDDS3xkkIU/qOL4eMEnnLO7xlNm0CRIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/searchfield@3.5.15': + resolution: {integrity: sha512-6LVVvm6Z60fetYLLa4B2Q/BIY+fSSknLTw8sjlV+iDEPAknj7MqWtoLz2gSQRTFKvyO7ZCjJoar8ZU/JEqcm+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/select@3.7.1': + resolution: {integrity: sha512-vZt4j9yVyOTWWJoP9plXmYaPZH2uMxbjcGMDbiShwsFiK8C2m9b3Cvy44TZehfzCWzpMVR/DYxEYuonEIGA82Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/selection@3.20.5': + resolution: {integrity: sha512-YezWUNEn2pz5mQlbhmngiX9HqQsruLSXlkrAzB1DD6aliGrUvPKufTTGCixOaB8KVeCamdiFAgx1WomNplzdQA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/table@3.15.0': + resolution: {integrity: sha512-KbvkrVF3sb25IPwyte9JcG5/4J7TgjHSsw7D61d/T/oUFMYPYVeolW9/2y+6u48WPkDJE8HJsurme+HbTN0FQA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/tabs@3.8.5': + resolution: {integrity: sha512-gdeI+NUH3hfqrxkJQSZkt+Zw4G2DrYJRloq/SGxu/9Bu5QD/U0psU2uqxQNtavW5qTChFK+D30rCPXpKlslWAA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/toast@3.1.0': + resolution: {integrity: sha512-9W2+evz+EARrjkR1QPLlOL5lcNpVo6PjMAIygRSaCPJ6ftQAZ6B+7xTFGPFabWh83gwXQDUgoSwC3/vosvxZaQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/toggle@3.9.1': + resolution: {integrity: sha512-L6yUdE8xZfQhw4aEFZduF8u4v0VrpYrwWEA4Tu/4qwGIPukH0wd2W21Zpw+vAiLOaDKnxel1nXX68MWnm4QXpw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/tooltip@3.5.7': + resolution: {integrity: sha512-GYh764BcYZz+Lclyutyir5I3elNo+vVNYzeNOKmPGZCE3p5B+/8lgZAHKxnRc9qmBlxvofnhMcuQxAPlBhoEkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/tree@3.9.2': + resolution: {integrity: sha512-jsT1WZZhb7GRmg1iqoib9bULsilIK5KhbE8WrcfIml8NYr4usP4DJMcIYfRuiRtPLhKtUvHSoZ5CMbinPp8PUQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-stately/virtualizer@4.4.3': + resolution: {integrity: sha512-kk6ZyMtOT51kZYGUjUhbgEdRBp/OR3WD+Vj9kFoCa1vbY+fGzbpcnjsvR2LDZuEq8W45ruOvdr1c7HRJG4gWxA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/actionbar@3.1.18': + resolution: {integrity: sha512-BA5zINFIOlBohTE374uBUryBq80JzH314UGVrhRdd6pzMV9s5tk8+/VPZ9a1wCItaWA865CJvZAFF1Hz3y8ifg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/actiongroup@3.4.20': + resolution: {integrity: sha512-D6K4zUrTdharGlG24iGJfOl0/8AjLqZCBoOHD5nXkdm0obWva1jBwtCRee2WblCazVnaDedGYDPODAwyEatFDA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/breadcrumbs@3.7.16': + resolution: {integrity: sha512-4J+7b9y6z8QGZqvsBSWQfebx6aIbc+1unQqnZCAlJl9EGzlI6SGdXRsURGkOUGJCV2GqY8bSocc8AZbRXpQ0XQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/button@3.14.0': + resolution: {integrity: sha512-pXt1a+ElxiZyWpX0uznyjy5Z6EHhYxPcaXpccZXyn6coUo9jmCbgg14xR7Odo+JcbfaaISzZTDO7oGLVTcHnpA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/calendar@3.7.4': + resolution: {integrity: sha512-MZDyXtvdHl8CKQGYBkjYwc4ABBq6Mb4Fu7k/4boQAmMQ5Rtz29ouBCJrAs0BpR14B8ZMGzoNIolxS5RLKBmFSA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/checkbox@3.10.1': + resolution: {integrity: sha512-8ZqBoGBxtn6U/znpmyutGtBBaafUzcZnbuvYjwyRSONTrqQ0IhUq6jI/jbnE9r9SslIkbMB8IS1xRh2e63qmEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/combobox@3.13.8': + resolution: {integrity: sha512-HGC3X9hmDRsjSZcFiflvJ7vbIgQ2gX/ZDxo1HVtvQqUDbgQCVakCcCdrB44aYgHFnyDiO6hyp7Y7jXtDBaEIIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/datepicker@3.13.1': + resolution: {integrity: sha512-ub+g5pS3WOo5P/3FRNsQSwvlb9CuLl2m6v6KBkRXc5xqKhFd7UjvVpL6Oi/1zwwfow4itvD1t7l1XxgCo7wZ6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/dialog@3.5.21': + resolution: {integrity: sha512-jF1gN4bvwYamsLjefaFDnaSKxTa3Wtvn5f7WLjNVZ8ICVoiMBMdUJXTlPQHAL4YWqtCj4hK/3uimR1E+Pwd7Xw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/grid@3.3.5': + resolution: {integrity: sha512-hG6J2KDfmOHitkWoCa/9DvY1nTO2wgMIApcFoqLv7AWJr9CzvVqo5tIhZZCXiT1AvU2kafJxu9e7sr5GxAT2YA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/link@3.6.4': + resolution: {integrity: sha512-eLpIgOPf7GW4DpdMq8UqiRJkriend1kWglz5O9qU+/FM6COtvRnQkEeRhHICUaU2NZUvMRQ30KaGUo3eeZ6b+g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/listbox@3.7.3': + resolution: {integrity: sha512-ONgror9uyGmIer5XxpRRNcc8QFVWiOzINrMKyaS8G4l3aP52ZwYpRfwMAVtra8lkVNvXDmO7hthPZkB6RYdNOA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/menu@3.10.4': + resolution: {integrity: sha512-jCFVShLq3eASiuznenjoKBv3j0Jy2KQilAjBxdEp56WkZ5D338y/oY5zR6d25u9M0QslpI0DgwC8BwU7MCsPnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/meter@3.4.12': + resolution: {integrity: sha512-rx+yrwdesSabPworWRMpQnuT69gm8xt58cAfTDV9eSY1Jo+lO5OPp0OIyKb+U0q/whf60wnn2hsVnXm2fBXKhA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/numberfield@3.8.14': + resolution: {integrity: sha512-tlGEHJyeQSMlUoO4g9ekoELGJcqsjc/+/FAxo6YQMhQSkuIdkUKZg3UEBKzif4hLw787u80e1D0SxPUi3KO2oA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/overlays@3.9.1': + resolution: {integrity: sha512-UCG3TOu8FLk4j0Pr1nlhv0opcwMoqbGEOUvsSr6ITN6Qs2y0j+KYSYQ7a4+04m3dN//8+9Wjkkid8k+V1dV2CA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/progress@3.5.15': + resolution: {integrity: sha512-3SYvEyRt7vq7w0sc6wBYmkPqLMZbhH8FI3Lrnn9r3y8+69/efRjVmmJvwjm1z+c6rukszc2gCjUGTsMPQxVk2w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/radio@3.9.1': + resolution: {integrity: sha512-DUCN3msm8QZ0MJrP55FmqMONaadYq6JTxihYFGMLP+NoKRnkxvXqNZ2PlkAOLGy3y4RHOnOF8O1LuJqFCCuxDw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/searchfield@3.6.5': + resolution: {integrity: sha512-5hI+Hb1U0bSxrJLvEwFEQfk7n3S+GO4c5W/0WZBG00YlYDY9asr1V0oU1WRmKPJJlRpyfG6PkMHDC3jhdj89ew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/select@3.10.1': + resolution: {integrity: sha512-teANUr1byOzGsS/r2j7PatV470JrOhKP8En9lscfnqW5CeUghr+0NxkALnPkiEhCObi/Vu8GIcPareD0HNhtFA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/switch@3.5.14': + resolution: {integrity: sha512-M8kIv97i+ejCel4Ho+Y7tDbpOehymGwPA4ChxibeyD32+deyxu5B6BXxgKiL3l+oTLQ8ihLo3sRESdPFw8vpQg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/table@3.13.3': + resolution: {integrity: sha512-/kY/VlXN+8l9saySd6igcsDQ3x8pOVFJAWyMh6gOaOVN7HOJkTMIchmqS+ATa4nege8jZqcdzyGeAmv7mN655A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/tabs@3.3.18': + resolution: {integrity: sha512-yX/AVlGS7VXCuy2LSm8y8nxUrKVBgnLv+FrtkLqf6jUMtD4KP3k1c4+GPHeScR0HcYzCQF7gCF3Skba1RdYoug==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/textfield@3.12.5': + resolution: {integrity: sha512-VXez8KIcop87EgIy00r+tb30xokA309TfJ32Qv5qOYB5SMqoHnb6SYvWL8Ih2PDqCo5eBiiGesSaWYrHnRIL8Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/tooltip@3.4.20': + resolution: {integrity: sha512-tF1yThwvgSgW8Gu/CLL0p92AUldHR6szlwhwW+ewT318sQlfabMGO4xlCNFdxJYtqTpEXk2rlaVrBuaC//du0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.52.0': + resolution: {integrity: sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.0': + resolution: {integrity: sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.0': + resolution: {integrity: sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.0': + resolution: {integrity: sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.0': + resolution: {integrity: sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.0': + resolution: {integrity: sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.0': + resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.0': + resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.52.0': + resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.0': + resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.0': + resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.52.0': + resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.52.0': + resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.52.0': + resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.52.0': + resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.52.0': + resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.52.0': + resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.52.0': + resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.0': + resolution: {integrity: sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.0': + resolution: {integrity: sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.0': + resolution: {integrity: sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.0': + resolution: {integrity: sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@3.13.0': + resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==} + + '@shikijs/engine-javascript@3.13.0': + resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==} + + '@shikijs/engine-oniguruma@3.13.0': + resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==} + + '@shikijs/langs@3.13.0': + resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==} + + '@shikijs/themes@3.13.0': + resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==} + + '@shikijs/types@3.13.0': + resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@sindresorhus/slugify@1.1.2': + resolution: {integrity: sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==} + engines: {node: '>=10'} + + '@sindresorhus/transliterate@0.1.2': + resolution: {integrity: sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==} + engines: {node: '>=10'} + + '@sveltejs/acorn-typescript@1.0.5': + resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} + peerDependencies: + acorn: ^8.9.0 + + '@sveltejs/vite-plugin-svelte-inspector@4.0.1': + resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^5.0.0 + svelte: ^5.0.0 + vite: ^6.0.0 + + '@sveltejs/vite-plugin-svelte@5.1.1': + resolution: {integrity: sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22} + peerDependencies: + svelte: ^5.0.0 + vite: ^6.0.0 + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tabler/icons@3.35.0': + resolution: {integrity: sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==} + + '@tailwindcss/forms@0.5.10': + resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' + + '@tailwindcss/node@4.1.13': + resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} + + '@tailwindcss/oxide-android-arm64@4.1.13': + resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.13': + resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.13': + resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.13': + resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.13': + resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} + engines: {node: '>= 10'} + + '@tailwindcss/typography@0.5.18': + resolution: {integrity: sha512-dDIgwZOlf+tVkZ7A029VvQ1+ngKATENDjMEx2N35s2yPjfTS05RWSM8ilhEWSa5DMJ6ci2Ha9WNZEd2GQjrdQg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + + '@tailwindcss/vite@4.1.13': + resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@toeverything/y-indexeddb@0.10.0-canary.9': + resolution: {integrity: sha512-3hzktNuOaXut/RgRjKNeqQura1zeYF+tSLSlWDc0rDBOrEpwD/1EOpKVCbgtl8ke7f4oinLfgBNk4HcwqaQUYQ==} + peerDependencies: + yjs: ^13 + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@ts-gql/tag@0.7.3': + resolution: {integrity: sha512-qWBoe5TGXs7l6lrdSfqAhsZP1aW9vEoZvjy5hPsiMwQ7VB8PyK2TFmLCijLmdeKSiY7BSzff20xZZrLIMB+IKQ==} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || 14 || 15 || 16 + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/fontkit@2.0.8': + resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/is-hotkey@0.1.10': + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + + '@types/markdown-it@12.2.3': + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/react@19.1.13': + resolution: {integrity: sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==} + + '@types/tar@6.1.13': + resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@urql/core@5.2.0': + resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} + + '@urql/exchange-auth@2.2.1': + resolution: {integrity: sha512-n4xUxxjvY36GJh539sLaPFyvFzreADOv8EFQdTiXOCIRVoXXhWVVI7DjY/HNtLICfbg1+UlbvQ7sNkwaBouDHg==} + peerDependencies: + '@urql/core': ^5.0.0 + + '@urql/exchange-graphcache@7.2.4': + resolution: {integrity: sha512-kiKbT0ZrtyQmmgNLYR0qkZAJjWHQOtrd+6Dt9JMtm3L/A8r3D6ptcJn668BADP6J+vkxcfNFtdI+0OdmBBkRgw==} + peerDependencies: + '@urql/core': ^5.0.0 + + '@urql/exchange-persisted@4.3.1': + resolution: {integrity: sha512-VRGYFNW0gaT7+VCR/1rCMWEP9gvnDnlAolKisysLYkv8Zeysbqx+Omw4IgIRCLjI6oHWPkH8zOhFbqA3GRQ9HQ==} + peerDependencies: + '@urql/core': ^5.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + astro-icon@1.1.5: + resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} + + astro@5.13.9: + resolution: {integrity: sha512-vwnJ9Db/X35G3n7F2KgcAAsQ7Du00s0ZFvB+Sx0w7Jl4fwit4+mHJbL4U2ZFxIo9tU07oZEey/2g1Awom7i0LQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bits-ui@2.11.1: + resolution: {integrity: sha512-c05w6nX/uFtRkpSfHNPfeS9qo67eXc9oC3ez4CUB2562uRaZlv/XV1wVuTk6foYGtE6wVRSkQi1IK4U+Fu/6YQ==} + engines: {node: '>=20'} + peerDependencies: + '@internationalized/date': ^3.8.1 + svelte: ^5.33.0 + + blob-to-buffer@1.2.9: + resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + dedent-js@1.0.1: + resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-libc@2.1.0: + resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + engines: {node: '>=8'} + + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + + devalue@5.3.2: + resolution: {integrity: sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + direction@1.0.4: + resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + emery@1.4.4: + resolution: {integrity: sha512-mMoO3uGDoiw/DmZ/YekT9gEoC0IFAXNWzYVukY8+/j0Wt8un1IDraIYGx+cMbRh+fHaCDE6Ui7zFAN8ezZSsAA==} + + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + + esrap@2.1.0: + resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + event-target-shim@6.0.2: + resolution: {integrity: sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==} + engines: {node: '>=10.13.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + export-to-csv@1.4.0: + resolution: {integrity: sha512-6CX17Cu+rC2Fi2CyZ4CkgVG3hLl6BFsdAxfXiZkmDFIDY4mRx2y2spdeH6dqPHI9rP+AsHEfGeKz84Uuw7+Pmg==} + engines: {node: ^v12.20.0 || >=v14.13.0} + + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + facepaint@1.2.1: + resolution: {integrity: sha512-oNvBekbhsm/0PNSOWca5raHNAi6dG960Bx6LJgxDPNF59WpuspgQ17bN5MKwOr7JcFdQYc7StW3VZ28DBZLavQ==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + fontace@0.3.0: + resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==} + + fontkit@2.0.4: + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + github-buttons@2.29.1: + resolution: {integrity: sha512-TV3YgAKda5hPz75n7QXmGCsSzgVya1vvmBieebg3EB5ScmashTZ0FldViG1aU2d4V5rcAGrtQ7k5uAaCo0A4PA==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphql-tag@2.12.6: + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql@16.11.0: + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gsap@3.13.0: + resolution: {integrity: sha512-QL7MJ2WMjm1PHWsoFrAQH/J8wUeqZvMtHO58qdekHpCfhvhSL4gSiz6vJf5EeMP0LOn3ZCprL2ki/gjED8ghVw==} + + h3@1.15.4: + resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + intl-messageformat@10.7.16: + resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + 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 + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-hotkey@0.1.8: + resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} + + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isomorphic.js@0.2.5: + resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==} + + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lib0@0.2.114: + resolution: {integrity: sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==} + engines: {node: '>=16'} + hasBin: true + + lightgallery@2.9.0-beta.1: + resolution: {integrity: sha512-4Bl1vsYGOsI6RsPyephAUFW8bbZuZlLrpxU59cfKYKPDEX5Mhxfo1DUoUIJ+j5QPNrHEqrd+QeQtnGUCCwqK2g==} + engines: {node: '>=6.0.0'} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + lodash.deburr@4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + match-sorter@6.3.4: + resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.5: + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + engines: {node: ^18 || >=20} + hasBin: true + + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-mock-http@1.0.3: + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} + engines: {node: '>=18'} + + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} + engines: {node: '>=18'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + partysocket@0.0.22: + resolution: {integrity: sha512-HmFJoVA48vfU5VaQ539YnQt+/QncV5wdlN7vEW//m8eCnOV2PKB8X08c7hI4VLrqntajaWovHhprWHgXbXgR1A==} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + + prosemirror-history@1.4.1: + resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} + + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} + + prosemirror-model@1.25.3: + resolution: {integrity: sha512-dY2HdaNXlARknJbrManZ1WyUtos+AP97AmvqdOQtWtrrC5g4mohVX5DTi9rXNFSk09eczLq9GuNTtq3EfMeMGA==} + + prosemirror-state@1.4.3: + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + + prosemirror-tables@1.8.1: + resolution: {integrity: sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==} + + prosemirror-transform@1.10.4: + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} + + prosemirror-view@1.41.1: + resolution: {integrity: sha512-cViIhlt1/T5bQMINrmXh43JZcdIgdW1YkOABmIuH5gSt3/HiCZHsLN9d5GvsgzrXn2+zZ8il0kkghisusm7tSA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + react-dom@19.1.1: + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + peerDependencies: + react: ^19.1.1 + + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + engines: {node: '>=0.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restructure@3.0.2: + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.2.0: + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + rollup@4.52.0: + resolution: {integrity: sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + + runed@0.29.2: + resolution: {integrity: sha512-0cq6cA6sYGZwl/FvVqjx9YN+1xEBu9sDDyuWdDW1yWX7JF2wmvmVKfH+hVCZs+csW+P3ARH92MjI3H9QTagOQA==} + peerDependencies: + svelte: ^5.7.0 + + runed@0.31.1: + resolution: {integrity: sha512-v3czcTnO+EJjiPvD4dwIqfTdHLZ8oH0zJheKqAHh9QMViY7Qb29UlAMRpX7ZtHh7AFqV60KmfxaJ9QMy+L1igQ==} + peerDependencies: + svelte: ^5.7.0 + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shiki@3.13.0: + resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slate-history@0.86.0: + resolution: {integrity: sha512-OxObL9tbhgwvSlnKSCpGIh7wnuaqvOj5jRExGjEyCU2Ke8ctf22HjT+jw7GEi9ttLzNTUmTEU3YIzqKGeqN+og==} + peerDependencies: + slate: '>=0.65.3' + + slate-react@0.91.11: + resolution: {integrity: sha512-2nS29rc2kuTTJrEUOXGyTkFATmTEw/R9KuUXadUYiz+UVwuFOUMnBKuwJWyuIBOsFipS+06SkIayEf5CKdARRQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.65.3' + + slate@0.91.4: + resolution: {integrity: sha512-aUJ3rpjrdi5SbJ5G1Qjr3arytfRkEStTmHjBfWq2A2Q8MybacIzkScSvGJjQkdTk3djCK9C9SEOt39sSeZFwTw==} + + smol-toml@1.4.2: + resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} + engines: {node: '>= 18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svelte-toolbelt@0.10.5: + resolution: {integrity: sha512-8e+eWTgxw1aiLxhDE8Rb1X6AoLitqpJz+WhAul2W7W58C8KoLoJQf1TgQdFPBiCPJ0Jg5y0Zi1uyua9em4VS0w==} + engines: {node: '>=18', pnpm: '>=8.7.0'} + peerDependencies: + svelte: ^5.30.2 + + svelte2tsx@0.7.44: + resolution: {integrity: sha512-opuH+bCboss0/ncxnfAO+qt0IAprxc8OqwuC7otafWeO5CHjJ6UAAwvQmu/+xjpCSarX8pQKydXQuoJmbCDcTg==} + peerDependencies: + svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 + typescript: ^4.9.4 || ^5.0.0 + + svelte@5.39.5: + resolution: {integrity: sha512-YrTmQAgJNB5He5t14g+BH76xTjskcx0Dg3p6qKqfPcgha+9Rzdgkoazdk18ahzNfkFYgykZIjfnBvlPcp3NpYg==} + engines: {node: '>=18'} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + + tailwind-variants@3.1.1: + resolution: {integrity: sha512-ftLXe3krnqkMHsuBTEmaVUXYovXtPyTK7ckEfDRXS8PBZx0bAUas+A0jYxuKA5b8qg++wvQ3d2MQ7l/xeZxbZQ==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwind-merge: '>=3.0.0' + tailwindcss: '*' + peerDependenciesMeta: + tailwind-merge: + optional: true + + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} + + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + + tiny-invariant@1.0.6: + resolution: {integrity: sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tw-animate-css@1.3.8: + resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + ultrahtml@1.6.0: + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + + undici@6.21.3: + resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} + engines: {node: '>=18.17'} + + unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unifont@0.5.2: + resolution: {integrity: sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + unstorage@1.17.1: + resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 || ^7.0.0 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + urql@4.2.2: + resolution: {integrity: sha512-3GgqNa6iF7bC4hY/ImJKN4REQILcSU9VKcKL8gfELZM8mM5BnLH1BsCc8kBdnVGD1LIFOs4W3O2idNHhON1r0w==} + peerDependencies: + '@urql/core': ^5.0.0 + react: '>= 16.8.0' + + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@6.3.6: + resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitefu@1.1.1: + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + peerDependenciesMeta: + vite: + optional: true + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + wonka@6.3.5: + resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xxhash-wasm@1.1.0: + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + + y-prosemirror@1.3.7: + resolution: {integrity: sha512-NpM99WSdD4Fx4if5xOMDpPtU3oAmTSjlzh5U4353ABbRHl1HtAFUx6HlebLZfyFxXN9jzKMDkVbcRjqOZVkYQg==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + peerDependencies: + prosemirror-model: ^1.7.1 + prosemirror-state: ^1.2.3 + prosemirror-view: ^1.9.10 + y-protocols: ^1.0.1 + yjs: ^13.5.38 + + y-protocols@1.0.6: + resolution: {integrity: sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + peerDependencies: + yjs: ^13.0.0 + + y-provider@0.10.0-canary.9: + resolution: {integrity: sha512-ImkLqCpxHK0lkxD12s7BE4p14NiAnQQSJGN5GONl4W4CyLBx6+tRop3yg66abg64N3JYX9EwXxnIVDziq6b8Dw==} + peerDependencies: + yjs: ^13 + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yjs@13.6.27: + resolution: {integrity: sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + yocto-spinner@0.2.3: + resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} + engines: {node: '>=18.19'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} + + zod-to-json-schema@3.24.6: + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + peerDependencies: + zod: ^3.24.1 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@0no-co/graphql.web@1.2.0(graphql@16.11.0)': + optionalDependencies: + graphql: 16.11.0 + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@8.1.1': {} + + '@astrojs/compiler@2.13.0': {} + + '@astrojs/internal-helpers@0.7.2': {} + + '@astrojs/markdown-remark@6.3.6': + dependencies: + '@astrojs/internal-helpers': 0.7.2 + '@astrojs/prism': 3.3.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + shiki: 3.13.0 + smol-toml: 1.4.2 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@3.3.0': + dependencies: + prismjs: 1.30.0 + + '@astrojs/svelte@7.1.1(@types/node@24.5.2)(astro@5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(jiti@2.5.1)(lightningcss@1.30.1)(svelte@5.39.5)(typescript@5.9.2)(yaml@2.8.1)': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + astro: 5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + svelte: 5.39.5 + svelte2tsx: 0.7.44(svelte@5.39.5)(typescript@5.9.2) + typescript: 5.9.2 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@astrojs/telemetry@3.3.0': + dependencies: + ci-info: 4.3.0 + debug: 4.4.3 + dlv: 1.1.3 + dset: 3.1.4 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@biomejs/biome@2.2.4': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.2.4 + '@biomejs/cli-darwin-x64': 2.2.4 + '@biomejs/cli-linux-arm64': 2.2.4 + '@biomejs/cli-linux-arm64-musl': 2.2.4 + '@biomejs/cli-linux-x64': 2.2.4 + '@biomejs/cli-linux-x64-musl': 2.2.4 + '@biomejs/cli-win32-arm64': 2.2.4 + '@biomejs/cli-win32-x64': 2.2.4 + + '@biomejs/cli-darwin-arm64@2.2.4': + optional: true + + '@biomejs/cli-darwin-x64@2.2.4': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.2.4': + optional: true + + '@biomejs/cli-linux-arm64@2.2.4': + optional: true + + '@biomejs/cli-linux-x64-musl@2.2.4': + optional: true + + '@biomejs/cli-linux-x64@2.2.4': + optional: true + + '@biomejs/cli-win32-arm64@2.2.4': + optional: true + + '@biomejs/cli-win32-x64@2.2.4': + optional: true + + '@braintree/sanitize-url@6.0.4': {} + + '@capsizecss/unpack@2.4.0': + dependencies: + blob-to-buffer: 1.2.9 + cross-fetch: 3.2.0 + fontkit: 2.0.4 + transitivePeerDependencies: + - encoding + + '@emnapi/runtime@1.5.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.28.4 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.13.5': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.9.2': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.25.10': + optional: true + + '@esbuild/android-arm64@0.25.10': + optional: true + + '@esbuild/android-arm@0.25.10': + optional: true + + '@esbuild/android-x64@0.25.10': + optional: true + + '@esbuild/darwin-arm64@0.25.10': + optional: true + + '@esbuild/darwin-x64@0.25.10': + optional: true + + '@esbuild/freebsd-arm64@0.25.10': + optional: true + + '@esbuild/freebsd-x64@0.25.10': + optional: true + + '@esbuild/linux-arm64@0.25.10': + optional: true + + '@esbuild/linux-arm@0.25.10': + optional: true + + '@esbuild/linux-ia32@0.25.10': + optional: true + + '@esbuild/linux-loong64@0.25.10': + optional: true + + '@esbuild/linux-mips64el@0.25.10': + optional: true + + '@esbuild/linux-ppc64@0.25.10': + optional: true + + '@esbuild/linux-riscv64@0.25.10': + optional: true + + '@esbuild/linux-s390x@0.25.10': + optional: true + + '@esbuild/linux-x64@0.25.10': + optional: true + + '@esbuild/netbsd-arm64@0.25.10': + optional: true + + '@esbuild/netbsd-x64@0.25.10': + optional: true + + '@esbuild/openbsd-arm64@0.25.10': + optional: true + + '@esbuild/openbsd-x64@0.25.10': + optional: true + + '@esbuild/openharmony-arm64@0.25.10': + optional: true + + '@esbuild/sunos-x64@0.25.10': + optional: true + + '@esbuild/win32-arm64@0.25.10': + optional: true + + '@esbuild/win32-ia32@0.25.10': + optional: true + + '@esbuild/win32-x64@0.25.10': + optional: true + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@floating-ui/react@0.24.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + aria-hidden: 1.2.6 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@fontsource/iceland@5.2.8': {} + + '@fontsource/lora@5.2.8': {} + + '@fontsource/montserrat@5.2.8': {} + + '@fontsource/pacifico@5.2.7': {} + + '@fontsource/warnes@5.2.8': {} + + '@formatjs/ecma402-abstract@2.3.4': + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/intl-localematcher': 0.6.1 + decimal.js: 10.6.0 + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.7': + dependencies: + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.11.2': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-skeleton-parser': 1.8.14 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.14': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.6.1': + dependencies: + tslib: 2.8.1 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + + '@iconify/svelte@5.0.2(svelte@5.39.5)': + dependencies: + '@iconify/types': 2.0.0 + svelte: 5.39.5 + + '@iconify/tools@4.1.3': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/utils': 2.3.0 + '@types/tar': 6.1.13 + axios: 1.12.2 + cheerio: 1.0.0 + domhandler: 5.0.3 + extract-zip: 2.0.1 + local-pkg: 0.5.1 + pathe: 1.1.2 + svgo: 3.3.2 + tar: 6.2.1 + transitivePeerDependencies: + - debug + - supports-color + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.3 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.2 + mlly: 1.8.0 + transitivePeerDependencies: + - supports-color + + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.3 + optional: true + + '@img/sharp-darwin-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.3 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + optional: true + + '@img/sharp-linux-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.3 + optional: true + + '@img/sharp-linux-arm@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.3 + optional: true + + '@img/sharp-linux-ppc64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.3 + optional: true + + '@img/sharp-linux-s390x@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.3 + optional: true + + '@img/sharp-linux-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + optional: true + + '@img/sharp-wasm32@0.34.4': + dependencies: + '@emnapi/runtime': 1.5.0 + optional: true + + '@img/sharp-win32-arm64@0.34.4': + optional: true + + '@img/sharp-win32-ia32@0.34.4': + optional: true + + '@img/sharp-win32-x64@0.34.4': + optional: true + + '@internationalized/date@3.9.0': + dependencies: + '@swc/helpers': 0.5.17 + + '@internationalized/message@3.1.8': + dependencies: + '@swc/helpers': 0.5.17 + intl-messageformat: 10.7.16 + + '@internationalized/number@3.6.5': + dependencies: + '@swc/helpers': 0.5.17 + + '@internationalized/string@3.2.7': + dependencies: + '@swc/helpers': 0.5.17 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@juggle/resize-observer@3.4.0': {} + + '@keystar/ui@0.7.19(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/css': 11.13.5 + '@floating-ui/react': 0.24.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@internationalized/date': 3.9.0 + '@internationalized/string': 3.2.7 + '@react-aria/actiongroup': 3.7.20(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/breadcrumbs': 3.5.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/button': 3.14.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/calendar': 3.9.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/checkbox': 3.16.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/combobox': 3.13.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/datepicker': 3.15.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/dialog': 3.5.30(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/dnd': 3.11.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/gridlist': 3.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/link': 3.8.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/listbox': 3.14.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/menu': 3.19.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/meter': 3.4.26(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/numberfield': 3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/progress': 3.4.26(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/radio': 3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/searchfield': 3.8.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/select': 3.16.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/separator': 3.4.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/switch': 3.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/table': 3.17.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/tabs': 3.10.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/tag': 3.7.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/textfield': 3.18.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/toast': 3.0.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/tooltip': 3.8.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/virtualizer': 4.1.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/visually-hidden': 3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/calendar': 3.8.4(react@19.1.1) + '@react-stately/checkbox': 3.7.1(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/combobox': 3.11.1(react@19.1.1) + '@react-stately/data': 3.14.0(react@19.1.1) + '@react-stately/datepicker': 3.15.1(react@19.1.1) + '@react-stately/dnd': 3.7.0(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/layout': 4.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-stately/menu': 3.9.7(react@19.1.1) + '@react-stately/numberfield': 3.10.1(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-stately/radio': 3.11.1(react@19.1.1) + '@react-stately/searchfield': 3.5.15(react@19.1.1) + '@react-stately/select': 3.7.1(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-stately/table': 3.15.0(react@19.1.1) + '@react-stately/tabs': 3.8.5(react@19.1.1) + '@react-stately/toast': 3.1.0(react@19.1.1) + '@react-stately/toggle': 3.9.1(react@19.1.1) + '@react-stately/tooltip': 3.5.7(react@19.1.1) + '@react-stately/tree': 3.9.2(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-stately/virtualizer': 4.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/actionbar': 3.1.18(react@19.1.1) + '@react-types/actiongroup': 3.4.20(react@19.1.1) + '@react-types/breadcrumbs': 3.7.16(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/calendar': 3.7.4(react@19.1.1) + '@react-types/combobox': 3.13.8(react@19.1.1) + '@react-types/datepicker': 3.13.1(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/menu': 3.10.4(react@19.1.1) + '@react-types/numberfield': 3.8.14(react@19.1.1) + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/radio': 3.9.1(react@19.1.1) + '@react-types/select': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/switch': 3.5.14(react@19.1.1) + '@react-types/table': 3.13.3(react@19.1.1) + '@react-types/tabs': 3.3.18(react@19.1.1) + '@types/react': 19.1.13 + emery: 1.4.4 + facepaint: 1.2.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + transitivePeerDependencies: + - supports-color + + '@keystatic/astro@5.0.6(@keystatic/core@0.5.48(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(astro@5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@babel/runtime': 7.28.4 + '@keystatic/core': 0.5.48(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@types/react': 19.1.13 + astro: 5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + set-cookie-parser: 2.7.1 + + '@keystatic/core@0.5.48(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@babel/runtime': 7.28.4 + '@braintree/sanitize-url': 6.0.4 + '@emotion/weak-memoize': 0.3.1 + '@floating-ui/react': 0.24.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@internationalized/string': 3.2.7 + '@keystar/ui': 0.7.19(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@markdoc/markdoc': 0.4.0(@types/react@19.1.13)(react@19.1.1) + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/visually-hidden': 3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@sindresorhus/slugify': 1.1.2 + '@toeverything/y-indexeddb': 0.10.0-canary.9(yjs@13.6.27) + '@ts-gql/tag': 0.7.3(graphql@16.11.0) + '@types/react': 19.1.13 + '@urql/core': 5.2.0(graphql@16.11.0) + '@urql/exchange-auth': 2.2.1(@urql/core@5.2.0(graphql@16.11.0)) + '@urql/exchange-graphcache': 7.2.4(@urql/core@5.2.0(graphql@16.11.0))(graphql@16.11.0) + '@urql/exchange-persisted': 4.3.1(@urql/core@5.2.0(graphql@16.11.0)) + cookie: 1.0.2 + emery: 1.4.4 + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + graphql: 16.11.0 + idb-keyval: 6.2.2 + ignore: 5.3.2 + is-hotkey: 0.2.0 + js-yaml: 4.1.0 + lib0: 0.2.114 + lru-cache: 10.4.3 + match-sorter: 6.3.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-mdx: 3.0.0 + mdast-util-to-markdown: 2.1.2 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-mdxjs: 3.0.0 + minimatch: 9.0.5 + partysocket: 0.0.22 + prosemirror-commands: 1.7.1 + prosemirror-history: 1.4.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-tables: 1.8.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + scroll-into-view-if-needed: 3.1.0 + slate: 0.91.4 + slate-history: 0.86.0(slate@0.91.4) + slate-react: 0.91.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(slate@0.91.4) + superstruct: 1.0.4 + unist-util-visit: 5.0.0 + urql: 4.2.2(@urql/core@5.2.0(graphql@16.11.0))(react@19.1.1) + y-prosemirror: 1.3.7(prosemirror-model@1.25.3)(prosemirror-state@1.4.3)(prosemirror-view@1.41.1)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27) + y-protocols: 1.0.6(yjs@13.6.27) + yjs: 13.6.27 + transitivePeerDependencies: + - next + - supports-color + + '@lucide/svelte@0.544.0(svelte@5.39.5)': + dependencies: + svelte: 5.39.5 + + '@markdoc/markdoc@0.4.0(@types/react@19.1.13)(react@19.1.1)': + optionalDependencies: + '@types/markdown-it': 12.2.3 + '@types/react': 19.1.13 + react: 19.1.1 + + '@oslojs/encoding@1.1.0': {} + + '@react-aria/actiongroup@3.7.20(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-types/actiongroup': 3.4.20(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/breadcrumbs@3.5.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/link': 3.8.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/breadcrumbs': 3.7.16(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/button@3.14.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/toolbar': 3.0.0-beta.20(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/toggle': 3.9.1(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/calendar@3.9.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/calendar': 3.8.4(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/calendar': 3.7.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/checkbox@3.16.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/form': 3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/toggle': 3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/checkbox': 3.7.1(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/toggle': 3.9.1(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/combobox@3.13.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/listbox': 3.14.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/menu': 3.19.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/textfield': 3.18.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/combobox': 3.11.1(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/combobox': 3.13.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/datepicker@3.15.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@internationalized/number': 3.6.5 + '@internationalized/string': 3.2.7 + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/form': 3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/spinbutton': 3.6.18(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/datepicker': 3.15.1(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/calendar': 3.7.4(react@19.1.1) + '@react-types/datepicker': 3.13.1(react@19.1.1) + '@react-types/dialog': 3.5.21(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/dialog@3.5.30(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/dialog': 3.5.21(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/dnd@3.11.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@internationalized/string': 3.2.7 + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/dnd': 3.7.0(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/focus@3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/form@3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/grid@3.14.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/grid': 3.11.5(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/gridlist@3.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/grid': 3.14.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-stately/tree': 3.9.2(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/i18n@3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@internationalized/message': 3.1.8 + '@internationalized/number': 3.6.5 + '@internationalized/string': 3.2.7 + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/interactions@3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/label@3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/landmark@3.0.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.1.1) + + '@react-aria/link@3.8.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/link': 3.6.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/listbox@3.14.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-types/listbox': 3.7.3(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/live-announcer@3.4.4': + dependencies: + '@swc/helpers': 0.5.17 + + '@react-aria/menu@3.19.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/overlays': 3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/menu': 3.9.7(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-stately/tree': 3.9.2(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/menu': 3.10.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/meter@3.4.26(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/progress': 3.4.26(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/meter': 3.4.12(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/numberfield@3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/spinbutton': 3.6.18(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/textfield': 3.18.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/numberfield': 3.10.1(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/numberfield': 3.8.14(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/overlays@3.29.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/visually-hidden': 3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/progress@3.4.26(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/progress': 3.5.15(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/radio@3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/form': 3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/radio': 3.11.1(react@19.1.1) + '@react-types/radio': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/searchfield@3.8.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/textfield': 3.18.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/searchfield': 3.5.15(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/searchfield': 3.6.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/select@3.16.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/form': 3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/listbox': 3.14.8(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/menu': 3.19.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/visually-hidden': 3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/select': 3.7.1(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/select': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/selection@3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/separator@3.4.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/spinbutton@3.6.18(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/ssr@3.9.10(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-aria/switch@3.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/toggle': 3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/toggle': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/switch': 3.5.14(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/table@3.17.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/grid': 3.14.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/live-announcer': 3.4.4 + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/visually-hidden': 3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/table': 3.15.0(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/table': 3.13.3(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/tabs@3.10.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/tabs': 3.8.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/tabs': 3.3.18(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/tag@3.7.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/gridlist': 3.14.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/selection': 3.25.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/textfield@3.18.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/form': 3.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/label': 3.7.21(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/textfield': 3.12.5(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/toast@3.0.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/landmark': 3.0.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/toast': 3.1.0(react@19.1.1) + '@react-types/button': 3.14.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/toggle@3.12.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/toggle': 3.9.1(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/toolbar@3.0.0-beta.20(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/focus': 3.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/tooltip@3.8.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/tooltip': 3.5.7(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/tooltip': 3.4.20(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/utils@3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/ssr': 3.9.10(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/virtualizer@4.1.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/i18n': 3.12.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-stately/virtualizer': 4.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-aria/visually-hidden@3.8.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/interactions': 3.25.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-stately/calendar@3.8.4(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/calendar': 3.7.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/checkbox@3.7.1(react@19.1.1)': + dependencies: + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/collections@3.12.7(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/combobox@3.11.1(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-stately/select': 3.7.1(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/combobox': 3.13.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/data@3.14.0(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/datepicker@3.15.1(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@internationalized/string': 3.2.7 + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/datepicker': 3.13.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/dnd@3.7.0(react@19.1.1)': + dependencies: + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/flags@3.1.2': + dependencies: + '@swc/helpers': 0.5.17 + + '@react-stately/form@3.2.1(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/grid@3.11.5(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/layout@4.5.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/table': 3.15.0(react@19.1.1) + '@react-stately/virtualizer': 4.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/table': 3.13.3(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-stately/list@3.13.0(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/menu@3.9.7(react@19.1.1)': + dependencies: + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-types/menu': 3.10.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/numberfield@3.10.1(react@19.1.1)': + dependencies: + '@internationalized/number': 3.6.5 + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/numberfield': 3.8.14(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/overlays@3.6.19(react@19.1.1)': + dependencies: + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/overlays': 3.9.1(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/radio@3.11.1(react@19.1.1)': + dependencies: + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/radio': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/searchfield@3.5.15(react@19.1.1)': + dependencies: + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/searchfield': 3.6.5(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/select@3.7.1(react@19.1.1)': + dependencies: + '@react-stately/form': 3.2.1(react@19.1.1) + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-types/select': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/selection@3.20.5(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/table@3.15.0(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/flags': 3.1.2 + '@react-stately/grid': 3.11.5(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/table': 3.13.3(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/tabs@3.8.5(react@19.1.1)': + dependencies: + '@react-stately/list': 3.13.0(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/tabs': 3.3.18(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/toast@3.1.0(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) + + '@react-stately/toggle@3.9.1(react@19.1.1)': + dependencies: + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/checkbox': 3.10.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/tooltip@3.5.7(react@19.1.1)': + dependencies: + '@react-stately/overlays': 3.6.19(react@19.1.1) + '@react-types/tooltip': 3.4.20(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/tree@3.9.2(react@19.1.1)': + dependencies: + '@react-stately/collections': 3.12.7(react@19.1.1) + '@react-stately/selection': 3.20.5(react@19.1.1) + '@react-stately/utils': 3.10.8(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/utils@3.10.8(react@19.1.1)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.1.1 + + '@react-stately/virtualizer@4.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + dependencies: + '@react-aria/utils': 3.30.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + '@swc/helpers': 0.5.17 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + + '@react-types/actionbar@3.1.18(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/actiongroup@3.4.20(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/breadcrumbs@3.7.16(react@19.1.1)': + dependencies: + '@react-types/link': 3.6.4(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/button@3.14.0(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/calendar@3.7.4(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/checkbox@3.10.1(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/combobox@3.13.8(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/datepicker@3.13.1(react@19.1.1)': + dependencies: + '@internationalized/date': 3.9.0 + '@react-types/calendar': 3.7.4(react@19.1.1) + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/dialog@3.5.21(react@19.1.1)': + dependencies: + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/grid@3.3.5(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/link@3.6.4(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/listbox@3.7.3(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/menu@3.10.4(react@19.1.1)': + dependencies: + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/meter@3.4.12(react@19.1.1)': + dependencies: + '@react-types/progress': 3.5.15(react@19.1.1) + react: 19.1.1 + + '@react-types/numberfield@3.8.14(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/overlays@3.9.1(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/progress@3.5.15(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/radio@3.9.1(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/searchfield@3.6.5(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + '@react-types/textfield': 3.12.5(react@19.1.1) + react: 19.1.1 + + '@react-types/select@3.10.1(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/shared@3.32.0(react@19.1.1)': + dependencies: + react: 19.1.1 + + '@react-types/switch@3.5.14(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/table@3.13.3(react@19.1.1)': + dependencies: + '@react-types/grid': 3.3.5(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/tabs@3.3.18(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/textfield@3.12.5(react@19.1.1)': + dependencies: + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@react-types/tooltip@3.4.20(react@19.1.1)': + dependencies: + '@react-types/overlays': 3.9.1(react@19.1.1) + '@react-types/shared': 3.32.0(react@19.1.1) + react: 19.1.1 + + '@rollup/pluginutils@5.3.0(rollup@4.52.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.0 + + '@rollup/rollup-android-arm-eabi@4.52.0': + optional: true + + '@rollup/rollup-android-arm64@4.52.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.0': + optional: true + + '@rollup/rollup-darwin-x64@4.52.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.0': + optional: true + + '@shikijs/core@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/themes@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/types@3.13.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sindresorhus/slugify@1.1.2': + dependencies: + '@sindresorhus/transliterate': 0.1.2 + escape-string-regexp: 4.0.0 + + '@sindresorhus/transliterate@0.1.2': + dependencies: + escape-string-regexp: 2.0.0 + lodash.deburr: 4.1.0 + + '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': + dependencies: + acorn: 8.15.0 + + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)))(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1))': + dependencies: + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + debug: 4.4.3 + svelte: 5.39.5 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1))': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)))(svelte@5.39.5)(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + debug: 4.4.3 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.19 + svelte: 5.39.5 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + transitivePeerDependencies: + - supports-color + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tabler/icons@3.35.0': {} + + '@tailwindcss/forms@0.5.10(tailwindcss@4.1.13)': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 4.1.13 + + '@tailwindcss/node@4.1.13': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + magic-string: 0.30.19 + source-map-js: 1.2.1 + tailwindcss: 4.1.13 + + '@tailwindcss/oxide-android-arm64@4.1.13': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.13': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.13': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + optional: true + + '@tailwindcss/oxide@4.1.13': + dependencies: + detect-libc: 2.1.0 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-x64': 4.1.13 + '@tailwindcss/oxide-freebsd-x64': 4.1.13 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-x64-musl': 4.1.13 + '@tailwindcss/oxide-wasm32-wasi': 4.1.13 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 + + '@tailwindcss/typography@0.5.18(tailwindcss@4.1.13)': + dependencies: + postcss-selector-parser: 6.0.10 + tailwindcss: 4.1.13 + + '@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1))': + dependencies: + '@tailwindcss/node': 4.1.13 + '@tailwindcss/oxide': 4.1.13 + tailwindcss: 4.1.13 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + + '@tanstack/table-core@8.21.3': {} + + '@toeverything/y-indexeddb@0.10.0-canary.9(yjs@13.6.27)': + dependencies: + idb: 7.1.1 + nanoid: 5.1.5 + y-provider: 0.10.0-canary.9(yjs@13.6.27) + yjs: 13.6.27 + + '@trysound/sax@0.2.0': {} + + '@ts-gql/tag@0.7.3(graphql@16.11.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + graphql: 16.11.0 + graphql-tag: 2.12.6(graphql@16.11.0) + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/fontkit@2.0.8': + dependencies: + '@types/node': 24.5.2 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/is-hotkey@0.1.10': {} + + '@types/linkify-it@5.0.0': + optional: true + + '@types/lodash@4.17.20': {} + + '@types/markdown-it@12.2.3': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + optional: true + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdurl@2.0.0': + optional: true + + '@types/ms@2.1.0': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@24.5.2': + dependencies: + undici-types: 7.12.0 + + '@types/parse-json@4.0.2': {} + + '@types/react@19.1.13': + dependencies: + csstype: 3.1.3 + + '@types/tar@6.1.13': + dependencies: + '@types/node': 24.5.2 + minipass: 4.2.8 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 24.5.2 + optional: true + + '@ungap/structured-clone@1.3.0': {} + + '@urql/core@5.2.0(graphql@16.11.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.11.0) + wonka: 6.3.5 + transitivePeerDependencies: + - graphql + + '@urql/exchange-auth@2.2.1(@urql/core@5.2.0(graphql@16.11.0))': + dependencies: + '@urql/core': 5.2.0(graphql@16.11.0) + wonka: 6.3.5 + + '@urql/exchange-graphcache@7.2.4(@urql/core@5.2.0(graphql@16.11.0))(graphql@16.11.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.11.0) + '@urql/core': 5.2.0(graphql@16.11.0) + wonka: 6.3.5 + transitivePeerDependencies: + - graphql + + '@urql/exchange-persisted@4.3.1(@urql/core@5.2.0(graphql@16.11.0))': + dependencies: + '@urql/core': 5.2.0(graphql@16.11.0) + wonka: 6.3.5 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + astro-icon@1.1.5: + dependencies: + '@iconify/tools': 4.1.3 + '@iconify/types': 2.0.0 + '@iconify/utils': 2.3.0 + transitivePeerDependencies: + - debug + - supports-color + + astro@5.13.9(@types/node@24.5.2)(idb-keyval@6.2.2)(jiti@2.5.1)(lightningcss@1.30.1)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1): + dependencies: + '@astrojs/compiler': 2.13.0 + '@astrojs/internal-helpers': 0.7.2 + '@astrojs/markdown-remark': 6.3.6 + '@astrojs/telemetry': 3.3.0 + '@capsizecss/unpack': 2.4.0 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.3.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 1.0.2 + cssesc: 3.0.0 + debug: 4.4.3 + deterministic-object-hash: 2.0.2 + devalue: 5.3.2 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 1.7.0 + esbuild: 0.25.10 + estree-walker: 3.0.3 + flattie: 1.1.1 + fontace: 0.3.0 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.19 + magicast: 0.3.5 + mrmime: 2.0.1 + neotraverse: 0.6.18 + p-limit: 6.2.0 + p-queue: 8.1.1 + package-manager-detector: 1.3.0 + picomatch: 4.0.3 + prompts: 2.4.2 + rehype: 13.0.2 + semver: 7.7.2 + shiki: 3.13.0 + smol-toml: 1.4.2 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.2) + ultrahtml: 1.6.0 + unifont: 0.5.2 + unist-util-visit: 5.0.0 + unstorage: 1.17.1(idb-keyval@6.2.2) + vfile: 6.0.3 + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + vitefu: 1.1.1(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)) + xxhash-wasm: 1.1.0 + yargs-parser: 21.1.1 + yocto-spinner: 0.2.3 + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76) + optionalDependencies: + sharp: 0.34.4 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - encoding + - idb-keyval + - ioredis + - jiti + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - uploadthing + - yaml + + asynckit@0.4.0: {} + + axios@1.12.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.4 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base-64@1.0.0: {} + + base64-js@1.5.1: {} + + bits-ui@2.11.1(@internationalized/date@3.9.0)(svelte@5.39.5): + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/dom': 1.7.4 + '@internationalized/date': 3.9.0 + esm-env: 1.2.2 + runed: 0.31.1(svelte@5.39.5) + svelte: 5.39.5 + svelte-toolbelt: 0.10.5(svelte@5.39.5) + tabbable: 6.2.0 + + blob-to-buffer@1.2.9: {} + + boolbase@1.0.0: {} + + boxen@8.0.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 8.0.0 + chalk: 5.6.2 + cli-boxes: 3.0.0 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.2 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + + buffer-crc32@0.2.13: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camelcase@8.0.0: {} + + ccount@2.0.1: {} + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 9.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 6.21.3 + whatwg-mimetype: 4.0.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@2.0.0: {} + + chownr@3.0.0: {} + + ci-info@4.3.0: {} + + cli-boxes@3.0.0: {} + + clone@2.1.2: {} + + clsx@2.1.1: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@7.2.0: {} + + common-ancestor-path@1.0.1: {} + + compute-scroll-into-view@1.0.20: {} + + compute-scroll-into-view@3.1.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + convert-source-map@1.9.0: {} + + cookie-es@1.2.2: {} + + cookie@1.0.2: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + csstype@3.1.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + dedent-js@1.0.1: {} + + deepmerge@4.3.1: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.5: {} + + detect-libc@2.1.0: {} + + deterministic-object-hash@2.0.2: + dependencies: + base-64: 1.0.0 + + devalue@5.3.2: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dfa@1.2.0: {} + + diff@5.2.0: {} + + direction@1.0.4: {} + + dlv@1.1.3: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dset@3.1.4: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + emery@1.4.4: {} + + emoji-regex@10.5.0: {} + + emoji-regex@8.0.0: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + + entities@4.5.0: {} + + entities@6.0.1: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.10: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + esm-env@1.2.2: {} + + esrap@2.1.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + event-target-shim@6.0.2: {} + + eventemitter3@5.0.1: {} + + export-to-csv@1.4.0: {} + + exsolve@1.0.7: {} + + extend@3.0.2: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + facepaint@1.2.1: {} + + fast-deep-equal@3.1.3: {} + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + find-root@1.1.0: {} + + flattie@1.1.1: {} + + follow-redirects@1.15.11: {} + + fontace@0.3.0: + dependencies: + '@types/fontkit': 2.0.8 + fontkit: 2.0.4 + + fontkit@2.0.4: + dependencies: + '@swc/helpers': 0.5.17 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.2 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-east-asian-width@1.4.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.3 + + github-buttons@2.29.1: {} + + github-slugger@2.0.0: {} + + globals@15.15.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphql-tag@2.12.6(graphql@16.11.0): + dependencies: + graphql: 16.11.0 + tslib: 2.8.1 + + graphql@16.11.0: {} + + gsap@3.13.0: {} + + h3@1.15.4: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.3 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.0 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-cache-semantics@4.2.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + idb-keyval@6.2.2: {} + + idb@7.1.1: {} + + ignore@5.3.2: {} + + immer@9.0.21: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + inline-style-parser@0.2.4: {} + + intl-messageformat@10.7.16: + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/icu-messageformat-parser': 2.11.2 + tslib: 2.8.1 + + iron-webcrypto@1.2.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-decimal@2.0.1: {} + + is-docker@3.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-hexadecimal@2.0.1: {} + + is-hotkey@0.1.8: {} + + is-hotkey@0.2.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-plain-obj@4.1.0: {} + + is-plain-object@5.0.0: {} + + is-reference@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isomorphic.js@0.2.5: {} + + jiti@2.5.1: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + kolorist@1.8.0: {} + + lib0@0.2.114: + dependencies: + isomorphic.js: 0.2.5 + + lightgallery@2.9.0-beta.1: {} + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.0 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + lines-and-columns@1.2.4: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.8.0 + pkg-types: 1.3.1 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + locate-character@3.0.0: {} + + lodash.deburr@4.1.0: {} + + lodash@4.17.21: {} + + longest-streak@3.1.0: {} + + lru-cache@10.4.3: {} + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + source-map-js: 1.2.1 + + markdown-table@3.0.4: {} + + match-sorter@6.3.4: + dependencies: + '@babel/runtime': 7.28.4 + remove-accents: 0.5.0 + + math-intrinsics@1.1.0: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.12.2: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mini-svg-data-uri@1.4.4: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@4.2.8: {} + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + nanoid@5.1.5: {} + + neotraverse@0.6.18: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-mock-http@1.0.3: {} + + normalize-path@3.0.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 + + ohash@2.0.11: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.3: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + + orderedmap@2.1.1: {} + + p-limit@6.2.0: + dependencies: + yocto-queue: 1.2.1 + + p-queue@8.1.1: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.4 + + p-timeout@6.1.4: {} + + package-manager-detector@1.3.0: {} + + pako@0.2.9: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + partysocket@0.0.22: + dependencies: + event-target-shim: 6.0.2 + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prismjs@1.30.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + property-information@6.5.0: {} + + property-information@7.1.0: {} + + prosemirror-commands@1.7.1: + dependencies: + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + + prosemirror-history@1.4.1: + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.1 + rope-sequence: 1.3.4 + + prosemirror-keymap@1.2.3: + dependencies: + prosemirror-state: 1.4.3 + w3c-keyname: 2.2.8 + + prosemirror-model@1.25.3: + dependencies: + orderedmap: 2.1.1 + + prosemirror-state@1.4.3: + dependencies: + prosemirror-model: 1.25.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.1 + + prosemirror-tables@1.8.1: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.1 + + prosemirror-transform@1.10.4: + dependencies: + prosemirror-model: 1.25.3 + + prosemirror-view@1.41.1: + dependencies: + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + + proxy-from-env@1.1.0: {} + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + quansync@0.2.11: {} + + radix3@1.1.2: {} + + react-dom@19.1.1(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.26.0 + + react@19.1.1: {} + + readdirp@4.1.2: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remove-accents@0.5.0: {} + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restructure@3.0.2: {} + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.2.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + rollup@4.52.0: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.0 + '@rollup/rollup-android-arm64': 4.52.0 + '@rollup/rollup-darwin-arm64': 4.52.0 + '@rollup/rollup-darwin-x64': 4.52.0 + '@rollup/rollup-freebsd-arm64': 4.52.0 + '@rollup/rollup-freebsd-x64': 4.52.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.0 + '@rollup/rollup-linux-arm-musleabihf': 4.52.0 + '@rollup/rollup-linux-arm64-gnu': 4.52.0 + '@rollup/rollup-linux-arm64-musl': 4.52.0 + '@rollup/rollup-linux-loong64-gnu': 4.52.0 + '@rollup/rollup-linux-ppc64-gnu': 4.52.0 + '@rollup/rollup-linux-riscv64-gnu': 4.52.0 + '@rollup/rollup-linux-riscv64-musl': 4.52.0 + '@rollup/rollup-linux-s390x-gnu': 4.52.0 + '@rollup/rollup-linux-x64-gnu': 4.52.0 + '@rollup/rollup-linux-x64-musl': 4.52.0 + '@rollup/rollup-openharmony-arm64': 4.52.0 + '@rollup/rollup-win32-arm64-msvc': 4.52.0 + '@rollup/rollup-win32-ia32-msvc': 4.52.0 + '@rollup/rollup-win32-x64-gnu': 4.52.0 + '@rollup/rollup-win32-x64-msvc': 4.52.0 + fsevents: 2.3.3 + + rope-sequence@1.3.4: {} + + runed@0.29.2(svelte@5.39.5): + dependencies: + esm-env: 1.2.2 + svelte: 5.39.5 + + runed@0.31.1(svelte@5.39.5): + dependencies: + esm-env: 1.2.2 + svelte: 5.39.5 + + safer-buffer@2.1.2: {} + + scheduler@0.26.0: {} + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + scule@1.3.0: {} + + semver@7.7.2: {} + + set-cookie-parser@2.7.1: {} + + sharp@0.34.4: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.0 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 + + shiki@3.13.0: + dependencies: + '@shikijs/core': 3.13.0 + '@shikijs/engine-javascript': 3.13.0 + '@shikijs/engine-oniguruma': 3.13.0 + '@shikijs/langs': 3.13.0 + '@shikijs/themes': 3.13.0 + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + sisteransi@1.0.5: {} + + slate-history@0.86.0(slate@0.91.4): + dependencies: + is-plain-object: 5.0.0 + slate: 0.91.4 + + slate-react@0.91.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(slate@0.91.4): + dependencies: + '@juggle/resize-observer': 3.4.0 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.17.20 + direction: 1.0.4 + is-hotkey: 0.1.8 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + scroll-into-view-if-needed: 2.2.31 + slate: 0.91.4 + tiny-invariant: 1.0.6 + + slate@0.91.4: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + smol-toml@1.4.2: {} + + source-map-js@1.2.1: {} + + source-map@0.5.7: {} + + space-separated-tokens@2.0.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + style-to-object@1.0.9: + dependencies: + inline-style-parser: 0.2.4 + + stylis@4.2.0: {} + + superstruct@1.0.4: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + svelte-toolbelt@0.10.5(svelte@5.39.5): + dependencies: + clsx: 2.1.1 + runed: 0.29.2(svelte@5.39.5) + style-to-object: 1.0.9 + svelte: 5.39.5 + + svelte2tsx@0.7.44(svelte@5.39.5)(typescript@5.9.2): + dependencies: + dedent-js: 1.0.1 + scule: 1.3.0 + svelte: 5.39.5 + typescript: 5.9.2 + + svelte@5.39.5: + dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) + '@types/estree': 1.0.8 + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + clsx: 2.1.1 + esm-env: 1.2.2 + esrap: 2.1.0 + is-reference: 3.0.3 + locate-character: 3.0.0 + magic-string: 0.30.19 + zimmerframe: 1.1.4 + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.2.2 + css-tree: 2.3.1 + css-what: 6.2.2 + csso: 5.0.5 + picocolors: 1.1.1 + + tabbable@6.2.0: {} + + tailwind-merge@3.3.1: {} + + tailwind-variants@3.1.1(tailwind-merge@3.3.1)(tailwindcss@4.1.13): + dependencies: + tailwindcss: 4.1.13 + optionalDependencies: + tailwind-merge: 3.3.1 + + tailwindcss@4.1.13: {} + + tapable@2.2.3: {} + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + tiny-inflate@1.0.3: {} + + tiny-invariant@1.0.6: {} + + tiny-warning@1.0.3: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tr46@0.0.3: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + tsconfck@3.1.6(typescript@5.9.2): + optionalDependencies: + typescript: 5.9.2 + + tslib@2.8.1: {} + + tw-animate-css@1.3.8: {} + + type-fest@4.41.0: {} + + typescript@5.9.2: {} + + ufo@1.6.1: {} + + ultrahtml@1.6.0: {} + + uncrypto@0.1.3: {} + + undici-types@7.12.0: {} + + undici@6.21.3: {} + + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unifont@0.5.2: + dependencies: + css-tree: 3.1.0 + ofetch: 1.4.1 + ohash: 2.0.11 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + unstorage@1.17.1(idb-keyval@6.2.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.4 + lru-cache: 10.4.3 + node-fetch-native: 1.6.7 + ofetch: 1.4.1 + ufo: 1.6.1 + optionalDependencies: + idb-keyval: 6.2.2 + + urql@4.2.2(@urql/core@5.2.0(graphql@16.11.0))(react@19.1.1): + dependencies: + '@urql/core': 5.2.0(graphql@16.11.0) + react: 19.1.1 + wonka: 6.3.5 + + use-sync-external-store@1.5.0(react@19.1.1): + dependencies: + react: 19.1.1 + + util-deprecate@1.0.2: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.5.2 + fsevents: 2.3.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + yaml: 2.8.1 + + vitefu@1.1.1(vite@6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1)): + optionalDependencies: + vite: 6.3.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(yaml@2.8.1) + + w3c-keyname@2.2.8: {} + + web-namespaces@2.0.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-pm-runs@1.1.0: {} + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + wonka@6.3.5: {} + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + + wrappy@1.0.2: {} + + xxhash-wasm@1.1.0: {} + + y-prosemirror@1.3.7(prosemirror-model@1.25.3)(prosemirror-state@1.4.3)(prosemirror-view@1.41.1)(y-protocols@1.0.6(yjs@13.6.27))(yjs@13.6.27): + dependencies: + lib0: 0.2.114 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-view: 1.41.1 + y-protocols: 1.0.6(yjs@13.6.27) + yjs: 13.6.27 + + y-protocols@1.0.6(yjs@13.6.27): + dependencies: + lib0: 0.2.114 + yjs: 13.6.27 + + y-provider@0.10.0-canary.9(yjs@13.6.27): + dependencies: + yjs: 13.6.27 + + yallist@4.0.0: {} + + yallist@5.0.0: {} + + yaml@1.10.2: {} + + yaml@2.8.1: + optional: true + + yargs-parser@21.1.1: {} + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yjs@13.6.27: + dependencies: + lib0: 0.2.114 + + yocto-queue@1.2.1: {} + + yocto-spinner@0.2.3: + dependencies: + yoctocolors: 2.1.2 + + yoctocolors@2.1.2: {} + + zimmerframe@1.1.4: {} + + zod-to-json-schema@3.24.6(zod@3.25.76): + dependencies: + zod: 3.25.76 + + zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76): + dependencies: + typescript: 5.9.2 + zod: 3.25.76 + + zod@3.25.76: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..df55da4 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +onlyBuiltDependencies: + - "@tailwindcss/oxide" + - esbuild + - sharp diff --git a/ads.txt b/public/ads.txt similarity index 100% rename from ads.txt rename to public/ads.txt diff --git a/public/gol.svg b/public/gol.svg new file mode 100644 index 0000000..cb3b77b --- /dev/null +++ b/public/gol.svg @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/google7b337a3ed1102ed9.html b/public/google7b337a3ed1102ed9.html similarity index 100% rename from google7b337a3ed1102ed9.html rename to public/google7b337a3ed1102ed9.html diff --git a/public/gt.svg b/public/gt.svg new file mode 100644 index 0000000..936b6bf --- /dev/null +++ b/public/gt.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/home.svg b/public/home.svg new file mode 100644 index 0000000..355a5dd --- /dev/null +++ b/public/home.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/city.jpg b/public/images/city.jpg new file mode 100644 index 0000000..0ce3ff5 Binary files /dev/null and b/public/images/city.jpg differ diff --git a/img/mbg.jpg b/public/images/mbg.jpg similarity index 100% rename from img/mbg.jpg rename to public/images/mbg.jpg diff --git a/img/razor.jpg b/public/images/razor.jpg similarity index 100% rename from img/razor.jpg rename to public/images/razor.jpg diff --git a/img/wildstyle.jpg b/public/images/wildstyle.jpg similarity index 100% rename from img/wildstyle.jpg rename to public/images/wildstyle.jpg diff --git a/img/mol.png b/public/mol.png similarity index 100% rename from img/mol.png rename to public/mol.png diff --git a/img/snowf.svg b/public/snowf.svg similarity index 95% rename from img/snowf.svg rename to public/snowf.svg index 5d5db39..86a612b 100644 --- a/img/snowf.svg +++ b/public/snowf.svg @@ -1,25 +1,39 @@ - - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + l19.8-6.4l-1.2,14.8L991.9-26z M1010.2-37.1l-19.8,6.4l10.2-17.7L1010.2-37.1z M997.6-59.6l5-1.9l-2.7,4.6L997.6-59.6z" /> + - - + \ No newline at end of file diff --git a/public/wfp.svg b/public/wfp.svg new file mode 100644 index 0000000..7dba93f --- /dev/null +++ b/public/wfp.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/screens/2dfx/3ico.jpg b/screens/2dfx/3ico.jpg deleted file mode 100644 index 565c4b1..0000000 Binary files a/screens/2dfx/3ico.jpg and /dev/null differ diff --git a/screens/2dfx/bg.jpg b/screens/2dfx/bg.jpg deleted file mode 100644 index 7a9bb3f..0000000 Binary files a/screens/2dfx/bg.jpg and /dev/null differ diff --git a/screens/2dfx/downloads-bg.jpg b/screens/2dfx/downloads-bg.jpg deleted file mode 100644 index 7a9bb3f..0000000 Binary files a/screens/2dfx/downloads-bg.jpg and /dev/null differ diff --git a/screens/2dfx/downloads-bg1.jpg b/screens/2dfx/downloads-bg1.jpg deleted file mode 100644 index 2e1e692..0000000 Binary files a/screens/2dfx/downloads-bg1.jpg and /dev/null differ diff --git a/screens/2dfx/gta_sa2014-06-0917-36n5s8q.jpg b/screens/2dfx/gta_sa2014-06-0917-36n5s8q.jpg deleted file mode 100644 index 96e3092..0000000 Binary files a/screens/2dfx/gta_sa2014-06-0917-36n5s8q.jpg and /dev/null differ diff --git a/screens/2dfx/gta_sa2014-06-0917-36n5s8q.png b/screens/2dfx/gta_sa2014-06-0917-36n5s8q.png deleted file mode 100644 index 6b82f2e..0000000 Binary files a/screens/2dfx/gta_sa2014-06-0917-36n5s8q.png and /dev/null differ diff --git a/screens/2dfx/intro-bg.jpg b/screens/2dfx/intro-bg.jpg deleted file mode 100644 index 111ee98..0000000 Binary files a/screens/2dfx/intro-bg.jpg and /dev/null differ diff --git a/screens/2dfx/ivico.jpg b/screens/2dfx/ivico.jpg deleted file mode 100644 index 3b238bf..0000000 Binary files a/screens/2dfx/ivico.jpg and /dev/null differ diff --git a/screens/2dfx/ivico.png b/screens/2dfx/ivico.png deleted file mode 100644 index 4f5cf1e..0000000 Binary files a/screens/2dfx/ivico.png and /dev/null differ diff --git a/screens/2dfx/lcsico.jpg b/screens/2dfx/lcsico.jpg deleted file mode 100644 index 22473a3..0000000 Binary files a/screens/2dfx/lcsico.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gta3a.jpg b/screens/2dfx/p2dfx_gta3a.jpg deleted file mode 100644 index 1cdf421..0000000 Binary files a/screens/2dfx/p2dfx_gta3a.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gta3a_preview.jpg b/screens/2dfx/p2dfx_gta3a_preview.jpg deleted file mode 100644 index 22ffd40..0000000 Binary files a/screens/2dfx/p2dfx_gta3a_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gta3b.jpg b/screens/2dfx/p2dfx_gta3b.jpg deleted file mode 100644 index 6612dd8..0000000 Binary files a/screens/2dfx/p2dfx_gta3b.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gta3b_preview.jpg b/screens/2dfx/p2dfx_gta3b_preview.jpg deleted file mode 100644 index 66d843d..0000000 Binary files a/screens/2dfx/p2dfx_gta3b_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gta3bg.jpg b/screens/2dfx/p2dfx_gta3bg.jpg deleted file mode 100644 index 2584e6a..0000000 Binary files a/screens/2dfx/p2dfx_gta3bg.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaiva.jpg b/screens/2dfx/p2dfx_gtaiva.jpg deleted file mode 100644 index 9791aa8..0000000 Binary files a/screens/2dfx/p2dfx_gtaiva.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaiva_preview.jpg b/screens/2dfx/p2dfx_gtaiva_preview.jpg deleted file mode 100644 index 421eb67..0000000 Binary files a/screens/2dfx/p2dfx_gtaiva_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaivb.jpg b/screens/2dfx/p2dfx_gtaivb.jpg deleted file mode 100644 index 2669d52..0000000 Binary files a/screens/2dfx/p2dfx_gtaivb.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaivb_preview.jpg b/screens/2dfx/p2dfx_gtaivb_preview.jpg deleted file mode 100644 index 9c8a7fc..0000000 Binary files a/screens/2dfx/p2dfx_gtaivb_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaivbg.jpg b/screens/2dfx/p2dfx_gtaivbg.jpg deleted file mode 100644 index 9733617..0000000 Binary files a/screens/2dfx/p2dfx_gtaivbg.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaivc.jpg b/screens/2dfx/p2dfx_gtaivc.jpg deleted file mode 100644 index 67726d0..0000000 Binary files a/screens/2dfx/p2dfx_gtaivc.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtaivc_preview.jpg b/screens/2dfx/p2dfx_gtaivc_preview.jpg deleted file mode 100644 index b4418b8..0000000 Binary files a/screens/2dfx/p2dfx_gtaivc_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtalcsa.jpg b/screens/2dfx/p2dfx_gtalcsa.jpg deleted file mode 100644 index 205eff2..0000000 Binary files a/screens/2dfx/p2dfx_gtalcsa.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtalcsa_preview.jpg b/screens/2dfx/p2dfx_gtalcsa_preview.jpg deleted file mode 100644 index 1df735c..0000000 Binary files a/screens/2dfx/p2dfx_gtalcsa_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtasaa.jpg b/screens/2dfx/p2dfx_gtasaa.jpg deleted file mode 100644 index cad7be4..0000000 Binary files a/screens/2dfx/p2dfx_gtasaa.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtasaa_preview.jpg b/screens/2dfx/p2dfx_gtasaa_preview.jpg deleted file mode 100644 index 05e22a1..0000000 Binary files a/screens/2dfx/p2dfx_gtasaa_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtasab.jpg b/screens/2dfx/p2dfx_gtasab.jpg deleted file mode 100644 index de4ac74..0000000 Binary files a/screens/2dfx/p2dfx_gtasab.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtasab_preview.jpg b/screens/2dfx/p2dfx_gtasab_preview.jpg deleted file mode 100644 index 3322093..0000000 Binary files a/screens/2dfx/p2dfx_gtasab_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavca.jpg b/screens/2dfx/p2dfx_gtavca.jpg deleted file mode 100644 index cdcddea..0000000 Binary files a/screens/2dfx/p2dfx_gtavca.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavca_preview.jpg b/screens/2dfx/p2dfx_gtavca_preview.jpg deleted file mode 100644 index 281ec0b..0000000 Binary files a/screens/2dfx/p2dfx_gtavca_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcb.jpg b/screens/2dfx/p2dfx_gtavcb.jpg deleted file mode 100644 index 0c56a93..0000000 Binary files a/screens/2dfx/p2dfx_gtavcb.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcb_preview.jpg b/screens/2dfx/p2dfx_gtavcb_preview.jpg deleted file mode 100644 index 3223210..0000000 Binary files a/screens/2dfx/p2dfx_gtavcb_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcbg.jpg b/screens/2dfx/p2dfx_gtavcbg.jpg deleted file mode 100644 index 885850f..0000000 Binary files a/screens/2dfx/p2dfx_gtavcbg.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcsa.jpg b/screens/2dfx/p2dfx_gtavcsa.jpg deleted file mode 100644 index d19b90f..0000000 Binary files a/screens/2dfx/p2dfx_gtavcsa.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcsa_preview.jpg b/screens/2dfx/p2dfx_gtavcsa_preview.jpg deleted file mode 100644 index 1500030..0000000 Binary files a/screens/2dfx/p2dfx_gtavcsa_preview.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcsb.jpg b/screens/2dfx/p2dfx_gtavcsb.jpg deleted file mode 100644 index 2770ea4..0000000 Binary files a/screens/2dfx/p2dfx_gtavcsb.jpg and /dev/null differ diff --git a/screens/2dfx/p2dfx_gtavcsb_preview.jpg b/screens/2dfx/p2dfx_gtavcsb_preview.jpg deleted file mode 100644 index 4698b90..0000000 Binary files a/screens/2dfx/p2dfx_gtavcsb_preview.jpg and /dev/null differ diff --git a/screens/2dfx/saico.jpg b/screens/2dfx/saico.jpg deleted file mode 100644 index c576a2e..0000000 Binary files a/screens/2dfx/saico.jpg and /dev/null differ diff --git a/screens/2dfx/vcico.jpg b/screens/2dfx/vcico.jpg deleted file mode 100644 index bb899db..0000000 Binary files a/screens/2dfx/vcico.jpg and /dev/null differ diff --git a/screens/2dfx/vcsico.jpg b/screens/2dfx/vcsico.jpg deleted file mode 100644 index b419246..0000000 Binary files a/screens/2dfx/vcsico.jpg and /dev/null differ diff --git a/screens/alienisolation.html b/screens/alienisolation.html deleted file mode 100644 index 04afc05..0000000 --- a/screens/alienisolation.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/bully.html b/screens/bully.html deleted file mode 100644 index 7974eed..0000000 --- a/screens/bully.html +++ /dev/null @@ -1,95 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/burnout3.html b/screens/burnout3.html deleted file mode 100644 index 9330326..0000000 --- a/screens/burnout3.html +++ /dev/null @@ -1,103 +0,0 @@ - - -
- -
- - - - diff --git a/screens/callofcthulhu.html b/screens/callofcthulhu.html deleted file mode 100644 index cb501c1..0000000 --- a/screens/callofcthulhu.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/coldfear.html b/screens/coldfear.html deleted file mode 100644 index 9a2dda8..0000000 --- a/screens/coldfear.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/condemned.html b/screens/condemned.html deleted file mode 100644 index 43df416..0000000 --- a/screens/condemned.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - diff --git a/screens/convert.bat b/screens/convert.bat deleted file mode 100644 index 122bdf9..0000000 --- a/screens/convert.bat +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -FOR /R %%a IN (*.png) DO ( - (Echo "%%a" | FIND /I "logo.png" 1>NUL) || ( - convert.ex "%%~a" -strip -resize x367 -background white -gravity center -extent 652x367 "%%~dpna.jpg" - ) -) - -convert.ex "./driverpl/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./driverpl/main1.jpg" -convert.ex "./driverpl/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./driverpl/main2.jpg" - -convert.ex "./flatoutuc/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./flatoutuc/main1.jpg" -convert.ex "./flatoutuc/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./flatoutuc/main2.jpg" - -convert.ex "./bully/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./bully/main1.jpg" -convert.ex "./bully/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./bully/main2.jpg" - -convert.ex "./condemned/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./condemned/main1.jpg" -convert.ex "./condemned/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./condemned/main2.jpg" - -convert.ex "./re4/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./re4/main1.jpg" -convert.ex "./re4/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./re4/main2.jpg" - -convert.ex "./re5/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./re5/main1.jpg" -convert.ex "./re5/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./re5/main2.jpg" - -convert.ex "./rerev/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./rerev/main1.jpg" -convert.ex "./rerev/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./rerev/main2.jpg" - -convert.ex "./spyro/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./spyro/main1.jpg" -convert.ex "./spyro/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./spyro/main2.jpg" - -convert.ex "./thesaboteur/main1.png" -strip -resize 652x -background white -gravity center -extent 652x "./thesaboteur/main1.jpg" -convert.ex "./thesaboteur/main2.png" -strip -resize 652x -background white -gravity center -extent 652x "./thesaboteur/main2.jpg" -convert.ex "./thesaboteur/main3.png" -strip -resize 652x -background white -gravity center -extent 652x "./thesaboteur/main3.jpg" - -convert.ex "./rdr/main2.png" -strip -resize 652x -background black -gravity center -extent 652x "./rdr/main2.jpg" \ No newline at end of file diff --git a/screens/convert.ex b/screens/convert.ex deleted file mode 100644 index 287089d..0000000 Binary files a/screens/convert.ex and /dev/null differ diff --git a/screens/da4.html b/screens/da4.html deleted file mode 100644 index 7921217..0000000 --- a/screens/da4.html +++ /dev/null @@ -1,93 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/dmc3se/logo.png b/screens/dmc3se/logo.png deleted file mode 100644 index 9bb8a7d..0000000 Binary files a/screens/dmc3se/logo.png and /dev/null differ diff --git a/screens/driv3r.html b/screens/driv3r.html deleted file mode 100644 index 6845cc1..0000000 --- a/screens/driv3r.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/driverpl.html b/screens/driverpl.html deleted file mode 100644 index 32ad2b7..0000000 --- a/screens/driverpl.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/enterthematrix.html b/screens/enterthematrix.html deleted file mode 100644 index 1424455..0000000 --- a/screens/enterthematrix.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/farcry.html b/screens/farcry.html deleted file mode 100644 index 11d383f..0000000 --- a/screens/farcry.html +++ /dev/null @@ -1,109 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/flatout.html b/screens/flatout.html deleted file mode 100644 index 7b29c05..0000000 --- a/screens/flatout.html +++ /dev/null @@ -1,92 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/flatout2.html b/screens/flatout2.html deleted file mode 100644 index 4a33897..0000000 --- a/screens/flatout2.html +++ /dev/null @@ -1,92 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gta1.html b/screens/gta1.html deleted file mode 100644 index 0952628..0000000 --- a/screens/gta1.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gta2.html b/screens/gta2.html deleted file mode 100644 index ab40033..0000000 --- a/screens/gta2.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gta3.html b/screens/gta3.html deleted file mode 100644 index 41a6b28..0000000 --- a/screens/gta3.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gta3de.html b/screens/gta3de.html deleted file mode 100644 index a278544..0000000 --- a/screens/gta3de.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtactwpsp.html b/screens/gtactwpsp.html deleted file mode 100644 index bc5e955..0000000 --- a/screens/gtactwpsp.html +++ /dev/null @@ -1,93 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtaivfusionfix.html b/screens/gtaivfusionfix.html deleted file mode 100644 index db31ea5..0000000 --- a/screens/gtaivfusionfix.html +++ /dev/null @@ -1,92 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtalcs.html b/screens/gtalcs.html deleted file mode 100644 index de6b1e2..0000000 --- a/screens/gtalcs.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtalcspsp.html b/screens/gtalcspsp.html deleted file mode 100644 index 15293ba..0000000 --- a/screens/gtalcspsp.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtasa.html b/screens/gtasa.html deleted file mode 100644 index 8998298..0000000 --- a/screens/gtasa.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtasade.html b/screens/gtasade.html deleted file mode 100644 index 856d255..0000000 --- a/screens/gtasade.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtavc.html b/screens/gtavc.html deleted file mode 100644 index 9886bde..0000000 --- a/screens/gtavc.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtavcde.html b/screens/gtavcde.html deleted file mode 100644 index 14a550c..0000000 --- a/screens/gtavcde.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtavcs.html b/screens/gtavcs.html deleted file mode 100644 index 14a17b0..0000000 --- a/screens/gtavcs.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gtavcspsp.html b/screens/gtavcspsp.html deleted file mode 100644 index 1a0b1db..0000000 --- a/screens/gtavcspsp.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/gun.html b/screens/gun.html deleted file mode 100644 index 052cb91..0000000 --- a/screens/gun.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/hd2.html b/screens/hd2.html deleted file mode 100644 index 5575521..0000000 --- a/screens/hd2.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/justcause.html b/screens/justcause.html deleted file mode 100644 index a7c4234..0000000 --- a/screens/justcause.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/kingkong.html b/screens/kingkong.html deleted file mode 100644 index 87ccef1..0000000 --- a/screens/kingkong.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/kr.html b/screens/kr.html deleted file mode 100644 index a3605bb..0000000 --- a/screens/kr.html +++ /dev/null @@ -1,110 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/kr2.html b/screens/kr2.html deleted file mode 100644 index 3121fdd..0000000 --- a/screens/kr2.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/larush.html b/screens/larush.html deleted file mode 100644 index 7b99b2b..0000000 --- a/screens/larush.html +++ /dev/null @@ -1,108 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/mafia.html b/screens/mafia.html deleted file mode 100644 index a09d0f1..0000000 --- a/screens/mafia.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/manhunt.html b/screens/manhunt.html deleted file mode 100644 index a274913..0000000 --- a/screens/manhunt.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/masseffect.html b/screens/masseffect.html deleted file mode 100644 index 2e5e1b1..0000000 --- a/screens/masseffect.html +++ /dev/null @@ -1,107 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/modupdater/modupdater.jpg b/screens/modupdater/modupdater.jpg deleted file mode 100644 index b7fd2a9..0000000 Binary files a/screens/modupdater/modupdater.jpg and /dev/null differ diff --git a/screens/modupdater/modupdater.png b/screens/modupdater/modupdater.png deleted file mode 100644 index b690572..0000000 Binary files a/screens/modupdater/modupdater.png and /dev/null differ diff --git a/screens/mp1.html b/screens/mp1.html deleted file mode 100644 index 403621f..0000000 --- a/screens/mp1.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/mp2.html b/screens/mp2.html deleted file mode 100644 index 45a1cae..0000000 --- a/screens/mp2.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/mp3fusionfix.html b/screens/mp3fusionfix.html deleted file mode 100644 index 3b2af9f..0000000 --- a/screens/mp3fusionfix.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsc.html b/screens/nfsc.html deleted file mode 100644 index ab1b112..0000000 --- a/screens/nfsc.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsmw.html b/screens/nfsmw.html deleted file mode 100644 index a0b1b94..0000000 --- a/screens/nfsmw.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsps.html b/screens/nfsps.html deleted file mode 100644 index b7fc14f..0000000 --- a/screens/nfsps.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsu.html b/screens/nfsu.html deleted file mode 100644 index fe5c645..0000000 --- a/screens/nfsu.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsu2.html b/screens/nfsu2.html deleted file mode 100644 index b3d0926..0000000 --- a/screens/nfsu2.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/nfsuc.html b/screens/nfsuc.html deleted file mode 100644 index c1bc8c3..0000000 --- a/screens/nfsuc.html +++ /dev/null @@ -1,98 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/onimusha3.html b/screens/onimusha3.html deleted file mode 100644 index ceafce6..0000000 --- a/screens/onimusha3.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/p2dfx.html b/screens/p2dfx.html deleted file mode 100644 index e621d23..0000000 --- a/screens/p2dfx.html +++ /dev/null @@ -1,97 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/paradisecracked.html b/screens/paradisecracked.html deleted file mode 100644 index 51e8298..0000000 --- a/screens/paradisecracked.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/psiops.html b/screens/psiops.html deleted file mode 100644 index 2b5df52..0000000 --- a/screens/psiops.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/psychonauts.html b/screens/psychonauts.html deleted file mode 100644 index 4348541..0000000 --- a/screens/psychonauts.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/punisher.html b/screens/punisher.html deleted file mode 100644 index af3cb3a..0000000 --- a/screens/punisher.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/rdr.html b/screens/rdr.html deleted file mode 100644 index 0a3af6d..0000000 --- a/screens/rdr.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re0.html b/screens/re0.html deleted file mode 100644 index 6084df8..0000000 --- a/screens/re0.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re1.html b/screens/re1.html deleted file mode 100644 index 8c509bc..0000000 --- a/screens/re1.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re2re3gc.html b/screens/re2re3gc.html deleted file mode 100644 index 08c5a91..0000000 --- a/screens/re2re3gc.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re4.html b/screens/re4.html deleted file mode 100644 index 20b3dea..0000000 --- a/screens/re4.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re5.html b/screens/re5.html deleted file mode 100644 index 465a209..0000000 --- a/screens/re5.html +++ /dev/null @@ -1,90 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/re6.html b/screens/re6.html deleted file mode 100644 index 7f91514..0000000 --- a/screens/re6.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/rerev.html b/screens/rerev.html deleted file mode 100644 index e3bf2ac..0000000 --- a/screens/rerev.html +++ /dev/null @@ -1,93 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/rerev2.html b/screens/rerev2.html deleted file mode 100644 index 4094a7c..0000000 --- a/screens/rerev2.html +++ /dev/null @@ -1,93 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sc.html b/screens/sc.html deleted file mode 100644 index bc85504..0000000 --- a/screens/sc.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scarface.html b/screens/scarface.html deleted file mode 100644 index 1cee886..0000000 --- a/screens/scarface.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scb.html b/screens/scb.html deleted file mode 100644 index 39c9e01..0000000 --- a/screens/scb.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scc.html b/screens/scc.html deleted file mode 100644 index ebc5874..0000000 --- a/screens/scc.html +++ /dev/null @@ -1,93 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scct.html b/screens/scct.html deleted file mode 100644 index 96539e2..0000000 --- a/screens/scct.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scda.html b/screens/scda.html deleted file mode 100644 index 0c00f34..0000000 --- a/screens/scda.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scdaps2.html b/screens/scdaps2.html deleted file mode 100644 index a430308..0000000 --- a/screens/scdaps2.html +++ /dev/null @@ -1,113 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scdaxbox.html b/screens/scdaxbox.html deleted file mode 100644 index afbcba8..0000000 --- a/screens/scdaxbox.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sce.html b/screens/sce.html deleted file mode 100644 index e4a8c76..0000000 --- a/screens/sce.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/scpt.html b/screens/scpt.html deleted file mode 100644 index c6ff558..0000000 --- a/screens/scpt.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/secondsight.html b/screens/secondsight.html deleted file mode 100644 index bc16838..0000000 --- a/screens/secondsight.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sh2.html b/screens/sh2.html deleted file mode 100644 index 1f3b06b..0000000 --- a/screens/sh2.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sh3.html b/screens/sh3.html deleted file mode 100644 index 25e37cd..0000000 --- a/screens/sh3.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sh4.html b/screens/sh4.html deleted file mode 100644 index 921ed6e..0000000 --- a/screens/sh4.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sniperelite.html b/screens/sniperelite.html deleted file mode 100644 index d82fec2..0000000 --- a/screens/sniperelite.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/sonicheroes.html b/screens/sonicheroes.html deleted file mode 100644 index df0b324..0000000 --- a/screens/sonicheroes.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/spyro.html b/screens/spyro.html deleted file mode 100644 index a7ccd50..0000000 --- a/screens/spyro.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/srs.html b/screens/srs.html deleted file mode 100644 index 789e1a2..0000000 --- a/screens/srs.html +++ /dev/null @@ -1,96 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/stubbsthezombie.html b/screens/stubbsthezombie.html deleted file mode 100644 index 30e73db..0000000 --- a/screens/stubbsthezombie.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thaw.html b/screens/thaw.html deleted file mode 100644 index 35f0217..0000000 --- a/screens/thaw.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thegodfather.html b/screens/thegodfather.html deleted file mode 100644 index e6de4fc..0000000 --- a/screens/thegodfather.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thematrixpathofneo.html b/screens/thematrixpathofneo.html deleted file mode 100644 index 05f1790..0000000 --- a/screens/thematrixpathofneo.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thesaboteur.html b/screens/thesaboteur.html deleted file mode 100644 index f651e59..0000000 --- a/screens/thesaboteur.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thesuffering.html b/screens/thesuffering.html deleted file mode 100644 index 0e5e464..0000000 --- a/screens/thesuffering.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thewarriors.html b/screens/thewarriors.html deleted file mode 100644 index fa1b9c0..0000000 --- a/screens/thewarriors.html +++ /dev/null @@ -1,91 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thps2.html b/screens/thps2.html deleted file mode 100644 index 2547fe1..0000000 --- a/screens/thps2.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thps3.html b/screens/thps3.html deleted file mode 100644 index 1bd6235..0000000 --- a/screens/thps3.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thps4.html b/screens/thps4.html deleted file mode 100644 index 1d91493..0000000 --- a/screens/thps4.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thug.html b/screens/thug.html deleted file mode 100644 index 01d188b..0000000 --- a/screens/thug.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/thug2.html b/screens/thug2.html deleted file mode 100644 index 73b5d6a..0000000 --- a/screens/thug2.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/tod.html b/screens/tod.html deleted file mode 100644 index 3350612..0000000 --- a/screens/tod.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/truecrimenyc.html b/screens/truecrimenyc.html deleted file mode 100644 index 384ad1b..0000000 --- a/screens/truecrimenyc.html +++ /dev/null @@ -1,99 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/truecrimesola.html b/screens/truecrimesola.html deleted file mode 100644 index b2df537..0000000 --- a/screens/truecrimesola.html +++ /dev/null @@ -1,94 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/usm.html b/screens/usm.html deleted file mode 100644 index cadf2db..0000000 --- a/screens/usm.html +++ /dev/null @@ -1,95 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/screens/xrd.html b/screens/xrd.html deleted file mode 100644 index bd56b9f..0000000 --- a/screens/xrd.html +++ /dev/null @@ -1,101 +0,0 @@ - - -
- -
- - - - \ No newline at end of file diff --git a/src/assets/icons/wfp.svg b/src/assets/icons/wfp.svg new file mode 100644 index 0000000..9ec5a70 --- /dev/null +++ b/src/assets/icons/wfp.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/youtube-red.svg b/src/assets/icons/youtube-red.svg new file mode 100644 index 0000000..1955920 --- /dev/null +++ b/src/assets/icons/youtube-red.svg @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/partials/Head.astro b/src/components/partials/Head.astro new file mode 100644 index 0000000..10c9b3b --- /dev/null +++ b/src/components/partials/Head.astro @@ -0,0 +1,33 @@ +--- +import { siteConfig } from "@/site.config"; + +export interface Props { + title?: string; + description?: string; + keywords?: string; + author?: string; + favicon?: string; +} + +const { + title = siteConfig.title, + description = siteConfig.description, + keywords = siteConfig.keywords, + author = siteConfig.author, + favicon = siteConfig.favicon, +} = Astro.props; +--- + + + + + + +{title} + + + + + + + diff --git a/src/components/shadcn-svelte/button/button.svelte b/src/components/shadcn-svelte/button/button.svelte new file mode 100644 index 0000000..62028b9 --- /dev/null +++ b/src/components/shadcn-svelte/button/button.svelte @@ -0,0 +1,80 @@ + + + + +{#if href} + + {@render children?.()} + +{:else} + +{/if} diff --git a/src/components/shadcn-svelte/button/index.ts b/src/components/shadcn-svelte/button/index.ts new file mode 100644 index 0000000..fb585d7 --- /dev/null +++ b/src/components/shadcn-svelte/button/index.ts @@ -0,0 +1,17 @@ +import Root, { + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants, +} from "./button.svelte"; + +export { + Root, + type ButtonProps as Props, + // + Root as Button, + buttonVariants, + type ButtonProps, + type ButtonSize, + type ButtonVariant, +}; diff --git a/src/components/shadcn-svelte/data-table/data-table.svelte.ts b/src/components/shadcn-svelte/data-table/data-table.svelte.ts new file mode 100644 index 0000000..9e0b913 --- /dev/null +++ b/src/components/shadcn-svelte/data-table/data-table.svelte.ts @@ -0,0 +1,141 @@ +import { + type RowData, + type TableOptions, + type TableOptionsResolved, + type TableState, + createTable, +} from "@tanstack/table-core"; + +/** + * Creates a reactive TanStack table object for Svelte. + * @param options Table options to create the table with. + * @returns A reactive table object. + * @example + * ```svelte + * + * + * + * + * {#each table.getHeaderGroups() as headerGroup} + * + * {#each headerGroup.headers as header} + * + * {/each} + * + * {/each} + * + * + *
+ * + *
+ * ``` + */ +export function createSvelteTable(options: TableOptions) { + const resolvedOptions: TableOptionsResolved = mergeObjects( + { + state: {}, + onStateChange() {}, + renderFallbackValue: null, + mergeOptions: ( + defaultOptions: TableOptions, + options: Partial> + ) => { + return mergeObjects(defaultOptions, options); + }, + }, + options + ); + + const table = createTable(resolvedOptions); + let state = $state>(table.initialState); + + function updateOptions() { + table.setOptions((prev) => { + return mergeObjects(prev, options, { + state: mergeObjects(state, options.state || {}), + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onStateChange: (updater: any) => { + if (updater instanceof Function) state = updater(state); + else state = mergeObjects(state, updater); + + options.onStateChange?.(updater); + }, + }); + }); + } + + updateOptions(); + + $effect.pre(() => { + updateOptions(); + }); + + return table; +} + +type MaybeThunk = T | (() => T | null | undefined); +type Intersection = (T extends [infer H, ...infer R] + ? H & Intersection + : unknown) & {}; + +/** + * Lazily merges several objects (or thunks) while preserving + * getter semantics from every source. + * + * Proxy-based to avoid known WebKit recursion issue. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function mergeObjects[]>( + ...sources: Sources +): Intersection<{ [K in keyof Sources]: Sources[K] }> { + const resolve = (src: MaybeThunk): T | undefined => + typeof src === "function" ? (src() ?? undefined) : src; + + const findSourceWithKey = (key: PropertyKey) => { + for (let i = sources.length - 1; i >= 0; i--) { + const obj = resolve(sources[i]); + if (obj && key in obj) return obj; + } + return undefined; + }; + + return new Proxy(Object.create(null), { + get(_, key) { + const src = findSourceWithKey(key); + + return src?.[key as never]; + }, + + has(_, key) { + return !!findSourceWithKey(key); + }, + + ownKeys(): (string | symbol)[] { + const all = new Set(); + for (const s of sources) { + const obj = resolve(s); + if (obj) { + for (const k of Reflect.ownKeys(obj) as (string | symbol)[]) { + all.add(k); + } + } + } + return [...all]; + }, + + getOwnPropertyDescriptor(_, key) { + const src = findSourceWithKey(key); + if (!src) return undefined; + return { + configurable: true, + enumerable: true, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + value: (src as any)[key], + writable: true, + }; + }, + }) as Intersection<{ [K in keyof Sources]: Sources[K] }>; +} diff --git a/src/components/shadcn-svelte/data-table/flex-render.svelte b/src/components/shadcn-svelte/data-table/flex-render.svelte new file mode 100644 index 0000000..12d2af1 --- /dev/null +++ b/src/components/shadcn-svelte/data-table/flex-render.svelte @@ -0,0 +1,36 @@ + + +{#if typeof content === "string"} + {content} +{:else if content instanceof Function} + + + {@const result = content(context as any)} + {#if result instanceof RenderComponentConfig} + {@const { component: Component, props } = result} + + {:else if result instanceof RenderSnippetConfig} + {@const { snippet, params } = result} + {@render snippet(params)} + {:else} + {result} + {/if} +{/if} diff --git a/src/components/shadcn-svelte/data-table/index.ts b/src/components/shadcn-svelte/data-table/index.ts new file mode 100644 index 0000000..5f4e77e --- /dev/null +++ b/src/components/shadcn-svelte/data-table/index.ts @@ -0,0 +1,3 @@ +export { default as FlexRender } from "./flex-render.svelte"; +export { renderComponent, renderSnippet } from "./render-helpers.js"; +export { createSvelteTable } from "./data-table.svelte.js"; diff --git a/src/components/shadcn-svelte/data-table/render-helpers.ts b/src/components/shadcn-svelte/data-table/render-helpers.ts new file mode 100644 index 0000000..fa036d6 --- /dev/null +++ b/src/components/shadcn-svelte/data-table/render-helpers.ts @@ -0,0 +1,111 @@ +import type { Component, ComponentProps, Snippet } from "svelte"; + +/** + * A helper class to make it easy to identify Svelte components in + * `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderComponentConfig} + * {@const { component: Component, props } = result} + * + * {/if} + * ``` + */ +export class RenderComponentConfig { + component: TComponent; + props: ComponentProps | Record; + constructor( + component: TComponent, + props: ComponentProps | Record = {} + ) { + this.component = component; + this.props = props; + } +} + +/** + * A helper class to make it easy to identify Svelte Snippets in `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderSnippetConfig} + * {@const { snippet, params } = result} + * {@render snippet(params)} + * {/if} + * ``` + */ +export class RenderSnippetConfig { + snippet: Snippet<[TProps]>; + params: TProps; + constructor(snippet: Snippet<[TProps]>, params: TProps) { + this.snippet = snippet; + this.params = params; + } +} + +/** + * A helper function to help create cells from Svelte components through ColumnDef's `cell` and `header` properties. + * + * This is only to be used with Svelte Components - use `renderSnippet` for Svelte Snippets. + * + * @param component A Svelte component + * @param props The props to pass to `component` + * @returns A `RenderComponentConfig` object that helps svelte-table know how to render the header/cell component. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * header: header => renderComponent(SortHeader, { label: 'Name', header }), + * }), + * columnHelper.accessor('state', { + * header: header => renderComponent(SortHeader, { label: 'State', header }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderComponent< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + T extends Component, + Props extends ComponentProps, +>(component: T, props: Props = {} as Props) { + return new RenderComponentConfig(component, props); +} + +/** + * A helper function to help create cells from Svelte Snippets through ColumnDef's `cell` and `header` properties. + * + * The snippet must only take one parameter. + * + * This is only to be used with Snippets - use `renderComponent` for Svelte Components. + * + * @param snippet + * @param params + * @returns - A `RenderSnippetConfig` object that helps svelte-table know how to render the header/cell snippet. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * cell: cell => renderSnippet(nameSnippet, { name: cell.row.name }), + * }), + * columnHelper.accessor('state', { + * cell: cell => renderSnippet(stateSnippet, { state: cell.row.state }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderSnippet(snippet: Snippet<[TProps]>, params: TProps = {} as TProps) { + return new RenderSnippetConfig(snippet, params); +} diff --git a/src/components/shadcn-svelte/input/index.ts b/src/components/shadcn-svelte/input/index.ts new file mode 100644 index 0000000..f47b6d3 --- /dev/null +++ b/src/components/shadcn-svelte/input/index.ts @@ -0,0 +1,7 @@ +import Root from "./input.svelte"; + +export { + Root, + // + Root as Input, +}; diff --git a/src/components/shadcn-svelte/input/input.svelte b/src/components/shadcn-svelte/input/input.svelte new file mode 100644 index 0000000..fcfad75 --- /dev/null +++ b/src/components/shadcn-svelte/input/input.svelte @@ -0,0 +1,51 @@ + + +{#if type === "file"} + +{:else} + +{/if} diff --git a/src/components/shadcn-svelte/pagination/index.ts b/src/components/shadcn-svelte/pagination/index.ts new file mode 100644 index 0000000..d83c7a9 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/index.ts @@ -0,0 +1,25 @@ +import Root from "./pagination.svelte"; +import Content from "./pagination-content.svelte"; +import Item from "./pagination-item.svelte"; +import Link from "./pagination-link.svelte"; +import PrevButton from "./pagination-prev-button.svelte"; +import NextButton from "./pagination-next-button.svelte"; +import Ellipsis from "./pagination-ellipsis.svelte"; + +export { + Root, + Content, + Item, + Link, + PrevButton, + NextButton, + Ellipsis, + // + Root as Pagination, + Content as PaginationContent, + Item as PaginationItem, + Link as PaginationLink, + PrevButton as PaginationPrevButton, + NextButton as PaginationNextButton, + Ellipsis as PaginationEllipsis, +}; diff --git a/src/components/shadcn-svelte/pagination/pagination-content.svelte b/src/components/shadcn-svelte/pagination/pagination-content.svelte new file mode 100644 index 0000000..c118c38 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-content.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
diff --git a/src/components/shadcn-svelte/pagination/pagination-ellipsis.svelte b/src/components/shadcn-svelte/pagination/pagination-ellipsis.svelte new file mode 100644 index 0000000..d581aa3 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-ellipsis.svelte @@ -0,0 +1,22 @@ + + + diff --git a/src/components/shadcn-svelte/pagination/pagination-item.svelte b/src/components/shadcn-svelte/pagination/pagination-item.svelte new file mode 100644 index 0000000..a9e3347 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-item.svelte @@ -0,0 +1,14 @@ + + +
  • + {@render children?.()} +
  • diff --git a/src/components/shadcn-svelte/pagination/pagination-link.svelte b/src/components/shadcn-svelte/pagination/pagination-link.svelte new file mode 100644 index 0000000..5dd0cdd --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-link.svelte @@ -0,0 +1,39 @@ + + +{#snippet Fallback()} + {page.value} +{/snippet} + + diff --git a/src/components/shadcn-svelte/pagination/pagination-next-button.svelte b/src/components/shadcn-svelte/pagination/pagination-next-button.svelte new file mode 100644 index 0000000..06dfc58 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-next-button.svelte @@ -0,0 +1,33 @@ + + +{#snippet Fallback()} + Next + +{/snippet} + + diff --git a/src/components/shadcn-svelte/pagination/pagination-prev-button.svelte b/src/components/shadcn-svelte/pagination/pagination-prev-button.svelte new file mode 100644 index 0000000..05b0953 --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination-prev-button.svelte @@ -0,0 +1,33 @@ + + +{#snippet Fallback()} + + Previous +{/snippet} + + diff --git a/src/components/shadcn-svelte/pagination/pagination.svelte b/src/components/shadcn-svelte/pagination/pagination.svelte new file mode 100644 index 0000000..2b927ed --- /dev/null +++ b/src/components/shadcn-svelte/pagination/pagination.svelte @@ -0,0 +1,28 @@ + + + diff --git a/src/components/shadcn-svelte/select/index.ts b/src/components/shadcn-svelte/select/index.ts new file mode 100644 index 0000000..9e8d3e9 --- /dev/null +++ b/src/components/shadcn-svelte/select/index.ts @@ -0,0 +1,37 @@ +import { Select as SelectPrimitive } from "bits-ui"; + +import Group from "./select-group.svelte"; +import Label from "./select-label.svelte"; +import Item from "./select-item.svelte"; +import Content from "./select-content.svelte"; +import Trigger from "./select-trigger.svelte"; +import Separator from "./select-separator.svelte"; +import ScrollDownButton from "./select-scroll-down-button.svelte"; +import ScrollUpButton from "./select-scroll-up-button.svelte"; +import GroupHeading from "./select-group-heading.svelte"; + +const Root = SelectPrimitive.Root; + +export { + Root, + Group, + Label, + Item, + Content, + Trigger, + Separator, + ScrollDownButton, + ScrollUpButton, + GroupHeading, + // + Root as Select, + Group as SelectGroup, + Label as SelectLabel, + Item as SelectItem, + Content as SelectContent, + Trigger as SelectTrigger, + Separator as SelectSeparator, + ScrollDownButton as SelectScrollDownButton, + ScrollUpButton as SelectScrollUpButton, + GroupHeading as SelectGroupHeading, +}; diff --git a/src/components/shadcn-svelte/select/select-content.svelte b/src/components/shadcn-svelte/select/select-content.svelte new file mode 100644 index 0000000..07d085b --- /dev/null +++ b/src/components/shadcn-svelte/select/select-content.svelte @@ -0,0 +1,40 @@ + + + + + + + {@render children?.()} + + + + diff --git a/src/components/shadcn-svelte/select/select-group-heading.svelte b/src/components/shadcn-svelte/select/select-group-heading.svelte new file mode 100644 index 0000000..82b7445 --- /dev/null +++ b/src/components/shadcn-svelte/select/select-group-heading.svelte @@ -0,0 +1,21 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/select/select-group.svelte b/src/components/shadcn-svelte/select/select-group.svelte new file mode 100644 index 0000000..5454fdb --- /dev/null +++ b/src/components/shadcn-svelte/select/select-group.svelte @@ -0,0 +1,7 @@ + + + diff --git a/src/components/shadcn-svelte/select/select-item.svelte b/src/components/shadcn-svelte/select/select-item.svelte new file mode 100644 index 0000000..01f6e3d --- /dev/null +++ b/src/components/shadcn-svelte/select/select-item.svelte @@ -0,0 +1,38 @@ + + + + {#snippet children({ selected, highlighted })} + + {#if selected} + + {/if} + + {#if childrenProp} + {@render childrenProp({ selected, highlighted })} + {:else} + {label || value} + {/if} + {/snippet} + diff --git a/src/components/shadcn-svelte/select/select-label.svelte b/src/components/shadcn-svelte/select/select-label.svelte new file mode 100644 index 0000000..6aa8cf8 --- /dev/null +++ b/src/components/shadcn-svelte/select/select-label.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/src/components/shadcn-svelte/select/select-scroll-down-button.svelte b/src/components/shadcn-svelte/select/select-scroll-down-button.svelte new file mode 100644 index 0000000..afd69a9 --- /dev/null +++ b/src/components/shadcn-svelte/select/select-scroll-down-button.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/src/components/shadcn-svelte/select/select-scroll-up-button.svelte b/src/components/shadcn-svelte/select/select-scroll-up-button.svelte new file mode 100644 index 0000000..6aa0ad6 --- /dev/null +++ b/src/components/shadcn-svelte/select/select-scroll-up-button.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/src/components/shadcn-svelte/select/select-separator.svelte b/src/components/shadcn-svelte/select/select-separator.svelte new file mode 100644 index 0000000..53eb277 --- /dev/null +++ b/src/components/shadcn-svelte/select/select-separator.svelte @@ -0,0 +1,18 @@ + + + diff --git a/src/components/shadcn-svelte/select/select-trigger.svelte b/src/components/shadcn-svelte/select/select-trigger.svelte new file mode 100644 index 0000000..3048bdd --- /dev/null +++ b/src/components/shadcn-svelte/select/select-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/src/components/shadcn-svelte/separator/index.ts b/src/components/shadcn-svelte/separator/index.ts new file mode 100644 index 0000000..82442d2 --- /dev/null +++ b/src/components/shadcn-svelte/separator/index.ts @@ -0,0 +1,7 @@ +import Root from "./separator.svelte"; + +export { + Root, + // + Root as Separator, +}; diff --git a/src/components/shadcn-svelte/separator/separator.svelte b/src/components/shadcn-svelte/separator/separator.svelte new file mode 100644 index 0000000..302a697 --- /dev/null +++ b/src/components/shadcn-svelte/separator/separator.svelte @@ -0,0 +1,20 @@ + + + diff --git a/src/components/shadcn-svelte/table/index.ts b/src/components/shadcn-svelte/table/index.ts new file mode 100644 index 0000000..14695c8 --- /dev/null +++ b/src/components/shadcn-svelte/table/index.ts @@ -0,0 +1,28 @@ +import Root from "./table.svelte"; +import Body from "./table-body.svelte"; +import Caption from "./table-caption.svelte"; +import Cell from "./table-cell.svelte"; +import Footer from "./table-footer.svelte"; +import Head from "./table-head.svelte"; +import Header from "./table-header.svelte"; +import Row from "./table-row.svelte"; + +export { + Root, + Body, + Caption, + Cell, + Footer, + Head, + Header, + Row, + // + Root as Table, + Body as TableBody, + Caption as TableCaption, + Cell as TableCell, + Footer as TableFooter, + Head as TableHead, + Header as TableHeader, + Row as TableRow, +}; diff --git a/src/components/shadcn-svelte/table/table-body.svelte b/src/components/shadcn-svelte/table/table-body.svelte new file mode 100644 index 0000000..fa716e6 --- /dev/null +++ b/src/components/shadcn-svelte/table/table-body.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-caption.svelte b/src/components/shadcn-svelte/table/table-caption.svelte new file mode 100644 index 0000000..6e69953 --- /dev/null +++ b/src/components/shadcn-svelte/table/table-caption.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-cell.svelte b/src/components/shadcn-svelte/table/table-cell.svelte new file mode 100644 index 0000000..3329cdc --- /dev/null +++ b/src/components/shadcn-svelte/table/table-cell.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-footer.svelte b/src/components/shadcn-svelte/table/table-footer.svelte new file mode 100644 index 0000000..ae9ad4e --- /dev/null +++ b/src/components/shadcn-svelte/table/table-footer.svelte @@ -0,0 +1,20 @@ + + +tr]:last:border-b-0", className)} + {...restProps} +> + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-head.svelte b/src/components/shadcn-svelte/table/table-head.svelte new file mode 100644 index 0000000..c6351a7 --- /dev/null +++ b/src/components/shadcn-svelte/table/table-head.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-header.svelte b/src/components/shadcn-svelte/table/table-header.svelte new file mode 100644 index 0000000..ccb8643 --- /dev/null +++ b/src/components/shadcn-svelte/table/table-header.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table-row.svelte b/src/components/shadcn-svelte/table/table-row.svelte new file mode 100644 index 0000000..5f1063c --- /dev/null +++ b/src/components/shadcn-svelte/table/table-row.svelte @@ -0,0 +1,23 @@ + + +svelte-css-wrapper]:[&>th,td]:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", + className + )} + {...restProps} +> + {@render children?.()} + diff --git a/src/components/shadcn-svelte/table/table.svelte b/src/components/shadcn-svelte/table/table.svelte new file mode 100644 index 0000000..36c9ae0 --- /dev/null +++ b/src/components/shadcn-svelte/table/table.svelte @@ -0,0 +1,22 @@ + + +
    + + {@render children?.()} +
    +
    diff --git a/src/components/shadcn-svelte/tooltip/index.ts b/src/components/shadcn-svelte/tooltip/index.ts new file mode 100644 index 0000000..313a7f0 --- /dev/null +++ b/src/components/shadcn-svelte/tooltip/index.ts @@ -0,0 +1,21 @@ +import { Tooltip as TooltipPrimitive } from "bits-ui"; +import Trigger from "./tooltip-trigger.svelte"; +import Content from "./tooltip-content.svelte"; + +const Root = TooltipPrimitive.Root; +const Provider = TooltipPrimitive.Provider; +const Portal = TooltipPrimitive.Portal; + +export { + Root, + Trigger, + Content, + Provider, + Portal, + // + Root as Tooltip, + Content as TooltipContent, + Trigger as TooltipTrigger, + Provider as TooltipProvider, + Portal as TooltipPortal, +}; diff --git a/src/components/shadcn-svelte/tooltip/tooltip-content.svelte b/src/components/shadcn-svelte/tooltip/tooltip-content.svelte new file mode 100644 index 0000000..db7bfef --- /dev/null +++ b/src/components/shadcn-svelte/tooltip/tooltip-content.svelte @@ -0,0 +1,47 @@ + + + + + {@render children?.()} + + {#snippet child({ props })} +
    + {/snippet} +
    +
    +
    diff --git a/src/components/shadcn-svelte/tooltip/tooltip-trigger.svelte b/src/components/shadcn-svelte/tooltip/tooltip-trigger.svelte new file mode 100644 index 0000000..1acdaa4 --- /dev/null +++ b/src/components/shadcn-svelte/tooltip/tooltip-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/src/components/starwind/alert-dialog/AlertDialog.astro b/src/components/starwind/alert-dialog/AlertDialog.astro new file mode 100644 index 0000000..0faea20 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialog.astro @@ -0,0 +1,273 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"div">; + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    + + + + diff --git a/src/components/starwind/alert-dialog/AlertDialogAction.astro b/src/components/starwind/alert-dialog/AlertDialogAction.astro new file mode 100644 index 0000000..2f73d2c --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogAction.astro @@ -0,0 +1,44 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +import { ButtonVariants } from "@/components/starwind/button"; + +type Props = HTMLAttributes<"button"> & { + /** + * When true, the component will render its child element instead of a button + */ + asChild?: boolean; +}; + +const { class: className, asChild = false, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/alert-dialog/AlertDialogCancel.astro b/src/components/starwind/alert-dialog/AlertDialogCancel.astro new file mode 100644 index 0000000..50fba02 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogCancel.astro @@ -0,0 +1,45 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +import { ButtonVariants } from "@/components/starwind/button"; + +type Props = HTMLAttributes<"button"> & { + /** + * When true, the component will render its child element instead of a button + */ + asChild?: boolean; +}; + +const { class: className, asChild = false, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/alert-dialog/AlertDialogContent.astro b/src/components/starwind/alert-dialog/AlertDialogContent.astro new file mode 100644 index 0000000..4f62f22 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogContent.astro @@ -0,0 +1,50 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"dialog"> & { + /** + * Open and close animation duration in milliseconds + */ + animationDuration?: number; +}; + +export const alertDialogBackdrop = tv({ + base: [ + "starwind-alert-dialog-backdrop fixed inset-0 z-50 hidden bg-black/50", + "data-[state=open]:animate-in fade-in", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out", + ], +}); + +export const alertDialogContent = tv({ + base: [ + "bg-background space-y-4 rounded-lg border p-6 shadow-lg sm:max-w-lg", + "fixed top-[50%] left-[50%] z-50 w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%]", + "data-[state=open]:animate-in fade-in zoom-in-95 will-change-transform", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out zoom-out-95", + ], +}); + +const { class: className, animationDuration = 200, ...rest } = Astro.props; +--- + + +
    +
    + + + + diff --git a/src/components/starwind/alert-dialog/AlertDialogDescription.astro b/src/components/starwind/alert-dialog/AlertDialogDescription.astro new file mode 100644 index 0000000..3e27c71 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogDescription.astro @@ -0,0 +1,18 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"p">; + +export const alertDialogDescription = tv({ base: "text-muted-foreground" }); + +const { class: className, ...rest } = Astro.props; +--- + +

    + +

    diff --git a/src/components/starwind/alert-dialog/AlertDialogFooter.astro b/src/components/starwind/alert-dialog/AlertDialogFooter.astro new file mode 100644 index 0000000..7ecf832 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogFooter.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +export const alertDialogFooter = tv({ + base: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", +}); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/alert-dialog/AlertDialogHeader.astro b/src/components/starwind/alert-dialog/AlertDialogHeader.astro new file mode 100644 index 0000000..98d70b4 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogHeader.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +export const alertDialogHeader = tv({ base: "flex flex-col gap-2 text-center sm:text-left" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/alert-dialog/AlertDialogTitle.astro b/src/components/starwind/alert-dialog/AlertDialogTitle.astro new file mode 100644 index 0000000..5815de1 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogTitle.astro @@ -0,0 +1,20 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = Omit, "id"> & { + /** + * The content to be rendered inside the dialog title + */ + + children: any; +}; + +export const alertDialogTitle = tv({ base: "text-xl font-semibold" }); + +const { class: className, ...rest } = Astro.props; +--- + +

    + +

    diff --git a/src/components/starwind/alert-dialog/AlertDialogTrigger.astro b/src/components/starwind/alert-dialog/AlertDialogTrigger.astro new file mode 100644 index 0000000..b6fa779 --- /dev/null +++ b/src/components/starwind/alert-dialog/AlertDialogTrigger.astro @@ -0,0 +1,47 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"button"> & { + /** + * When true, the component will render its child element with a simple wrapper instead of a button component + */ + asChild?: boolean; + /** + * Optional ID of the dialog to trigger. If not provided and the trigger is inside a Dialog component, + * it will automatically target that dialog. Required when used outside a Dialog component. + */ + for?: string; +}; + +const { class: className, asChild = false, for: dialogFor, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/alert-dialog/index.ts b/src/components/starwind/alert-dialog/index.ts new file mode 100644 index 0000000..5a9ce3f --- /dev/null +++ b/src/components/starwind/alert-dialog/index.ts @@ -0,0 +1,46 @@ +import AlertDialog from "./AlertDialog.astro"; +import AlertDialogAction from "./AlertDialogAction.astro"; +import AlertDialogCancel from "./AlertDialogCancel.astro"; +import AlertDialogContent, { + alertDialogBackdrop, + alertDialogContent, +} from "./AlertDialogContent.astro"; +import AlertDialogDescription, { alertDialogDescription } from "./AlertDialogDescription.astro"; +import AlertDialogFooter, { alertDialogFooter } from "./AlertDialogFooter.astro"; +import AlertDialogHeader, { alertDialogHeader } from "./AlertDialogHeader.astro"; +import AlertDialogTitle, { alertDialogTitle } from "./AlertDialogTitle.astro"; +import AlertDialogTrigger from "./AlertDialogTrigger.astro"; + +const AlertDialogVariants = { + alertDialogBackdrop, + alertDialogContent, + alertDialogDescription, + alertDialogFooter, + alertDialogHeader, + alertDialogTitle, +}; + +export { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, + AlertDialogVariants, +}; + +export default { + Root: AlertDialog, + Trigger: AlertDialogTrigger, + Content: AlertDialogContent, + Header: AlertDialogHeader, + Footer: AlertDialogFooter, + Title: AlertDialogTitle, + Description: AlertDialogDescription, + Action: AlertDialogAction, + Cancel: AlertDialogCancel, +}; diff --git a/src/components/starwind/alert/Alert.astro b/src/components/starwind/alert/Alert.astro new file mode 100644 index 0000000..cf0fb96 --- /dev/null +++ b/src/components/starwind/alert/Alert.astro @@ -0,0 +1,31 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"div"> & VariantProps; + +export const alert = tv({ + base: "text-foreground relative w-full rounded-lg border p-4", + variants: { + variant: { + default: "bg-background [&>h5>svg]:text-foreground", + primary: "border-primary bg-primary/7 [&>h5>svg]:text-primary", + secondary: "border-secondary bg-secondary/7 [&>h5>svg]:text-secondary", + info: "border-info bg-info/7 [&>h5>svg]:text-info", + success: "border-success bg-success/7 [&>h5>svg]:text-success", + warning: "border-warning bg-warning/7 [&>h5>svg]:text-warning", + error: "border-error bg-error/7 [&>h5>svg]:text-error", + }, + }, + defaultVariants: { variant: "default" }, +}); + +const { variant, class: className, ...rest } = Astro.props; + +const inferredRole = + rest.role ?? (variant === "error" || variant === "warning" ? "alert" : "status"); +--- + +
    + +
    diff --git a/src/components/starwind/alert/AlertDescription.astro b/src/components/starwind/alert/AlertDescription.astro new file mode 100644 index 0000000..9d94d0b --- /dev/null +++ b/src/components/starwind/alert/AlertDescription.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +export const alertDescription = tv({ base: "leading-relaxed" }); + +type Props = HTMLAttributes<"p">; + +const { class: className, ...rest } = Astro.props; +--- + +

    + +

    diff --git a/src/components/starwind/alert/AlertTitle.astro b/src/components/starwind/alert/AlertTitle.astro new file mode 100644 index 0000000..3b846c1 --- /dev/null +++ b/src/components/starwind/alert/AlertTitle.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +export const alertTitle = tv({ + base: "mb-2 flex items-center gap-2 text-lg leading-none font-medium tracking-tight", +}); + +type Props = HTMLAttributes<"h5">; + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/alert/index.ts b/src/components/starwind/alert/index.ts new file mode 100644 index 0000000..ef4e8a6 --- /dev/null +++ b/src/components/starwind/alert/index.ts @@ -0,0 +1,13 @@ +import Alert, { alert } from "./Alert.astro"; +import AlertDescription, { alertDescription } from "./AlertDescription.astro"; +import AlertTitle, { alertTitle } from "./AlertTitle.astro"; + +const AlertVariants = { alert, alertDescription, alertTitle }; + +export { Alert, AlertDescription, AlertTitle, AlertVariants }; + +export default { + Root: Alert, + Description: AlertDescription, + Title: AlertTitle, +}; diff --git a/src/components/starwind/button/Button.astro b/src/components/starwind/button/Button.astro new file mode 100644 index 0000000..7d05e37 --- /dev/null +++ b/src/components/starwind/button/Button.astro @@ -0,0 +1,53 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +interface Props + extends HTMLAttributes<"button">, + Omit, "type">, + VariantProps {} + +const { variant, size, class: className, ...rest } = Astro.props; + +export const button = tv({ + base: [ + "inline-flex items-center justify-center gap-1.5 rounded-md font-medium whitespace-nowrap", + "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + "starwind-transition-colors", + "focus-visible:outline-2 focus-visible:outline-offset-2", + "disabled:pointer-events-none disabled:opacity-50", + ], + variants: { + variant: { + default: "bg-foreground text-background hover:bg-foreground/90 focus-visible:outline-outline", + primary: + "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:outline-primary", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/90 focus-visible:outline-secondary", + outline: + "border-border hover:bg-border hover:text-foreground focus-visible:outline-outline border", + ghost: + "hover:bg-foreground/10 hover:text-foreground focus-visible:outline-outline bg-transparent", + info: "bg-info text-info-foreground hover:bg-info/90 focus-visible:outline-info", + success: + "bg-success text-success-foreground hover:bg-success/90 focus-visible:outline-success", + warning: + "bg-warning text-warning-foreground hover:bg-warning/90 focus-visible:outline-warning", + error: "bg-error text-error-foreground hover:bg-error/90 focus-visible:outline-error", + }, + size: { + sm: "h-9 px-3 py-2 text-sm", + md: "h-11 px-4 py-2 text-base", + lg: "h-12 px-8 py-2 text-lg", + icon: "h-11 w-11", + }, + }, + defaultVariants: { variant: "default", size: "md" }, +}); + +const Tag = Astro.props.href ? "a" : "button"; +--- + + + + diff --git a/src/components/starwind/button/index.ts b/src/components/starwind/button/index.ts new file mode 100644 index 0000000..57f3575 --- /dev/null +++ b/src/components/starwind/button/index.ts @@ -0,0 +1,7 @@ +import Button, { button } from "./Button.astro"; + +const ButtonVariants = { button }; + +export { Button, ButtonVariants }; + +export default Button; diff --git a/src/components/starwind/card/Card.astro b/src/components/starwind/card/Card.astro new file mode 100644 index 0000000..c2ec6d5 --- /dev/null +++ b/src/components/starwind/card/Card.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const card = tv({ base: "bg-card text-card-foreground rounded-2xl border shadow-sm" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/CardContent.astro b/src/components/starwind/card/CardContent.astro new file mode 100644 index 0000000..f111354 --- /dev/null +++ b/src/components/starwind/card/CardContent.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const cardContent = tv({ base: "p-8 pt-0" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/CardDescription.astro b/src/components/starwind/card/CardDescription.astro new file mode 100644 index 0000000..d1b78fe --- /dev/null +++ b/src/components/starwind/card/CardDescription.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const cardDescription = tv({ base: "text-muted-foreground text-base" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/CardFooter.astro b/src/components/starwind/card/CardFooter.astro new file mode 100644 index 0000000..0a68265 --- /dev/null +++ b/src/components/starwind/card/CardFooter.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const cardFooter = tv({ base: "flex items-center p-8 pt-0" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/CardHeader.astro b/src/components/starwind/card/CardHeader.astro new file mode 100644 index 0000000..a4e53bc --- /dev/null +++ b/src/components/starwind/card/CardHeader.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const cardHeader = tv({ base: "flex flex-col space-y-2 p-8" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/CardTitle.astro b/src/components/starwind/card/CardTitle.astro new file mode 100644 index 0000000..5a3419d --- /dev/null +++ b/src/components/starwind/card/CardTitle.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const cardTitle = tv({ base: "text-3xl leading-none font-semibold tracking-tight" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/card/index.ts b/src/components/starwind/card/index.ts new file mode 100644 index 0000000..6305dff --- /dev/null +++ b/src/components/starwind/card/index.ts @@ -0,0 +1,17 @@ +import Card from "./Card.astro"; +import CardContent from "./CardContent.astro"; +import CardDescription from "./CardDescription.astro"; +import CardFooter from "./CardFooter.astro"; +import CardHeader from "./CardHeader.astro"; +import CardTitle from "./CardTitle.astro"; + +export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }; + +export default { + Root: Card, + Header: CardHeader, + Footer: CardFooter, + Title: CardTitle, + Description: CardDescription, + Content: CardContent, +}; diff --git a/src/components/starwind/dialog/Dialog.astro b/src/components/starwind/dialog/Dialog.astro new file mode 100644 index 0000000..9a029f4 --- /dev/null +++ b/src/components/starwind/dialog/Dialog.astro @@ -0,0 +1,263 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"div">; + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    + + + + diff --git a/src/components/starwind/dialog/DialogClose.astro b/src/components/starwind/dialog/DialogClose.astro new file mode 100644 index 0000000..14dffb4 --- /dev/null +++ b/src/components/starwind/dialog/DialogClose.astro @@ -0,0 +1,35 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"button"> & { + /** + * When true, the component will render its child element instead of a button + */ + asChild?: boolean; +}; + +const { class: className, asChild = false, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/dialog/DialogContent.astro b/src/components/starwind/dialog/DialogContent.astro new file mode 100644 index 0000000..1cb9818 --- /dev/null +++ b/src/components/starwind/dialog/DialogContent.astro @@ -0,0 +1,63 @@ +--- +import X from "@tabler/icons/outline/x.svg"; +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"dialog"> & { + /** + * Open and close animation duration in milliseconds + */ + animationDuration?: number; +}; + +export const dialogBackdrop = tv({ + base: [ + "starwind-dialog-backdrop fixed inset-0 top-0 left-0 z-50 hidden h-screen w-screen bg-black/80", + "data-[state=open]:animate-in fade-in", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out", + ], +}); + +export const dialogContent = tv({ + base: [ + "fixed top-16 left-[50%] z-50 translate-x-[-50%] sm:top-[50%] sm:translate-y-[-50%]", + "bg-background w-full max-w-md border p-8 shadow-lg sm:rounded-lg", + "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards", + "fade-in zoom-in-95 slide-in-from-bottom-2", + "fade-out zoom-out-95 slide-out-to-bottom-2", + ], +}); + +export const dialogCloseButton = tv({ + base: [ + "starwind-dialog-close text-muted-foreground", + "absolute top-5.5 right-5.5 rounded-sm opacity-70 transition-opacity hover:opacity-100 disabled:pointer-events-none", + "focus-visible:outline-outline focus-visible:outline-2 focus-visible:outline-offset-2", + ], +}); + +const { class: className, animationDuration = 200, ...rest } = Astro.props; +--- + + +
    +
    + + + + + diff --git a/src/components/starwind/dialog/DialogDescription.astro b/src/components/starwind/dialog/DialogDescription.astro new file mode 100644 index 0000000..5ca8d56 --- /dev/null +++ b/src/components/starwind/dialog/DialogDescription.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"p">; + +export const dialogDescription = tv({ base: "text-muted-foreground" }); + +const { class: className, ...rest } = Astro.props; +--- + +

    + +

    diff --git a/src/components/starwind/dialog/DialogFooter.astro b/src/components/starwind/dialog/DialogFooter.astro new file mode 100644 index 0000000..52e3a2b --- /dev/null +++ b/src/components/starwind/dialog/DialogFooter.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +export const dialogFooter = tv({ base: "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/dialog/DialogHeader.astro b/src/components/starwind/dialog/DialogHeader.astro new file mode 100644 index 0000000..d89647d --- /dev/null +++ b/src/components/starwind/dialog/DialogHeader.astro @@ -0,0 +1,14 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +export const dialogHeader = tv({ base: "flex flex-col space-y-2 text-center sm:text-left" }); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/dialog/DialogTitle.astro b/src/components/starwind/dialog/DialogTitle.astro new file mode 100644 index 0000000..46096a9 --- /dev/null +++ b/src/components/starwind/dialog/DialogTitle.astro @@ -0,0 +1,20 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = Omit, "id"> & { + /** + * The content to be rendered inside the dialog title + */ + + children: any; +}; + +export const dialogTitle = tv({ base: "text-2xl leading-none font-semibold tracking-tight" }); + +const { class: className, ...rest } = Astro.props; +--- + +

    + +

    diff --git a/src/components/starwind/dialog/DialogTrigger.astro b/src/components/starwind/dialog/DialogTrigger.astro new file mode 100644 index 0000000..38327b4 --- /dev/null +++ b/src/components/starwind/dialog/DialogTrigger.astro @@ -0,0 +1,47 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"button"> & { + /** + * When true, the component will render its child element with a simple wrapper instead of a button component + */ + asChild?: boolean; + /** + * Optional ID of the dialog to trigger. If not provided and the trigger is inside a Dialog component, + * it will automatically target that dialog. Required when used outside a Dialog component. + */ + for?: string; +}; + +const { class: className, asChild = false, for: dialogFor, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/dialog/index.ts b/src/components/starwind/dialog/index.ts new file mode 100644 index 0000000..89df227 --- /dev/null +++ b/src/components/starwind/dialog/index.ts @@ -0,0 +1,45 @@ +import Dialog from "./Dialog.astro"; +import DialogClose from "./DialogClose.astro"; +import DialogContent, { + dialogBackdrop, + dialogCloseButton, + dialogContent, +} from "./DialogContent.astro"; +import DialogDescription, { dialogDescription } from "./DialogDescription.astro"; +import DialogFooter, { dialogFooter } from "./DialogFooter.astro"; +import DialogHeader, { dialogHeader } from "./DialogHeader.astro"; +import DialogTitle, { dialogTitle } from "./DialogTitle.astro"; +import DialogTrigger from "./DialogTrigger.astro"; + +const DialogVariants = { + dialogBackdrop, + dialogContent, + dialogCloseButton, + dialogDescription, + dialogFooter, + dialogHeader, + dialogTitle, +}; + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, + DialogVariants, +}; + +export default { + Root: Dialog, + Trigger: DialogTrigger, + Content: DialogContent, + Header: DialogHeader, + Footer: DialogFooter, + Title: DialogTitle, + Description: DialogDescription, + Close: DialogClose, +}; diff --git a/src/components/starwind/dropdown/Dropdown.astro b/src/components/starwind/dropdown/Dropdown.astro new file mode 100644 index 0000000..6115b7d --- /dev/null +++ b/src/components/starwind/dropdown/Dropdown.astro @@ -0,0 +1,522 @@ +--- +import type { HTMLAttributes } from "astro/types"; + +type Props = HTMLAttributes<"div"> & { + /** + * When true, the dropdown will open on hover in addition to click + */ + openOnHover?: boolean; + /** + * Time in milliseconds to wait before closing when hover open is enabled + * @default 200 + */ + closeDelay?: number; + + children: any; +}; + +const { + class: className, + openOnHover = false, + closeDelay = 200, + ...rest +} = Astro.props; +--- + +
    + +
    + + diff --git a/src/components/starwind/dropdown/DropdownContent.astro b/src/components/starwind/dropdown/DropdownContent.astro new file mode 100644 index 0000000..c19ce56 --- /dev/null +++ b/src/components/starwind/dropdown/DropdownContent.astro @@ -0,0 +1,81 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div"> & { + /** + * Side of the dropdown + * @default bottom + */ + side?: "top" | "bottom"; + /** + * Alignment of the dropdown + * @default start + */ + align?: "start" | "center" | "end"; + /** + * Offset distance in pixels + * @default 4 + */ + sideOffset?: number; + /** + * Open and close animation duration in milliseconds + * @default 150 + */ + animationDuration?: number; +}; + +const dropdownContent = tv({ + base: [ + "starwind-dropdown-content", + "bg-popover text-popover-foreground z-50 min-w-[9rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", + "data-[state=open]:animate-in fade-in zoom-in-95", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out zoom-out-95", + "absolute will-change-transform", + ], + variants: { + side: { + bottom: "slide-in-from-top-2 slide-out-to-top-2 top-full", + top: "slide-in-from-bottom-2 slide-out-to-bottom-2 bottom-full", + }, + align: { + start: "slide-in-from-left-1 slide-out-to-left-1 left-0", + center: "left-1/2 -translate-x-1/2", + end: "slide-in-from-right-1 slide-out-to-right-1 right-0", + }, + }, + defaultVariants: { + side: "bottom", + align: "start", + }, +}); + +const { + class: className, + side = "bottom", + align = "start", + sideOffset = 4, + animationDuration = 150, + ...rest +} = Astro.props; +--- + + diff --git a/src/components/starwind/dropdown/DropdownItem.astro b/src/components/starwind/dropdown/DropdownItem.astro new file mode 100644 index 0000000..8e77fc9 --- /dev/null +++ b/src/components/starwind/dropdown/DropdownItem.astro @@ -0,0 +1,47 @@ +--- +import type { HTMLTag, Polymorphic } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = Polymorphic<{ as: Tag }> & { + /** + * Whether the item is inset (has left padding) + */ + inset?: boolean; + /** + * Whether the item is disabled + */ + disabled?: boolean; +}; + +const dropdownItem = tv({ + base: [ + "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 transition-colors outline-none select-none", + "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", + "[&>svg]:size-4 [&>svg]:shrink-0", + ], + variants: { + inset: { + true: "pl-8", + }, + disabled: { + true: "pointer-events-none opacity-50", + }, + }, + defaultVariants: { + inset: false, + disabled: false, + }, +}); + +const { class: className, inset = false, disabled = false, as: Tag = "div", ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/dropdown/DropdownLabel.astro b/src/components/starwind/dropdown/DropdownLabel.astro new file mode 100644 index 0000000..dc1bc0b --- /dev/null +++ b/src/components/starwind/dropdown/DropdownLabel.astro @@ -0,0 +1,29 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div"> & { + /** + * Whether the label is inset (has left padding) + */ + inset?: boolean; +}; + +const dropdownLabel = tv({ + base: ["px-2 py-1.5 font-semibold"], + variants: { + inset: { + true: "pl-8", + }, + }, + defaultVariants: { + inset: false, + }, +}); + +const { class: className, inset = false, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/dropdown/DropdownSeparator.astro b/src/components/starwind/dropdown/DropdownSeparator.astro new file mode 100644 index 0000000..25938d5 --- /dev/null +++ b/src/components/starwind/dropdown/DropdownSeparator.astro @@ -0,0 +1,20 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div">; + +const dropdownSeparator = tv({ + base: "bg-muted -mx-1 my-1 h-px", +}); + +const { class: className, ...rest } = Astro.props; +--- + + diff --git a/src/components/starwind/dropdown/DropdownTrigger.astro b/src/components/starwind/dropdown/DropdownTrigger.astro new file mode 100644 index 0000000..5a93efa --- /dev/null +++ b/src/components/starwind/dropdown/DropdownTrigger.astro @@ -0,0 +1,46 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = Omit, "role" | "type"> & { + /** + * When true, the component will render its child element with a simple wrapper instead of a button component + */ + asChild?: boolean; +}; + +const dropdownTrigger = tv({ + base: [ + "starwind-dropdown-trigger", + "inline-flex items-center justify-center", + "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none", + ], +}); + +const { class: className, asChild = false, ...rest } = Astro.props; + +// Get the first child element if asChild is true +let hasChildren = false; +if (Astro.slots.has("default")) { + hasChildren = true; +} +--- + +{ + asChild && hasChildren ? ( +
    + +
    + ) : ( + + ) +} diff --git a/src/components/starwind/dropdown/index.ts b/src/components/starwind/dropdown/index.ts new file mode 100644 index 0000000..d306284 --- /dev/null +++ b/src/components/starwind/dropdown/index.ts @@ -0,0 +1,24 @@ +import Dropdown from "./Dropdown.astro"; +import DropdownContent from "./DropdownContent.astro"; +import DropdownItem from "./DropdownItem.astro"; +import DropdownLabel from "./DropdownLabel.astro"; +import DropdownSeparator from "./DropdownSeparator.astro"; +import DropdownTrigger from "./DropdownTrigger.astro"; + +export { + Dropdown, + DropdownContent, + DropdownItem, + DropdownLabel, + DropdownSeparator, + DropdownTrigger, +}; + +export default { + Root: Dropdown, + Trigger: DropdownTrigger, + Content: DropdownContent, + Item: DropdownItem, + Label: DropdownLabel, + Separator: DropdownSeparator, +}; diff --git a/src/components/starwind/table/Table.astro b/src/components/starwind/table/Table.astro new file mode 100644 index 0000000..afccadc --- /dev/null +++ b/src/components/starwind/table/Table.astro @@ -0,0 +1,18 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"table"> & VariantProps; + +export const table = tv({ + base: "w-full caption-bottom text-sm", +}); + +const { class: className, ...rest } = Astro.props; +--- + +
    + + +
    +
    diff --git a/src/components/starwind/table/TableBody.astro b/src/components/starwind/table/TableBody.astro new file mode 100644 index 0000000..42954de --- /dev/null +++ b/src/components/starwind/table/TableBody.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"tbody"> & VariantProps; + +export const tableBody = tv({ + base: "[&_tr:last-child]:border-0", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableCaption.astro b/src/components/starwind/table/TableCaption.astro new file mode 100644 index 0000000..dad11bd --- /dev/null +++ b/src/components/starwind/table/TableCaption.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"caption"> & VariantProps; + +export const tableCaption = tv({ + base: "text-muted-foreground mt-4 text-sm", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableCell.astro b/src/components/starwind/table/TableCell.astro new file mode 100644 index 0000000..ce523b1 --- /dev/null +++ b/src/components/starwind/table/TableCell.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"td"> & VariantProps; + +export const tableCell = tv({ + base: "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableFoot.astro b/src/components/starwind/table/TableFoot.astro new file mode 100644 index 0000000..cf8fe7a --- /dev/null +++ b/src/components/starwind/table/TableFoot.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"tfoot"> & VariantProps; + +export const tableFoot = tv({ + base: "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableHead.astro b/src/components/starwind/table/TableHead.astro new file mode 100644 index 0000000..60320e2 --- /dev/null +++ b/src/components/starwind/table/TableHead.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"th"> & VariantProps; + +export const tableHead = tv({ + base: "text-muted-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableHeader.astro b/src/components/starwind/table/TableHeader.astro new file mode 100644 index 0000000..e3868a9 --- /dev/null +++ b/src/components/starwind/table/TableHeader.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"thead"> & VariantProps; + +export const tableHeader = tv({ + base: "[&_tr]:border-b", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/TableRow.astro b/src/components/starwind/table/TableRow.astro new file mode 100644 index 0000000..f488598 --- /dev/null +++ b/src/components/starwind/table/TableRow.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv, type VariantProps } from "tailwind-variants"; + +type Props = HTMLAttributes<"tr"> & VariantProps; + +export const tableRow = tv({ + base: "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", +}); + +const { class: className, ...rest } = Astro.props; +--- + + + + diff --git a/src/components/starwind/table/index.ts b/src/components/starwind/table/index.ts new file mode 100644 index 0000000..77aff2e --- /dev/null +++ b/src/components/starwind/table/index.ts @@ -0,0 +1,42 @@ +import Table, { table } from "./Table.astro"; +import TableBody, { tableBody } from "./TableBody.astro"; +import TableCaption, { tableCaption } from "./TableCaption.astro"; +import TableCell, { tableCell } from "./TableCell.astro"; +import TableFoot, { tableFoot } from "./TableFoot.astro"; +import TableHead, { tableHead } from "./TableHead.astro"; +import TableHeader, { tableHeader } from "./TableHeader.astro"; +import TableRow, { tableRow } from "./TableRow.astro"; + +const TableVariants = { + table, + tableBody, + tableCaption, + tableCell, + tableFoot, + tableHead, + tableHeader, + tableRow, +}; + +export { + Table, + TableBody, + TableCaption, + TableCell, + TableFoot, + TableHead, + TableHeader, + TableRow, + TableVariants, +}; + +export default { + Root: Table, + Body: TableBody, + Caption: TableCaption, + Cell: TableCell, + Foot: TableFoot, + Head: TableHead, + Header: TableHeader, + Row: TableRow, +}; diff --git a/src/components/starwind/tabs/Tabs.astro b/src/components/starwind/tabs/Tabs.astro new file mode 100644 index 0000000..88414df --- /dev/null +++ b/src/components/starwind/tabs/Tabs.astro @@ -0,0 +1,268 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +interface Props extends HTMLAttributes<"div"> { + defaultValue?: string; + syncKey?: string; +} + +const tabs = tv({ base: "starwind-tabs" }); + +const { defaultValue, syncKey, class: className, ...rest } = Astro.props; +--- + +
    + +
    + + diff --git a/src/components/starwind/tabs/TabsContent.astro b/src/components/starwind/tabs/TabsContent.astro new file mode 100644 index 0000000..d278277 --- /dev/null +++ b/src/components/starwind/tabs/TabsContent.astro @@ -0,0 +1,25 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +interface Props extends Omit, "id" | "role" | "tabindex" | "hidden"> { + value: string; +} + +const tabsContent = tv({ base: "mt-2 focus-visible:outline-2 focus-visible:outline-offset-2" }); + +const { value, class: className, ...rest } = Astro.props; +--- + + diff --git a/src/components/starwind/tabs/TabsList.astro b/src/components/starwind/tabs/TabsList.astro new file mode 100644 index 0000000..ad84d0b --- /dev/null +++ b/src/components/starwind/tabs/TabsList.astro @@ -0,0 +1,16 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = Omit, "role">; + +const tabsList = tv({ + base: "bg-muted text-muted-foreground inline-flex w-full items-center justify-center rounded-md p-1", +}); + +const { class: className, ...rest } = Astro.props; +--- + +
    + +
    diff --git a/src/components/starwind/tabs/TabsTrigger.astro b/src/components/starwind/tabs/TabsTrigger.astro new file mode 100644 index 0000000..9bc7719 --- /dev/null +++ b/src/components/starwind/tabs/TabsTrigger.astro @@ -0,0 +1,31 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +interface Props extends Omit, "type" | "id" | "role"> { + value: string; +} + +const tabsTrigger = tv({ + base: [ + "starwind-transition-colors inline-flex grow items-center justify-center rounded-sm px-3 py-1.5 font-medium whitespace-nowrap", + "data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm", + "focus-visible:outline-outline focus-visible:outline-2 focus-visible:outline-offset-2", + "disabled:pointer-events-none disabled:opacity-50", + ], +}); + +const { value, class: className, ...rest } = Astro.props; +--- + + diff --git a/src/components/starwind/tabs/index.ts b/src/components/starwind/tabs/index.ts new file mode 100644 index 0000000..1f68bfa --- /dev/null +++ b/src/components/starwind/tabs/index.ts @@ -0,0 +1,13 @@ +import Tabs from "./Tabs.astro"; +import TabsContent from "./TabsContent.astro"; +import TabsList from "./TabsList.astro"; +import TabsTrigger from "./TabsTrigger.astro"; + +export { Tabs, TabsContent, TabsList, TabsTrigger }; + +export default { + Root: Tabs, + Content: TabsContent, + List: TabsList, + Trigger: TabsTrigger, +}; diff --git a/src/components/starwind/tooltip/Tooltip.astro b/src/components/starwind/tooltip/Tooltip.astro new file mode 100644 index 0000000..f2fec8b --- /dev/null +++ b/src/components/starwind/tooltip/Tooltip.astro @@ -0,0 +1,236 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div"> & { + /** + * Time in milliseconds to wait before showing the tooltip + */ + openDelay?: number; + /** + * Time in milliseconds to wait before hiding the tooltip + */ + closeDelay?: number; + /** + * When true, prevents the tooltip from staying open when hovering over its content + */ + disableHoverableContent?: boolean; +}; + +const tooltip = tv({ base: "starwind-tooltip relative inline-block" }); + +const { + openDelay = 200, + closeDelay = 200, + disableHoverableContent = false, + class: className, +} = Astro.props; +--- + +
    + +
    + + diff --git a/src/components/starwind/tooltip/TooltipContent.astro b/src/components/starwind/tooltip/TooltipContent.astro new file mode 100644 index 0000000..a780dab --- /dev/null +++ b/src/components/starwind/tooltip/TooltipContent.astro @@ -0,0 +1,98 @@ +--- +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"div"> & { + /** + * Side of the tooltip + * @default top + */ + side?: "top" | "right" | "bottom" | "left"; + /** + * Alignment of the tooltip + * @default center + */ + align?: "start" | "center" | "end"; + /** + * Offset distance in pixels + * @default 4 + */ + sideOffset?: number; + /** + * Prevent the tooltip from colliding with other elements + * @default true + */ + avoidCollisions?: boolean; + /** + * Open and close animation duration in milliseconds + * @default 150 + */ + animationDuration?: number; +}; + +const tooltipContent = tv({ + base: [ + "starwind-tooltip-content", + "absolute z-50 hidden px-3 py-1.5 whitespace-nowrap shadow-sm will-change-transform", + "bg-popover text-popover-foreground rounded-md border", + "animate-in fade-in zoom-in-95", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out zoom-out-95", + ], + variants: { + side: { + left: "slide-in-from-right-2 right-(--tooltip-offset)", + right: "slide-in-from-left-2 left-(--tooltip-offset)", + bottom: "slide-in-from-top-2 top-(--tooltip-offset)", + top: "slide-in-from-bottom-2 bottom-(--tooltip-offset)", + }, + align: { center: "", start: "", end: "" }, + sideAlign: { + "top-center": "left-[50%] translate-x-[-50%]", + "bottom-center": "left-[50%] translate-x-[-50%]", + "left-center": "top-[50%] translate-y-[-50%]", + "right-center": "top-[50%] translate-y-[-50%]", + "top-start": "left-0", + "bottom-start": "left-0", + "top-end": "right-0", + "bottom-end": "right-0", + "left-start": "top-0", + "right-start": "top-0", + "left-end": "bottom-0", + "right-end": "bottom-0", + }, + }, + defaultVariants: { side: "top", align: "center" }, + compoundVariants: [ + { side: ["top", "bottom"], align: "center", class: "left-[50%] translate-x-[-50%]" }, + { side: ["left", "right"], align: "center", class: "top-[50%] translate-y-[-50%]" }, + { side: ["top", "bottom"], align: "start", class: "left-0" }, + { side: ["top", "bottom"], align: "end", class: "right-0" }, + { side: ["left", "right"], align: "start", class: "top-0" }, + { side: ["left", "right"], align: "end", class: "bottom-0" }, + ], +}); + +const { + side = "top", + align = "center", + sideOffset = 4, + avoidCollisions = true, + animationDuration = 150, + class: className, +} = Astro.props; +--- + + diff --git a/src/components/starwind/tooltip/TooltipTrigger.astro b/src/components/starwind/tooltip/TooltipTrigger.astro new file mode 100644 index 0000000..ae2adbd --- /dev/null +++ b/src/components/starwind/tooltip/TooltipTrigger.astro @@ -0,0 +1,10 @@ +--- +/** + * This component is used to trigger the tooltip + * All it does is require a slot + */ +// eslint-disable-next-line +type Props = { children: any }; +--- + + diff --git a/src/components/starwind/tooltip/index.ts b/src/components/starwind/tooltip/index.ts new file mode 100644 index 0000000..960f704 --- /dev/null +++ b/src/components/starwind/tooltip/index.ts @@ -0,0 +1,11 @@ +import Tooltip from "./Tooltip.astro"; +import TooltipContent from "./TooltipContent.astro"; +import TooltipTrigger from "./TooltipTrigger.astro"; + +export { Tooltip, TooltipContent, TooltipTrigger }; + +export default { + Root: Tooltip, + Trigger: TooltipTrigger, + Content: TooltipContent, +}; diff --git a/src/components/ui/home/HomeCard.astro b/src/components/ui/home/HomeCard.astro new file mode 100644 index 0000000..60ba796 --- /dev/null +++ b/src/components/ui/home/HomeCard.astro @@ -0,0 +1,20 @@ +--- +import type { CollectionEntry } from "astro:content"; +import { render } from "astro:content"; +import LiquidGlassCard from "@/components/widgets/LiquidGlassCard.astro"; + +interface Props { + entry: CollectionEntry<"home">; +} + +const { entry } = Astro.props as Props; +const { Content } = await render(entry); +--- + + + + diff --git a/src/components/ui/ol/OLHeader.astro b/src/components/ui/ol/OLHeader.astro new file mode 100644 index 0000000..5db0539 --- /dev/null +++ b/src/components/ui/ol/OLHeader.astro @@ -0,0 +1,61 @@ +--- +import "@fontsource/pacifico"; +import "@fontsource/iceland"; +import Dropdown from "@/components/starwind/dropdown"; +import Button from "@/components/starwind/button"; +import MenuIcon from "@tabler/icons/outline/menu.svg"; + +interface Props { + home: { title: string; href: string }; + navigation?: { title: string; href: string }[]; +} + +const { home, navigation = [] } = Astro.props; +--- + +
    + +
    diff --git a/src/components/ui/ol/OLTable.astro b/src/components/ui/ol/OLTable.astro new file mode 100644 index 0000000..e24e073 --- /dev/null +++ b/src/components/ui/ol/OLTable.astro @@ -0,0 +1,29 @@ +--- +import type { CollectionEntry } from "astro:content"; +import type { OLEntry } from "@/content.config"; +import GOLTable from "./table/GOLTable.astro"; +import MOLTable from "./table/MOLTable.astro"; +import GTTable from "./table/GTTable.astro"; + +interface Props { + entry: CollectionEntry; +} + +const { entry } = Astro.props as Props; + +const response = await fetch(entry.data.url) + .then((res) => res.json()) + .catch((err) => { + console.error("Error fetching OL data:", entry.data, err); + return null; + }); +if (!response) { + return; +} + +const data = response.data as string[][]; +--- + +{entry.collection === "gol" && } +{entry.collection === "mol" && } +{entry.collection === "gt" && } diff --git a/src/components/ui/ol/OLTabs.astro b/src/components/ui/ol/OLTabs.astro new file mode 100644 index 0000000..c7f0c52 --- /dev/null +++ b/src/components/ui/ol/OLTabs.astro @@ -0,0 +1,33 @@ +--- +import Button from "@/components/starwind/button"; +import type { OLEntry } from "@/content.config"; +import type { CollectionEntry } from "astro:content"; + +interface Props { + base: string; + selectedEntry: CollectionEntry; + entries: CollectionEntry[]; +} + +const { base, selectedEntry, entries } = Astro.props as Props; +--- + +
    + { + entries.map((e) => ( + + )) + } +
    diff --git a/src/components/ui/ol/index.ts b/src/components/ui/ol/index.ts new file mode 100644 index 0000000..202431d --- /dev/null +++ b/src/components/ui/ol/index.ts @@ -0,0 +1,9 @@ +import OLHeader from "./OLHeader.astro"; +import OLTable from "./OLTable.astro"; +import OLTabs from "./OLTabs.astro"; + +export default { + Header: OLHeader, + Table: OLTable, + Tabs: OLTabs, +}; \ No newline at end of file diff --git a/src/components/ui/ol/table/GOLTable.astro b/src/components/ui/ol/table/GOLTable.astro new file mode 100644 index 0000000..002f5f3 --- /dev/null +++ b/src/components/ui/ol/table/GOLTable.astro @@ -0,0 +1,17 @@ +--- +import type { GOLTableData } from "./columns"; +import GOLDataTable from "./gol-data-table.svelte"; + +interface Props { + data: string[][]; +} + +const { data } = Astro.props; + +const tableData: GOLTableData[] = data.map((item) => ({ + link: item[1] ?? "", + subtitle: item[3] ?? "", +})); +--- + + diff --git a/src/components/ui/ol/table/GTTable.astro b/src/components/ui/ol/table/GTTable.astro new file mode 100644 index 0000000..b2f48a9 --- /dev/null +++ b/src/components/ui/ol/table/GTTable.astro @@ -0,0 +1,17 @@ +--- +import type { GTTableData } from "./columns"; +import GTDataTable from "./gt-data-table.svelte"; + +interface Props { + data: string[][]; +} + +const { data } = Astro.props; + +const tableData: GTTableData[] = data.map((item) => ({ + gxt: item[0] ?? "", + subtitle: item[1] ?? "", +})); +--- + + diff --git a/src/components/ui/ol/table/MOLTable.astro b/src/components/ui/ol/table/MOLTable.astro new file mode 100644 index 0000000..3eaaf09 --- /dev/null +++ b/src/components/ui/ol/table/MOLTable.astro @@ -0,0 +1,17 @@ +--- +import type { MOLTableData } from "./columns"; +import MOLDataTable from "./mol-data-table.svelte"; + +interface Props { + data: string[][]; +} + +const { data } = Astro.props; + +const tableData: MOLTableData[] = data.map((item) => ({ + link: item[2] ?? "", + subtitle: item[3] ?? "", +})); +--- + + diff --git a/src/components/ui/ol/table/columns.ts b/src/components/ui/ol/table/columns.ts new file mode 100644 index 0000000..0f6b485 --- /dev/null +++ b/src/components/ui/ol/table/columns.ts @@ -0,0 +1,72 @@ +import { renderComponent } from "@/components/shadcn-svelte/data-table"; +import type { ColumnDef } from "@tanstack/table-core"; +import SortHeaderButton from "@/components/widgets/data-table/sort-header-button.svelte"; +import GifLink from "./gif-link.svelte"; +import GifPreview from "./gif-preview.svelte"; + +export type GOLTableData = { + link: string; + subtitle: string; +}; + +export const golColumns: ColumnDef[] = [ + { + id: "preview", + cell: ({ row }) => renderComponent(GifPreview, { url: row.original.link }), + size: 32, + minSize: 32, + maxSize: 32, + }, + { + accessorKey: "link", + header: "GIF Link", + cell: ({ row }) => renderComponent(GifLink, { url: row.original.link }), + size: 75, + minSize: 75, + maxSize: 75, + }, + { + accessorKey: "subtitle", + header: ({ column }) => + renderComponent(SortHeaderButton, { + title: "Subtitle", + state: column.getIsSorted(), + onclick: column.getToggleSortingHandler(), + }), + + }, +]; + +export type MOLTableData = GOLTableData; + +export const molColumns: ColumnDef[] = golColumns; + +export type GTTableData = { + gxt: string; + subtitle: string; +} + +export const gtColumns: ColumnDef[] = [ + { + accessorKey: "gxt", + header: ({ column }) => + renderComponent(SortHeaderButton, { + title: "GXT", + state: column.getIsSorted(), + onclick: column.getToggleSortingHandler(), + }), + size: 75, + minSize: 75, + maxSize: 75, + }, + { + accessorKey: "subtitle", + header: ({ column }) => + renderComponent(SortHeaderButton, { + title: "Subtitle", + state: column.getIsSorted(), + onclick: column.getToggleSortingHandler(), + }), + + }, +]; \ No newline at end of file diff --git a/src/components/ui/ol/table/gif-link.svelte b/src/components/ui/ol/table/gif-link.svelte new file mode 100644 index 0000000..ade0dcc --- /dev/null +++ b/src/components/ui/ol/table/gif-link.svelte @@ -0,0 +1,14 @@ + + +{url} diff --git a/src/components/ui/ol/table/gif-preview.svelte b/src/components/ui/ol/table/gif-preview.svelte new file mode 100644 index 0000000..dfbd7a0 --- /dev/null +++ b/src/components/ui/ol/table/gif-preview.svelte @@ -0,0 +1,44 @@ + + + + + + + + +
    + + + GIF +
    +
    +
    +
    diff --git a/src/components/ui/ol/table/gol-data-table.svelte b/src/components/ui/ol/table/gol-data-table.svelte new file mode 100644 index 0000000..23ff074 --- /dev/null +++ b/src/components/ui/ol/table/gol-data-table.svelte @@ -0,0 +1,12 @@ + + + diff --git a/src/components/ui/ol/table/gt-data-table.svelte b/src/components/ui/ol/table/gt-data-table.svelte new file mode 100644 index 0000000..601c26f --- /dev/null +++ b/src/components/ui/ol/table/gt-data-table.svelte @@ -0,0 +1,12 @@ + + + diff --git a/src/components/ui/ol/table/mol-data-table.svelte b/src/components/ui/ol/table/mol-data-table.svelte new file mode 100644 index 0000000..948ca18 --- /dev/null +++ b/src/components/ui/ol/table/mol-data-table.svelte @@ -0,0 +1,12 @@ + + + diff --git a/src/components/ui/wfp/Sponsors.astro b/src/components/ui/wfp/Sponsors.astro new file mode 100644 index 0000000..4d2ca60 --- /dev/null +++ b/src/components/ui/wfp/Sponsors.astro @@ -0,0 +1,57 @@ +--- +import Dropdown from "@/components/starwind/dropdown"; +import Tooltip from "@/components/starwind/tooltip"; +import { Icon } from "astro-icon/components"; +import { getCollection } from "astro:content"; + +interface Props { + class?: string; + type?: "header" | "dropdown"; +} + +const { class: className, type = "header" } = Astro.props; + +const sponsors = await getCollection("sponsors"); +sponsors.sort((a, b) => a.data.name.localeCompare(b.data.name)); +--- + +{ + type === "header" ? ( +
    + {sponsors.map((sponsor) => ( + + + + + + + + {sponsor.data.tooltip} + + + ))} +
    + ) : ( + sponsors.map((sponsor) => ( + + + {sponsor.data.name} + + )) + ) +} diff --git a/src/components/ui/wfp/WFPFooter.astro b/src/components/ui/wfp/WFPFooter.astro new file mode 100644 index 0000000..58305d5 --- /dev/null +++ b/src/components/ui/wfp/WFPFooter.astro @@ -0,0 +1,81 @@ +--- +import GithubButton from "@/components/widgets/GithubButton.astro"; +--- + +
    +
    +

    + Widescreen Fixes Pack - Plugins to make or improve widescreen + resolutions support in PC games, add more features and fix bugs +

    +
    + + Star + + + + Follow + + + Watch + + + Fork + + + Issue + + + Download + +
    +

    + The software is provided "as is", without warranty of any kind, + express or implied, including but not limited to the warranties of + merchantability, fitness for a particular purpose and + noninfringement. +

    +

    + In no event shall the authors or copyright holders be liable for any + claim, damages or other liability, whether in an action of contract, + tort or otherwise, arising from, out of or in connection with the + software or the use or other dealings in the software. +

    +
    +
    diff --git a/src/components/ui/wfp/WFPGameCard.astro b/src/components/ui/wfp/WFPGameCard.astro new file mode 100644 index 0000000..d5c1111 --- /dev/null +++ b/src/components/ui/wfp/WFPGameCard.astro @@ -0,0 +1,182 @@ +--- +import { render, type CollectionEntry } from "astro:content"; +import { + Tooltip, + TooltipTrigger, + TooltipContent, +} from "@/components/starwind/tooltip"; +import { Button } from "@/components/starwind/button"; +import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem } from "@/components/starwind/dropdown"; +import WFPScreenshots from "./card/WFPScreenshots.astro"; +import { Picture } from "astro:assets"; +import WFPImageStack from "./card/WFPImageStack.astro"; +import type { ReleaseInfo } from "@/lib/github/release"; +import { Icon } from "astro-icon/components"; + +interface Props { + entry: CollectionEntry<"wfp-games">; + releasesInfo?: ReleaseInfo; +} + +const { entry, releasesInfo } = Astro.props as Props; +const { Content } = await render(entry); +--- + +
    + +
    +

    + { + entry.data.stripe ? ( + + ) : ( +
    + ) + } + + {entry.data.title} + + { + releasesInfo && releasesInfo.new && ( + + ) + } +

    + { + releasesInfo && ( +
    + Updated {releasesInfo.upload_time} and downloaded {releasesInfo.download_count} times since +
    + ) + } +
    + +
    +
    +
    + { + entry.data.support.tooltip ? ( + Supported version:  + + + + {entry.data.support.version} + + + + {entry.data.support.tooltip} + + + ) : ( +

    Supported version:  + + {entry.data.support.version} + +

    + ) + } +
    +

    Installation:

    +
    +
    + { + entry.data.icons && entry.data.icons.map((icon) => ( + + + + + + + + {icon.tooltip} + + + )) + } +
    +
    +
    + +
    +
    +
    + + { + entry.data.downloads && ( + + + + + + { + entry.data.downloads.map((download)=>( + {download.name} + )) + } + + + ) + } + +
    +
    +
    + + \ No newline at end of file diff --git a/src/components/ui/wfp/WFPHeader.astro b/src/components/ui/wfp/WFPHeader.astro new file mode 100644 index 0000000..d610276 --- /dev/null +++ b/src/components/ui/wfp/WFPHeader.astro @@ -0,0 +1,94 @@ +--- +import LogoSvg from "@/assets/icons/wfp.svg"; +import Sponsors from "./Sponsors.astro"; +import { Icon } from "astro-icon/components"; +import { + Dropdown, + DropdownContent, + DropdownItem, + DropdownLabel, + DropdownSeparator, + DropdownTrigger, +} from "@/components/starwind/dropdown"; +import Button from "@/components/starwind/button"; +import MenuIcon from "@tabler/icons/outline/menu.svg"; + +const navbar = [ + { + name: "Github", + href: "https://github.com/ThirteenAG/WidescreenFixesPack", + icon: "github", + }, + { + name: "Report an issue", + href: "https://github.com/ThirteenAG/WidescreenFixesPack/issues", + icon: "github-issue", + }, +]; +--- + +
    + +
    diff --git a/src/components/ui/wfp/WFPTagButton.astro b/src/components/ui/wfp/WFPTagButton.astro new file mode 100644 index 0000000..a1b101e --- /dev/null +++ b/src/components/ui/wfp/WFPTagButton.astro @@ -0,0 +1,37 @@ +--- +import Button from "@/components/starwind/button"; + +const tagName: Record = { + all: "Show All", + other: "Other Games", + mods: "Mods", + driver: "Driver", + gta: "Grand Theft Auto", + maxpayne: "Max Payne", + nfs: "Need For Speed", + re: "Resident Evil", + splintercell: "Splinter Cell", + silenthill: "Silent Hill", + tonyhawk: "Tony Hawk's", +}; + +interface Props { + tag: string; + selected?: boolean; +} + +const { tag, selected = false } = Astro.props as Props; +--- + + diff --git a/src/components/ui/wfp/card/WFPImageStack.astro b/src/components/ui/wfp/card/WFPImageStack.astro new file mode 100644 index 0000000..d98ad29 --- /dev/null +++ b/src/components/ui/wfp/card/WFPImageStack.astro @@ -0,0 +1,32 @@ +--- +import { Picture } from "astro:assets"; +import type { CollectionEntry } from "astro:content"; + +interface Props { + entry: CollectionEntry<"wfp-games">; +} + +const { entry } = Astro.props; +--- + +
    + + + +
    diff --git a/src/components/ui/wfp/card/WFPScreenshots.astro b/src/components/ui/wfp/card/WFPScreenshots.astro new file mode 100644 index 0000000..4f445de --- /dev/null +++ b/src/components/ui/wfp/card/WFPScreenshots.astro @@ -0,0 +1,111 @@ +--- +import Button from "@/components/starwind/button"; +import { + Dialog, + DialogTrigger, + DialogContent, + DialogClose, +} from "@/components/starwind/dialog"; +import { Picture } from "astro:assets"; +import type { CollectionEntry } from "astro:content"; +import { Icon } from "astro-icon/components"; +import Youtube from "@/components/widgets/Youtube.astro"; +import FullscreenDialogueContent from "@/components/widgets/FullscreenDialogueContent.astro"; + +interface Props { + entry: CollectionEntry<"wfp-games">; +} + +const { entry } = Astro.props; +const { screenshots } = entry.data; +if (!screenshots) return; +--- + + + + + + +
    + +
    +
    + + + + +
    +
    +
    + + diff --git a/src/components/ui/wfp/helpers.ts b/src/components/ui/wfp/helpers.ts new file mode 100644 index 0000000..72ac64e --- /dev/null +++ b/src/components/ui/wfp/helpers.ts @@ -0,0 +1,42 @@ +import { getReleaseInfo, getReleaseJSON, getReleasesInfo, getReleasesJSON, type ReleaseInfo } from "@/lib/github/release"; + +function getUrlFromTag(tag: string) { + switch (tag) { + case "gtaivfusionfix": + return "https://api.github.com/repos/ThirteenAG/GTAIV.EFLC.FusionFix/releases/latest"; + case "mp3fusionfix": + return "https://api.github.com/repos/ThirteenAG/MaxPayne3.FusionFix/releases/latest"; + case "alienisolation": + return "https://api.github.com/repos/ThirteenAG/AlienIsolation.SkipSaveConfirmationDialog/releases/latest"; + default: + return "https://api.github.com/repos/ThirteenAG/WidescreenFixesPack/releases?per_page=100"; + } +} + +async function getReleasesStats(url: string) { + const data = await getReleasesJSON(url); + return getReleasesInfo(data); +} + +async function getReleaseStats(url: string) { + const data = await getReleaseJSON(url); + return getReleaseInfo(data); +} + +async function getAllReleaseStats(): Promise> { + const wfpReleasesUrl = getUrlFromTag("wfp"); + const gtaReleaseUrl = getUrlFromTag("gtaivfusionfix"); + const mp3ReleaseUrl = getUrlFromTag("mp3fusionfix"); + const aiReleaseUrl = getUrlFromTag("alienisolation"); + + const [wfpStats, gtaStats, mp3Stats, aiStats] = await Promise.all([ + getReleasesStats(wfpReleasesUrl), + getReleaseStats(gtaReleaseUrl), + getReleaseStats(mp3ReleaseUrl), + getReleaseStats(aiReleaseUrl), + ]); + + return { ...wfpStats, "gtaivfusionfix": gtaStats, "mp3fusionfix": mp3Stats, "alienisolation": aiStats }; +} + +export const wfpReleasesInfo = await getAllReleaseStats(); diff --git a/src/components/ui/wfp/index.ts b/src/components/ui/wfp/index.ts new file mode 100644 index 0000000..83ad880 --- /dev/null +++ b/src/components/ui/wfp/index.ts @@ -0,0 +1,13 @@ +import Sponsors from "./Sponsors.astro"; +import WFPFooter from "./WFPFooter.astro"; +import WFPGameCard from "./WFPGameCard.astro"; +import WFPHeader from "./WFPHeader.astro"; +import WFPTagButton from "./WFPTagButton.astro"; + +export default { + Footer: WFPFooter, + GameCard: WFPGameCard, + Header: WFPHeader, + TagButton: WFPTagButton, + Sponsors: Sponsors, +} \ No newline at end of file diff --git a/src/components/widgets/FullscreenDialogueContent.astro b/src/components/widgets/FullscreenDialogueContent.astro new file mode 100644 index 0000000..8c4a86e --- /dev/null +++ b/src/components/widgets/FullscreenDialogueContent.astro @@ -0,0 +1,68 @@ +--- +import X from "@tabler/icons/outline/x.svg"; +import type { HTMLAttributes } from "astro/types"; +import { tv } from "tailwind-variants"; + +type Props = HTMLAttributes<"dialog"> & { + /** + * Open and close animation duration in milliseconds + */ + animationDuration?: number; +}; + +export const dialogBackdrop = tv({ + base: [ + "starwind-dialog-backdrop fixed inset-0 top-0 left-0 z-50 hidden h-screen w-screen bg-black/80", + "data-[state=open]:animate-in fade-in", + "data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards fade-out", + ], +}); + +export const dialogContent = tv({ + base: [ + "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2", + "bg-background w-[95vw] h-[95vh] max-w-none border p-4 sm:p-8 shadow-lg sm:rounded-lg overflow-y-auto", + "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fill-mode-forwards", + "fade-in zoom-in-95 slide-in-from-bottom-2", + "fade-out zoom-out-95 slide-out-to-bottom-2", + ], +}); + +export const dialogCloseButton = tv({ + base: [ + "starwind-dialog-close text-muted-foreground", + "absolute top-5.5 right-5.5 rounded-sm opacity-70 transition-opacity hover:opacity-100 disabled:pointer-events-none", + "focus-visible:outline-outline focus-visible:outline-2 focus-visible:outline-offset-2", + ], +}); + +const { class: className, animationDuration = 200, ...rest } = Astro.props; +--- + + +
    +
    + + + + + diff --git a/src/components/widgets/GithubButton.astro b/src/components/widgets/GithubButton.astro new file mode 100644 index 0000000..3bdf733 --- /dev/null +++ b/src/components/widgets/GithubButton.astro @@ -0,0 +1,23 @@ +--- +import type { GitHubButtonProps } from "github-buttons"; + +interface Props extends GitHubButtonProps {} +--- + + + + + + diff --git a/src/components/widgets/LiquidGlassCard.astro b/src/components/widgets/LiquidGlassCard.astro new file mode 100644 index 0000000..e94cf66 --- /dev/null +++ b/src/components/widgets/LiquidGlassCard.astro @@ -0,0 +1,102 @@ +--- +import { Picture } from "astro:assets"; + +interface Props { + title: string; + coverImage: ImageMetadata; + href?: string; +} + +const { title, coverImage, href } = Astro.props as Props; +--- + + + + + + + + + +
    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + + +
    + + +

    {title}

    +
    + +
    +
    + + +
    + + diff --git a/src/components/widgets/Snow.astro b/src/components/widgets/Snow.astro new file mode 100644 index 0000000..e41a225 --- /dev/null +++ b/src/components/widgets/Snow.astro @@ -0,0 +1,44 @@ +--- +import { Alert, AlertDescription } from "@/components/starwind/alert"; +--- + + + + + + diff --git a/src/components/widgets/Weather.astro b/src/components/widgets/Weather.astro new file mode 100644 index 0000000..3fafce2 --- /dev/null +++ b/src/components/widgets/Weather.astro @@ -0,0 +1,59 @@ +--- +import AssetPrefetch from "@/lib/rain-effect/assets/AssetPrefetch.astro"; + +interface Props { + type: "rain" | "storm" | "fallout" | "drizzle" | "sunny"; +} + +const { type } = Astro.props; +--- + + + +
    +
    + + +
    +

    Sorry, but your browser does not support WebGL!

    +
    + + + + diff --git a/src/components/widgets/Youtube.astro b/src/components/widgets/Youtube.astro new file mode 100644 index 0000000..fdc1750 --- /dev/null +++ b/src/components/widgets/Youtube.astro @@ -0,0 +1,71 @@ +--- +import YoutubeLogo from "@/assets/icons/youtube-red.svg"; + +interface Props { + src: string; +} + +const { src } = Astro.props; + +const re = + /(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([A-Za-z0-9_-]{11})/; + +const match = src.match(re); +if (!match) { + return null; +} + +const videoId = match[1]; +--- + +
    +
    + YouTube Video +
    + +
    +
    +
    + + diff --git a/src/components/widgets/data-table/data-table.svelte b/src/components/widgets/data-table/data-table.svelte new file mode 100644 index 0000000..752c11b --- /dev/null +++ b/src/components/widgets/data-table/data-table.svelte @@ -0,0 +1,228 @@ + + +
    +
    + +
    + Show + + + {pagination.pageSize} + + + + {#each pageSizes as size} + table.setPageSize(size)} + > + {size} + + {/each} + + + entries +
    + + + {#if filter} +
    + Search: + { + table + .getColumn(filter) + ?.setFilterValue(e.currentTarget.value); + }} + oninput={(e) => { + table + .getColumn(filter) + ?.setFilterValue(e.currentTarget.value); + }} + class="max-w-sm" + /> +
    + {/if} +
    + + + + + {#each table.getHeaderGroups() as headerGroup (headerGroup.id)} + + {#each headerGroup.headers as header (header.id)} + + {#if !header.isPlaceholder} + + {/if} + + {/each} + + {/each} + + + + {#each table.getRowModel().rows as row (row.id)} + + {#each row.getVisibleCells() as cell (cell.id)} + +
    + +
    +
    + {/each} +
    + {:else} + + + No results. + + + {/each} +
    +
    + + +
    + {`Showing ${pagination.pageIndex * pagination.pageSize + 1} to ${Math.min( + (pagination.pageIndex + 1) * pagination.pageSize, + table.getRowCount(), + )} of ${table.getRowCount()} results.`} +
    + + + + {#snippet children({ pages, currentPage })} + + + table.previousPage()} + /> + + + {#each pages as page (page.key)} + + {#if page.type === "ellipsis"} + + {:else} + + table.setPageIndex(page.value - 1)} + > + {page.value} + + {/if} + + {/each} + + + table.nextPage()} /> + + + {/snippet} + + + +
    + +
    +
    diff --git a/src/components/widgets/data-table/export-button.svelte b/src/components/widgets/data-table/export-button.svelte new file mode 100644 index 0000000..16041d6 --- /dev/null +++ b/src/components/widgets/data-table/export-button.svelte @@ -0,0 +1,30 @@ + + + diff --git a/src/components/widgets/data-table/helper.ts b/src/components/widgets/data-table/helper.ts new file mode 100644 index 0000000..c4d18f2 --- /dev/null +++ b/src/components/widgets/data-table/helper.ts @@ -0,0 +1,15 @@ +import type { ColumnDef } from "@tanstack/table-core"; + +export function widthStye(columnDef: ColumnDef) { + var style = ""; + if (columnDef.size) { + style += `width: ${columnDef.size}px;`; + } + if (columnDef.minSize) { + style += `min-width: ${columnDef.minSize}px;`; + } + if (columnDef.maxSize) { + style += `max-width: ${columnDef.maxSize}px;`; + } + return style; +} \ No newline at end of file diff --git a/src/components/widgets/data-table/sort-header-button.svelte b/src/components/widgets/data-table/sort-header-button.svelte new file mode 100644 index 0000000..f6e26e2 --- /dev/null +++ b/src/components/widgets/data-table/sort-header-button.svelte @@ -0,0 +1,29 @@ + + + diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 0000000..a34803b --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,109 @@ +import { defineCollection, z, type DataEntryMap } from 'astro:content'; +import { glob } from 'astro/loaders'; +import type { ZodString } from 'astro:schema'; + +// Validators +const preprocessEmptyToUndefined = (v: unknown) => { + if (typeof v === "string") { + const trimmed = v.trim(); + return trimmed === "" ? undefined : trimmed; + } + if (v === null) { + return undefined; + } + return v; +}; + +const string = (): ZodString => z.string().nonempty(); +const optionalString = () => z.preprocess(preprocessEmptyToUndefined, z.string().optional()); +const url = () => z.string().nonempty().url(); +const optionalUrl = () => z.preprocess(preprocessEmptyToUndefined, z.string().url().optional()); + +// Collections + +const homeCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/home" }), + schema: ({ image }) => z.object({ + title: string(), + image: image(), + href: string(), + }), +}); + +const sponsorsCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/sponsors" }), + schema: z.object({ + id: string(), + name: string(), + color: string(), + url: url(), + tooltip: optionalString(), + icon: string(), + }), +}); + +const WFPCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/wfp" }), + schema: ({ image }) => z.object({ + id: string(), + tag: string(), + title: string(), + support: z.object({ + version: string(), + tooltip: optionalString(), + }), + color: string(), + download: url(), + downloads: z.array(z.object({ + name: string(), + url: url(), + })).optional(), + icons: z.array(z.object({ + name: string(), + url: url(), + tooltip: optionalString(), + })).optional(), + logo: image(), + stripe: image().optional(), + before: image(), + after: image(), + screenshots: z.object({ + background: optionalUrl(), + images: z.optional(z.array(url())), + youtube: optionalUrl(), + }).optional(), + }), +}); + +const OLSchema = z.object({ + id: string(), + name: string(), + url: url(), +}); + +const GOLCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/gol" }), + schema: OLSchema, +}); + +const MOLCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/mol" }), + schema: OLSchema, +}); + +const GTCollection = defineCollection({ + loader: glob({ pattern: "**/*.md", base: "./content/gt" }), + schema: OLSchema, +}); + +export const collections = { + 'home': homeCollection, + 'sponsors': sponsorsCollection, + 'wfp-games': WFPCollection, + 'gol': GOLCollection, + 'mol': MOLCollection, + 'gt': GTCollection, +}; + +export type OLEntry = ("gol" | "mol" | "gt") & keyof DataEntryMap; + diff --git a/src/icons/boosty.svg b/src/icons/boosty.svg new file mode 100644 index 0000000..ca9fee3 --- /dev/null +++ b/src/icons/boosty.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/src/icons/chevron-down.svg b/src/icons/chevron-down.svg new file mode 100644 index 0000000..eec2b1c --- /dev/null +++ b/src/icons/chevron-down.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/circle.svg b/src/icons/circle.svg new file mode 100644 index 0000000..376235c --- /dev/null +++ b/src/icons/circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/cxbxr.svg b/src/icons/cxbxr.svg new file mode 100644 index 0000000..e434248 --- /dev/null +++ b/src/icons/cxbxr.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/dolphin.svg b/src/icons/dolphin.svg new file mode 100644 index 0000000..4749508 --- /dev/null +++ b/src/icons/dolphin.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/download.svg b/src/icons/download.svg new file mode 100644 index 0000000..2c7629b --- /dev/null +++ b/src/icons/download.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/ea.svg b/src/icons/ea.svg new file mode 100644 index 0000000..0d25946 --- /dev/null +++ b/src/icons/ea.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/earth.svg b/src/icons/earth.svg new file mode 100644 index 0000000..16c3919 --- /dev/null +++ b/src/icons/earth.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/file-music.svg b/src/icons/file-music.svg new file mode 100644 index 0000000..c77f0fc --- /dev/null +++ b/src/icons/file-music.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/file-music1.svg b/src/icons/file-music1.svg new file mode 100644 index 0000000..c77f0fc --- /dev/null +++ b/src/icons/file-music1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/github-issue.svg b/src/icons/github-issue.svg new file mode 100644 index 0000000..0c2e31e --- /dev/null +++ b/src/icons/github-issue.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/github.svg b/src/icons/github.svg new file mode 100644 index 0000000..49b1452 --- /dev/null +++ b/src/icons/github.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/gog.svg b/src/icons/gog.svg new file mode 100644 index 0000000..15fa071 --- /dev/null +++ b/src/icons/gog.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/gtaforums.svg b/src/icons/gtaforums.svg new file mode 100644 index 0000000..8ba7161 --- /dev/null +++ b/src/icons/gtaforums.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/images.svg b/src/icons/images.svg new file mode 100644 index 0000000..70b3ebb --- /dev/null +++ b/src/icons/images.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/kofi.svg b/src/icons/kofi.svg new file mode 100644 index 0000000..2c52b11 --- /dev/null +++ b/src/icons/kofi.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/icons/link.svg b/src/icons/link.svg new file mode 100644 index 0000000..4c0370c --- /dev/null +++ b/src/icons/link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/mafia-1-hero.svg b/src/icons/mafia-1-hero.svg new file mode 100644 index 0000000..8afb181 --- /dev/null +++ b/src/icons/mafia-1-hero.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/modloader.svg b/src/icons/modloader.svg new file mode 100644 index 0000000..23d14f4 --- /dev/null +++ b/src/icons/modloader.svg @@ -0,0 +1,51 @@ + + modloader + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/icons/notes.svg b/src/icons/notes.svg new file mode 100644 index 0000000..0feb839 --- /dev/null +++ b/src/icons/notes.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/octiconcheck.svg b/src/icons/octiconcheck.svg new file mode 100644 index 0000000..a631c0c --- /dev/null +++ b/src/icons/octiconcheck.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/octiconinfo.svg b/src/icons/octiconinfo.svg new file mode 100644 index 0000000..7c04e60 --- /dev/null +++ b/src/icons/octiconinfo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/octiconx.svg b/src/icons/octiconx.svg new file mode 100644 index 0000000..7fce62b --- /dev/null +++ b/src/icons/octiconx.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/ogxbox.svg b/src/icons/ogxbox.svg new file mode 100644 index 0000000..f8cbae2 --- /dev/null +++ b/src/icons/ogxbox.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/origin.svg b/src/icons/origin.svg new file mode 100644 index 0000000..b526d4c --- /dev/null +++ b/src/icons/origin.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/patreon.svg b/src/icons/patreon.svg new file mode 100644 index 0000000..36d2027 --- /dev/null +++ b/src/icons/patreon.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/src/icons/paypal.svg b/src/icons/paypal.svg new file mode 100644 index 0000000..54b897d --- /dev/null +++ b/src/icons/paypal.svg @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/src/icons/pcsx2.svg b/src/icons/pcsx2.svg new file mode 100644 index 0000000..1cfd764 --- /dev/null +++ b/src/icons/pcsx2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/playstation.svg b/src/icons/playstation.svg new file mode 100644 index 0000000..f978742 --- /dev/null +++ b/src/icons/playstation.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/ppsspp.svg b/src/icons/ppsspp.svg new file mode 100644 index 0000000..132bf45 --- /dev/null +++ b/src/icons/ppsspp.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/rockstar.svg b/src/icons/rockstar.svg new file mode 100644 index 0000000..49f39d7 --- /dev/null +++ b/src/icons/rockstar.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/scgoggles.svg b/src/icons/scgoggles.svg new file mode 100644 index 0000000..61fda09 --- /dev/null +++ b/src/icons/scgoggles.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/search2.svg b/src/icons/search2.svg new file mode 100644 index 0000000..e743ca0 --- /dev/null +++ b/src/icons/search2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/shill.svg b/src/icons/shill.svg new file mode 100644 index 0000000..c83fc4f --- /dev/null +++ b/src/icons/shill.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/steam.svg b/src/icons/steam.svg new file mode 100644 index 0000000..816d458 --- /dev/null +++ b/src/icons/steam.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/twitch.svg b/src/icons/twitch.svg new file mode 100644 index 0000000..62ef3ef --- /dev/null +++ b/src/icons/twitch.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/ubisoft.svg b/src/icons/ubisoft.svg new file mode 100644 index 0000000..1cac918 --- /dev/null +++ b/src/icons/ubisoft.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/xbox.svg b/src/icons/xbox.svg new file mode 100644 index 0000000..690bd54 --- /dev/null +++ b/src/icons/xbox.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/youtube.svg b/src/icons/youtube.svg new file mode 100644 index 0000000..260ae79 --- /dev/null +++ b/src/icons/youtube.svg @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/src/icons/youtube2.svg b/src/icons/youtube2.svg new file mode 100644 index 0000000..e470644 --- /dev/null +++ b/src/icons/youtube2.svg @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro new file mode 100644 index 0000000..e5864ea --- /dev/null +++ b/src/layouts/BaseLayout.astro @@ -0,0 +1,13 @@ +--- +import Head, { type Props } from "@/components/partials/Head.astro"; +import "@/styles/starwind.css"; +--- + + + + + + + + + diff --git a/src/layouts/GOLLayout.astro b/src/layouts/GOLLayout.astro new file mode 100644 index 0000000..08bc4ac --- /dev/null +++ b/src/layouts/GOLLayout.astro @@ -0,0 +1,42 @@ +--- +import OLLayout from "./OLLayout.astro"; +import { getEntry } from "astro:content"; + +interface Props { + selectedEntryId: string; +} + +const { selectedEntryId } = Astro.props as Props; + +const selectedEntry = await getEntry("gol", selectedEntryId); + +if (!selectedEntry) { + return; +} + +const navigation = [ + { title: "Movie One Liners", href: "/mol/" }, + { title: "GTA Text", href: "/gt/" }, + { title: "Widescreen Fixes Pack", href: "/wfp/" }, + { + title: "Donate with PayPal", + href: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=77JMVFE8N42PE", + }, +]; +--- + + + + diff --git a/src/layouts/GTLayout.astro b/src/layouts/GTLayout.astro new file mode 100644 index 0000000..530247b --- /dev/null +++ b/src/layouts/GTLayout.astro @@ -0,0 +1,42 @@ +--- +import OLLayout from "./OLLayout.astro"; +import { getEntry } from "astro:content"; + +interface Props { + selectedEntryId: string; +} + +const { selectedEntryId } = Astro.props as Props; + +const selectedEntry = await getEntry("gt", selectedEntryId); + +if (!selectedEntry) { + return; +} + +const navigation = [ + { title: "GTA One Liners", href: "/gol/" }, + { title: "Movie One Liners", href: "/mol/" }, + { title: "Widescreen Fixes Pack", href: "/wfp/" }, + { + title: "Donate with PayPal", + href: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=77JMVFE8N42PE", + }, +]; +--- + + + + diff --git a/src/layouts/MOLLayout.astro b/src/layouts/MOLLayout.astro new file mode 100644 index 0000000..0da402d --- /dev/null +++ b/src/layouts/MOLLayout.astro @@ -0,0 +1,42 @@ +--- +import OLLayout from "./OLLayout.astro"; +import { getEntry } from "astro:content"; + +interface Props { + selectedEntryId: string; +} + +const { selectedEntryId } = Astro.props as Props; + +const selectedEntry = await getEntry("mol", selectedEntryId); + +if (!selectedEntry) { + return; +} + +const navigation = [ + { title: "GTA One Liners", href: "/gol/" }, + { title: "GTA Text", href: "/gt/" }, + { title: "Widescreen Fixes Pack", href: "/wfp/" }, + { + title: "Donate with PayPal", + href: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=77JMVFE8N42PE", + }, +]; +--- + + + + diff --git a/src/layouts/OLLayout.astro b/src/layouts/OLLayout.astro new file mode 100644 index 0000000..ed7a516 --- /dev/null +++ b/src/layouts/OLLayout.astro @@ -0,0 +1,44 @@ +--- +import Card from "@/components/starwind/card"; +import OneLiners from "@/components/ui/ol"; +import type { OLEntry } from "@/content.config"; +import BaseLayout from "@/layouts/BaseLayout.astro"; +import type { CollectionEntry } from "astro:content"; +import { getCollection } from "astro:content"; + +interface Props { + title: string; + id: OLEntry; + favicon: string; + description: string; + navigation: { title: string; href: string }[]; + selectedEntry: CollectionEntry; +} + +const { selectedEntry, title, id, description, navigation, favicon } = + Astro.props; + +const entries = await getCollection(id); +entries.sort((a, b) => a.data.name.localeCompare(b.data.name)); +--- + + + +
    + + + + + + + + +
    + Gifs in this table were made using OCR software and subtitle + text may not match the actual game text or overall be wrong + or missing. +
    +
    +
    +
    +
    diff --git a/src/layouts/WFPLayout.astro b/src/layouts/WFPLayout.astro new file mode 100644 index 0000000..d0ace16 --- /dev/null +++ b/src/layouts/WFPLayout.astro @@ -0,0 +1,98 @@ +--- +import Button from "@/components/starwind/button"; +import WFP from "@/components/ui/wfp"; +import BaseLayout from "@/layouts/BaseLayout.astro"; +import { getCollection } from "astro:content"; +import { wfpReleasesInfo } from "@/components/ui/wfp/helpers"; +import Snow from "@/components/widgets/Snow.astro"; + +interface Props { + tag: string; +} + +const { tag } = Astro.props as Props; + +const nonGameTags = ["other", "mods", "all"]; + +const gamesCollection = await getCollection("wfp-games"); + +const tags = ["all", ...new Set(gamesCollection.map((game) => game.data.tag))]; + +const games = + tag === "all" + ? gamesCollection + : gamesCollection.filter((game) => game.data.tag === tag); + +games.sort((a, b) => a.data.title.localeCompare(b.data.title)); +--- + + + + +
    + + +
    +
    + { + tags + .filter((t) => !nonGameTags.includes(t)) + .map((t) => ( + + )) + } +
    +
    + { + nonGameTags.map((t) => ( + + )) + } +
    +
    + + { + games.map((entry) => ( + + )) + } + +
    + +
    +
    + +
    + +
    + + + + diff --git a/src/lib/github/release.ts b/src/lib/github/release.ts new file mode 100644 index 0000000..dddf6d6 --- /dev/null +++ b/src/lib/github/release.ts @@ -0,0 +1,123 @@ +import type { GitHubRelease } from "./types"; + +function parseLinkHeader(header: string | null): Record { + // ; rel="next", ; rel="last" + + const links: Record = {}; + if (!header) return links; + + const parts = header.split(','); + parts.forEach(p => { + const section = p.split(';'); + if (section.length < 2) return; + const url = section[0].trim().replace(/<(.*)>/, '$1'); + const name = section[1].trim().replace(/rel="(.*)"/, '$1'); + links[name] = url; + }); + + return links; +} + +export async function getReleaseJSON(url: string): Promise { + try { + const res = await fetch(url); + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + const data = await res.json() as GitHubRelease; + + return data; + + } + catch (err) { + console.error('getReleaseJSON error', err); + throw err; + } +} + +export async function getReleasesJSON(url: string): Promise { + try { + const res = await fetch(url); + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + + const data = await res.json() as GitHubRelease[]; + const links = parseLinkHeader(res.headers.get('Link')); + + if (links.next) { + const nextData = await getReleasesJSON(links.next); + + if (Array.isArray(data) && Array.isArray(nextData)) { + return data.concat(nextData); + } + } + + return data; + + } catch (err) { + console.error('getReleasesJSON error', err); + throw err; + } +} + +function getDownloadCount(release: GitHubRelease): number { + let downloadCount = 0; + + for (const a of release.assets) { + if (!a.name.includes('FilesFix') && !a.name.includes('Frontend')) downloadCount += (a.download_count || 0); + } + + return downloadCount; +} + +function getUploadTimeDiff(release: GitHubRelease): number | undefined { + let diff: number | undefined; + + for (const a of release.assets) { + const d = Date.now() - new Date(a.updated_at).getTime(); + if (diff === undefined || diff > d) diff = d; + } + + return diff; +} + +function getUploadTimeString(diff: number) { + const oneHour = 60 * 60 * 1000; + const oneDay = 24 * oneHour; + + if (diff < oneDay) { + return `${Math.round(diff / oneHour).toString()} hours ago`; + } + return `${Math.round(diff / oneDay).toString()} days ago`; +} + +export function getReleaseInfo(releases: GitHubRelease) { + const diff = getUploadTimeDiff(releases); + + return { + url: releases.html_url, + published_at: releases.published_at, + download_count: getDownloadCount(releases), + upload_time: diff ? getUploadTimeString(diff) : "", + new: diff ? diff < 30 * 24 * 60 * 60 * 1000 : false // less than 30 days + } +} + +export type ReleaseInfo = { + url: string; + published_at: string; + download_count: number; + upload_time: string + new: boolean; +}; + +export function getReleasesInfo(releases: GitHubRelease[]) { + const info: Record = {} + + for (const release of releases) { + info[release.tag_name] = getReleaseInfo(release); + } + + return info; +} \ No newline at end of file diff --git a/src/lib/github/types.ts b/src/lib/github/types.ts new file mode 100644 index 0000000..53db8d4 --- /dev/null +++ b/src/lib/github/types.ts @@ -0,0 +1,79 @@ +/** + * Type definitions for GitHub Releases JSON + */ + +export interface GitHubUser { + login: string; + id: number; + node_id: string; + avatar_url: string; + gravatar_id: string | null; + url: string; + html_url: string; + followers_url: string; + following_url: string; + gists_url: string; + starred_url: string; + subscriptions_url: string; + organizations_url: string; + repos_url: string; + events_url: string; + received_events_url: string; + type: string; + user_view_type: string; + site_admin: boolean; +} + +export interface ReleaseAsset { + url: string; + id: number; + node_id: string; + name: string; + label: string; + uploader: GitHubUser; + content_type: string; + state: string; + size: number; + digest: string | null; + download_count: number; + created_at: string; // ISO date string + updated_at: string; // ISO date string + browser_download_url: string; +} + +export interface ReleaseReactions { + url: string; + total_count: number; + '+1': number; + '-1': number; + laugh: number; + hooray: number; + confused: number; + heart: number; + rocket: number; + eyes: number; +} + +export interface GitHubRelease { + url: string; + assets_url: string; + upload_url: string; + html_url: string; + id: number; + author: GitHubUser; + node_id: string; + tag_name: string; + target_commitish: string; + name: string; + draft: boolean; + immutable: boolean; + prerelease: boolean; + created_at: string; // ISO date + updated_at: string; // ISO date + published_at: string; // ISO date + assets: ReleaseAsset[]; + tarball_url: string; + zipball_url: string; + body: string; + reactions: ReleaseReactions; +} \ No newline at end of file diff --git a/src/lib/rain-effect/assets/AssetPrefetch.astro b/src/lib/rain-effect/assets/AssetPrefetch.astro new file mode 100644 index 0000000..42ee449 --- /dev/null +++ b/src/lib/rain-effect/assets/AssetPrefetch.astro @@ -0,0 +1,16 @@ +--- +import { defaultAssets } from "."; +--- + + diff --git a/src/lib/rain-effect/assets/img/city.jpg b/src/lib/rain-effect/assets/img/city.jpg new file mode 100644 index 0000000..0ce3ff5 Binary files /dev/null and b/src/lib/rain-effect/assets/img/city.jpg differ diff --git a/misc/img/drop-alpha.png b/src/lib/rain-effect/assets/img/drop-alpha.png similarity index 100% rename from misc/img/drop-alpha.png rename to src/lib/rain-effect/assets/img/drop-alpha.png diff --git a/misc/img/drop-color.png b/src/lib/rain-effect/assets/img/drop-color.png similarity index 100% rename from misc/img/drop-color.png rename to src/lib/rain-effect/assets/img/drop-color.png diff --git a/misc/img/drop-shine.png b/src/lib/rain-effect/assets/img/drop-shine.png similarity index 100% rename from misc/img/drop-shine.png rename to src/lib/rain-effect/assets/img/drop-shine.png diff --git a/misc/img/drop-shine2.png b/src/lib/rain-effect/assets/img/drop-shine2.png similarity index 100% rename from misc/img/drop-shine2.png rename to src/lib/rain-effect/assets/img/drop-shine2.png diff --git a/src/lib/rain-effect/assets/img/water/texture-bg.png b/src/lib/rain-effect/assets/img/water/texture-bg.png new file mode 100644 index 0000000..37f724e Binary files /dev/null and b/src/lib/rain-effect/assets/img/water/texture-bg.png differ diff --git a/src/lib/rain-effect/assets/img/water/texture-fg.png b/src/lib/rain-effect/assets/img/water/texture-fg.png new file mode 100644 index 0000000..791e57b Binary files /dev/null and b/src/lib/rain-effect/assets/img/water/texture-fg.png differ diff --git a/misc/img/weather/texture-drizzle-bg.png b/src/lib/rain-effect/assets/img/weather/texture-drizzle-bg.png similarity index 100% rename from misc/img/weather/texture-drizzle-bg.png rename to src/lib/rain-effect/assets/img/weather/texture-drizzle-bg.png diff --git a/misc/img/weather/texture-drizzle-fg.png b/src/lib/rain-effect/assets/img/weather/texture-drizzle-fg.png similarity index 100% rename from misc/img/weather/texture-drizzle-fg.png rename to src/lib/rain-effect/assets/img/weather/texture-drizzle-fg.png diff --git a/misc/img/weather/texture-fallout-bg.png b/src/lib/rain-effect/assets/img/weather/texture-fallout-bg.png similarity index 100% rename from misc/img/weather/texture-fallout-bg.png rename to src/lib/rain-effect/assets/img/weather/texture-fallout-bg.png diff --git a/misc/img/weather/texture-fallout-fg.png b/src/lib/rain-effect/assets/img/weather/texture-fallout-fg.png similarity index 100% rename from misc/img/weather/texture-fallout-fg.png rename to src/lib/rain-effect/assets/img/weather/texture-fallout-fg.png diff --git a/misc/img/weather/texture-rain-bg.png b/src/lib/rain-effect/assets/img/weather/texture-rain-bg.png similarity index 100% rename from misc/img/weather/texture-rain-bg.png rename to src/lib/rain-effect/assets/img/weather/texture-rain-bg.png diff --git a/misc/img/weather/texture-rain-fg.png b/src/lib/rain-effect/assets/img/weather/texture-rain-fg.png similarity index 100% rename from misc/img/weather/texture-rain-fg.png rename to src/lib/rain-effect/assets/img/weather/texture-rain-fg.png diff --git a/misc/img/weather/texture-storm-lightning-bg.png b/src/lib/rain-effect/assets/img/weather/texture-storm-lightning-bg.png similarity index 100% rename from misc/img/weather/texture-storm-lightning-bg.png rename to src/lib/rain-effect/assets/img/weather/texture-storm-lightning-bg.png diff --git a/misc/img/weather/texture-storm-lightning-fg.png b/src/lib/rain-effect/assets/img/weather/texture-storm-lightning-fg.png similarity index 100% rename from misc/img/weather/texture-storm-lightning-fg.png rename to src/lib/rain-effect/assets/img/weather/texture-storm-lightning-fg.png diff --git a/misc/img/weather/texture-sun-bg.png b/src/lib/rain-effect/assets/img/weather/texture-sun-bg.png similarity index 100% rename from misc/img/weather/texture-sun-bg.png rename to src/lib/rain-effect/assets/img/weather/texture-sun-bg.png diff --git a/misc/img/weather/texture-sun-fg.png b/src/lib/rain-effect/assets/img/weather/texture-sun-fg.png similarity index 100% rename from misc/img/weather/texture-sun-fg.png rename to src/lib/rain-effect/assets/img/weather/texture-sun-fg.png diff --git a/src/lib/rain-effect/assets/index.ts b/src/lib/rain-effect/assets/index.ts new file mode 100644 index 0000000..341ed63 --- /dev/null +++ b/src/lib/rain-effect/assets/index.ts @@ -0,0 +1,47 @@ +import DropColor from "./img/drop-color.png"; +import DropAlpha from "./img/drop-alpha.png"; +import TextureRainFg from "./img/weather/texture-rain-fg.png"; +import TextureRainBg from "./img/weather/texture-rain-bg.png"; +import TextureSunFg from "./img/weather/texture-sun-fg.png"; +import TextureSunBg from "./img/weather/texture-sun-bg.png"; +import TextureFalloutFg from "./img/weather/texture-fallout-fg.png"; +import TextureFalloutBg from "./img/weather/texture-fallout-bg.png"; +import TextureDrizzleFg from "./img/weather/texture-drizzle-fg.png"; +import TextureDrizzleBg from "./img/weather/texture-drizzle-bg.png"; +import TextureStormLightningFg from "./img/weather/texture-storm-lightning-fg.png"; +import TextureStormLightningBg from "./img/weather/texture-storm-lightning-bg.png"; + +export type Asset = { + img?: HTMLImageElement; + src: string; +} + +export type Assets = { + dropAlpha: Asset; + dropColor: Asset; + textureRainFg: Asset; + textureRainBg: Asset; + textureStormLightningFg: Asset; + textureStormLightningBg: Asset; + textureFalloutFg: Asset; + textureFalloutBg: Asset; + textureSunFg: Asset; + textureSunBg: Asset; + textureDrizzleFg: Asset; + textureDrizzleBg: Asset; +} + +export const defaultAssets: Assets = { + dropAlpha: { src: DropAlpha.src }, + dropColor: { src: DropColor.src }, + textureRainFg: { src: TextureRainFg.src }, + textureRainBg: { src: TextureRainBg.src }, + textureStormLightningFg: { src: TextureStormLightningFg.src }, + textureStormLightningBg: { src: TextureStormLightningBg.src }, + textureFalloutFg: { src: TextureFalloutFg.src }, + textureFalloutBg: { src: TextureFalloutBg.src }, + textureSunFg: { src: TextureSunFg.src }, + textureSunBg: { src: TextureSunBg.src }, + textureDrizzleFg: { src: TextureDrizzleFg.src }, + textureDrizzleBg: { src: TextureDrizzleBg.src }, +}; \ No newline at end of file diff --git a/src/lib/rain-effect/assets/loader.ts b/src/lib/rain-effect/assets/loader.ts new file mode 100644 index 0000000..8ca6bf9 --- /dev/null +++ b/src/lib/rain-effect/assets/loader.ts @@ -0,0 +1,41 @@ +import type { Asset, Assets } from "."; + +interface LoadedAsset extends Asset { + img: HTMLImageElement; +} + +type LoadedAssets = { + [K in keyof Assets]: LoadedAsset; +} + +async function getImage(src: string): Promise { + const img = new Image(); + // Hint browsers to decode off the main thread when possible + // and ensure decode is complete before we hand the image off. + img.decoding = 'async'; + img.src = src; + + // Prefer decode() (non-blocking, ensures readiness). + // Fallback to load/error events for older browsers. + try { + await img.decode(); + } catch { + await new Promise((resolve) => { + const done = () => resolve(); + img.addEventListener("load", done, { once: true }); + img.addEventListener("error", done, { once: true }); + }); + } + + return img; +} + +async function loadAsset(asset: Asset): Promise { + asset.img = await getImage(asset.src); +} + +export async function loadAssets(assets: Assets): Promise { + const promises = Object.values(assets).map((asset) => loadAsset(asset)); + await Promise.all(promises); + return assets as LoadedAssets; +} \ No newline at end of file diff --git a/src/lib/rain-effect/gl-obj.ts b/src/lib/rain-effect/gl-obj.ts new file mode 100644 index 0000000..dde1286 --- /dev/null +++ b/src/lib/rain-effect/gl-obj.ts @@ -0,0 +1,64 @@ +import type { UniformType } from "./webgl"; +import * as WebGLUtils from "./webgl"; + +export default class GL { + canvas!: HTMLCanvasElement; + gl!: WebGLRenderingContext; + program!: WebGLProgram; + width = 0; + height = 0; + + constructor(canvas: HTMLCanvasElement, options: WebGLContextAttributes = {}, vert: string, frag: string) { + this.init(canvas, options, vert, frag); + } + + init(canvas: HTMLCanvasElement, options: WebGLContextAttributes = {}, vert: string, frag: string): void { + this.canvas = canvas; + this.width = canvas.width; + this.height = canvas.height; + + const gl = WebGLUtils.getContext(canvas, options); + if (!gl) { + throw new Error("WebGL context not available"); + } + this.gl = gl; + + const program = this.createProgram(vert, frag); + if (!program) { + throw new Error("Failed to create WebGL program"); + } + this.useProgram(program); + } + + createProgram(vert: string, frag: string): WebGLProgram | null { + const program = WebGLUtils.createProgram(this.gl, vert, frag); + return program; + } + + useProgram(program: WebGLProgram): void { + this.program = program; + this.gl.useProgram(program); + } + + createTexture(source: TexImageSource | null, i: number): WebGLTexture { + // WebGLUtils.createTexture tolerates null sources at runtime; cast for TS. + return WebGLUtils.createTexture(this.gl, source, i); + } + + createUniform(type: UniformType, name: string, ...v: Array): void { + WebGLUtils.createUniform(this.gl, this.program, type, name, ...v); + } + + activeTexture(i: number): void { + WebGLUtils.activeTexture(this.gl, i); + } + + updateTexture(source: TexImageSource): void { + WebGLUtils.updateTexture(this.gl, source); + } + + draw(): void { + WebGLUtils.setRectangle(this.gl, -1, -1, 2, 2); + this.gl.drawArrays(this.gl.TRIANGLES, 0, 6); + } +} \ No newline at end of file diff --git a/src/lib/rain-effect/index.ts b/src/lib/rain-effect/index.ts new file mode 100644 index 0000000..44a4de7 --- /dev/null +++ b/src/lib/rain-effect/index.ts @@ -0,0 +1,342 @@ +// Libraries +import { loadAssets } from './assets/loader'; +import Raindrops from './raindrops'; +import createCanvas from './utils/create-canvas'; +import RainRenderer from './rain-renderer'; +import { gsap } from 'gsap'; +import { chance, random } from './utils/random'; +import times from './utils/times'; +import { defaultAssets } from './assets'; + +let textureRainFg: HTMLImageElement, textureRainBg: HTMLImageElement, + textureStormLightningFg: HTMLImageElement, textureStormLightningBg: HTMLImageElement, + textureFalloutFg: HTMLImageElement, textureFalloutBg: HTMLImageElement, + textureSunFg: HTMLImageElement, textureSunBg: HTMLImageElement, + textureDrizzleFg: HTMLImageElement, textureDrizzleBg: HTMLImageElement, + dropColor: HTMLImageElement, dropAlpha: HTMLImageElement; + +let textureFg: HTMLCanvasElement, + textureFgCtx: CanvasRenderingContext2D, + textureBg: HTMLCanvasElement, + textureBgCtx: CanvasRenderingContext2D; + +const textureBgSize = { + width: 384, + height: 256 +} +const textureFgSize = { + width: 96, + height: 64 +} + +let raindrops: Raindrops, + renderer: RainRenderer, + canvas: HTMLCanvasElement; + +const parallax = { x: 0, y: 0 }; + +let weatherData: { [key: string]: WeatherData }; +let curWeatherData: WeatherData; +const blend = { v: 0 }; + + + +export async function loadTextures(canvasId: string) { + // if correct texture overrides are provided,then load them, otherwise use the existing ones + + const assets = await loadAssets(defaultAssets); + + textureRainFg = assets.textureRainFg.img; + textureRainBg = assets.textureRainBg.img; + + textureFalloutFg = assets.textureFalloutFg.img; + textureFalloutBg = assets.textureFalloutBg.img; + + textureStormLightningFg = assets.textureStormLightningFg.img; + textureStormLightningBg = assets.textureStormLightningBg.img; + + textureSunFg = assets.textureSunFg.img; + textureSunBg = assets.textureSunBg.img; + + textureDrizzleFg = assets.textureDrizzleFg.img; + textureDrizzleBg = assets.textureDrizzleBg.img; + + dropColor = assets.dropColor.img; + dropAlpha = assets.dropAlpha.img; + + init(canvasId); +} + +function init(canvasId: string) { + canvas = document.querySelector(`#${canvasId}`) as HTMLCanvasElement; + + var dpi = window.devicePixelRatio; + + canvas.width = window.innerWidth * dpi; + canvas.height = window.innerHeight * dpi; + canvas.style.width = `${window.innerWidth}px`; + canvas.style.height = `${window.innerHeight}px`; + + raindrops = new Raindrops( + canvas.width, + canvas.height, + dpi, + dropAlpha, + dropColor, + { + trailRate: 1, + trailScaleRange: [0.2, 0.45], + collisionRadius: 0.45, + dropletsCleaningRadiusMultiplier: 0.28, + } + ); + + textureFg = createCanvas(textureFgSize.width, textureFgSize.height); + const fgCtx = textureFg.getContext('2d'); + if (!fgCtx) return; + textureFgCtx = fgCtx; + textureBg = createCanvas(textureBgSize.width, textureBgSize.height); + const bgCtx = textureBg.getContext('2d'); + if (!bgCtx) return; + textureBgCtx = bgCtx; + + generateTextures(textureRainFg, textureRainBg); + + renderer = new RainRenderer(canvas, raindrops.canvas, textureFg, textureBg, null, { + brightness: 1.04, + alphaMultiply: 6, + alphaSubtract: 3, + minRefraction: 128 + // minRefraction:256, + // maxRefraction:512 + }); + + setupEvents(); + + function onResize() { + var dpi = window.devicePixelRatio; + canvas.width = window.innerWidth * dpi; + canvas.height = window.innerHeight * dpi; + canvas.style.width = `${window.innerWidth}px`; + canvas.style.height = `${window.innerHeight}px`; + + raindrops.resize(canvas.width, canvas.height); + renderer.resize(canvas.width, canvas.height); + renderer.updateTextures(); + } + + window.addEventListener('resize', onResize); +} + +function setupEvents() { + setupParallax(); + setupWeather(); + setupFlash(); +} + +function setupParallax() { + document.addEventListener('mousemove', (event) => { + const x = event.pageX; + const y = event.pageY; + + gsap.to(parallax, 1, { + x: ((x / canvas.width) * 2) - 1, + y: ((y / canvas.height) * 2) - 1, + // ease:Quint.easeOut, + onUpdate: () => { + renderer.parallaxX = parallax.x; + renderer.parallaxY = parallax.y; + } + }) + }); +} +function setupFlash() { + setInterval(() => { + if (chance(curWeatherData.flashChance)) { + flash(curWeatherData.bg, curWeatherData.fg, curWeatherData.flashBg, curWeatherData.flashFg); + } + }, 500); +} + +function setupWeather() { + setupWeatherData(); + window.addEventListener("hashchange", () => { + updateWeather(); + }); + updateWeather(); +} + +type WeatherData = { + minR: number, + maxR: number, + rainChance: number, + rainLimit: number, + drizzle: number, + drizzleSize: number[], + raining: boolean, + trailRate: number, + trailScaleRange: number[], + fg: HTMLImageElement, + bg: HTMLImageElement, + flashFg: HTMLImageElement | null, + flashBg: HTMLImageElement | null, + flashChance: number +} + +function setupWeatherData() { + const defaultWeather: WeatherData = { + minR: 10, + maxR: 40, + rainChance: 0.35, + rainLimit: 6, + drizzle: 50, + drizzleSize: [2, 4.5], + raining: true, + trailRate: 1, + trailScaleRange: [0.2, 0.35], + fg: textureRainFg, + bg: textureRainBg, + flashFg: null, + flashBg: null, + flashChance: 0 + }; + + function weather(data: Partial) { + return { ...defaultWeather, ...data }; + }; + + weatherData = { + rain: weather({ + rainChance: 0.35, + rainLimit: 6, + drizzle: 50, + raining: true, + // trailRate:2.5, + fg: textureRainFg, + bg: textureRainBg + }), + storm: weather({ + minR: 20, + maxR: 45, + rainChance: 0.55, + rainLimit: 6, + drizzle: 80, + drizzleSize: [2, 6], + trailRate: 1, + trailScaleRange: [0.15, 0.3], + fg: textureRainFg, + bg: textureRainBg, + flashFg: textureStormLightningFg, + flashBg: textureStormLightningBg, + flashChance: 0.1 + }), + fallout: weather({ + rainChance: 0.35, + rainLimit: 6, + drizzle: 20, + trailRate: 4, + fg: textureFalloutFg, + bg: textureFalloutBg + }), + drizzle: weather({ + rainChance: 0.15, + rainLimit: 2, + drizzle: 10, + fg: textureDrizzleFg, + bg: textureDrizzleBg + }), + sunny: weather({ + rainChance: 0, + rainLimit: 0, + drizzle: 0, + raining: false, + fg: textureSunFg, + bg: textureSunBg + }) + }; +} +function updateWeather() { + var hash = window.location.hash; + var currentSlide: Element | null = null; + // var currentNav = null; + if (hash !== "") { + currentSlide = document.querySelector(hash); + } + if (currentSlide == null) { + currentSlide = document.querySelector(".slide") as Element; + hash = `#${currentSlide.getAttribute("id")}`; + } + // currentNav = document.querySelector("[href='" + hash + "']"); + const weatherKey = currentSlide.getAttribute('data-weather') || 'rain'; + const data = weatherData[weatherKey]; + curWeatherData = data; + raindrops.options = Object.assign(raindrops.options, data); + raindrops.clearDrops(); + + gsap.fromTo( + blend, + { v: 0 }, + { + duration: 1, + v: 1, + onUpdate: () => { + generateTextures(data.fg, data.bg, blend.v); + renderer.updateTextures(); + } + } + ); + + var lastSlide = document.querySelector(".slide--current"); + if (lastSlide != null) lastSlide.classList.remove("slide--current"); + + var lastNav = document.querySelector(".nav-item--current"); + if (lastNav != null) lastNav.classList.remove("nav-item--current"); + + currentSlide.classList.add("slide--current"); + //currentNav.classList.add("nav-item--current"); +} + +function flash( + baseBg: CanvasImageSource, + baseFg: CanvasImageSource, + flashBg: CanvasImageSource | null = null, + flashFg: CanvasImageSource | null = null, +) { + const flashValue = { v: 0 }; + + function transitionFlash(to: number, t = 0.025) { + return new Promise((resolve) => { + gsap.to(flashValue, { + duration: t, + v: to, + // ease:Quint.easeOut, + onUpdate: () => { + generateTextures(baseFg, baseBg); + flashBg && flashFg && generateTextures(flashFg, flashBg, flashValue.v); + renderer.updateTextures(); + }, + onComplete: resolve + }); + }); + } + + let lastFlash = transitionFlash(1); + times(random(2, 7), (_i: number) => { + lastFlash = lastFlash.then(() => { + return transitionFlash(random(0.1, 1)) + }) + }) + lastFlash = lastFlash.then(() => { + return transitionFlash(1, 0.1); + }).then(() => { + transitionFlash(0, 0.25); + }); +} + +function generateTextures(fg: CanvasImageSource, bg: CanvasImageSource, alpha = 1) { + textureFgCtx.globalAlpha = alpha; + textureFgCtx.drawImage(fg, 0, 0, textureFgSize.width, textureFgSize.height); + + textureBgCtx.globalAlpha = alpha; + textureBgCtx.drawImage(bg, 0, 0, textureBgSize.width, textureBgSize.height); +} diff --git a/src/lib/rain-effect/rain-renderer.ts b/src/lib/rain-effect/rain-renderer.ts new file mode 100644 index 0000000..2d1c266 --- /dev/null +++ b/src/lib/rain-effect/rain-renderer.ts @@ -0,0 +1,142 @@ +import createCanvas from "./utils/create-canvas"; +import GL from "./gl-obj"; + +// Import shaders as raw strings (using Vite) +import vertShader from "./shaders/simple.vert?raw"; +import fragShader from "./shaders/water.frag?raw"; + +interface RainRendererOptions { + renderShadow: boolean; + minRefraction: number; + maxRefraction: number; + brightness: number; + alphaMultiply: number; + alphaSubtract: number; + parallaxBg: number; + parallaxFg: number; +} + +const defaultOptions: RainRendererOptions = { + renderShadow: false, + minRefraction: 256, + maxRefraction: 512, + brightness: 1, + alphaMultiply: 20, + alphaSubtract: 5, + parallaxBg: 5, + parallaxFg: 20 +} + +export default class RainRenderer { + canvas: HTMLCanvasElement; + gl!: GL; + canvasLiquid: HTMLCanvasElement; + width = 0; + height = 0; + imageShine: ImageData | null = null; + imageFg: HTMLCanvasElement; + imageBg: HTMLCanvasElement; + textures: { name: string; img: TexImageSource; }[] = []; + programWater!: WebGLProgram; + programBlurX = null; + programBlurY = null; + parallaxX = 0; + parallaxY = 0; + renderShadow = false; + options: RainRendererOptions; + + constructor( + canvas: HTMLCanvasElement, + canvasLiquid: HTMLCanvasElement, + imageFg: HTMLCanvasElement, + imageBg: HTMLCanvasElement, + imageShine: ImageData | null = null, + options: Partial = {} + ) { + this.canvas = canvas; + this.canvasLiquid = canvasLiquid; + this.imageShine = imageShine; + this.imageFg = imageFg; + this.imageBg = imageBg; + this.options = { ...defaultOptions, ...options }; + this.init(); + } + + init() { + this.width = this.canvas.width; + this.height = this.canvas.height; + this.gl = new GL(this.canvas, { alpha: false }, vertShader, fragShader); + const gl = this.gl; + this.programWater = gl.program; + + gl.createUniform("2f", "resolution", this.width, this.height); + gl.createUniform("1f", "textureRatio", this.imageBg.width / this.imageBg.height); + gl.createUniform("1i", "renderShine", this.imageShine != null); + gl.createUniform("1i", "renderShadow", this.options.renderShadow); + gl.createUniform("1f", "minRefraction", this.options.minRefraction); + gl.createUniform("1f", "refractionDelta", this.options.maxRefraction - this.options.minRefraction); + gl.createUniform("1f", "brightness", this.options.brightness); + gl.createUniform("1f", "alphaMultiply", this.options.alphaMultiply); + gl.createUniform("1f", "alphaSubtract", this.options.alphaSubtract); + gl.createUniform("1f", "parallaxBg", this.options.parallaxBg); + gl.createUniform("1f", "parallaxFg", this.options.parallaxFg); + + + gl.createTexture(null, 0); + + this.textures = [ + { name: 'textureShine', img: this.imageShine ?? createCanvas(2, 2) }, + { name: 'textureFg', img: this.imageFg }, + { name: 'textureBg', img: this.imageBg } + ]; + + this.textures.forEach((texture, i) => { + gl.createTexture(texture.img, i + 1); + gl.createUniform("1i", texture.name, i + 1); + }); + + this.draw(); + } + + draw() { + this.gl.useProgram(this.programWater); + // Update uniforms that depend on canvas size each frame to survive resizes + this.gl.createUniform("2f", "resolution", this.width, this.height); + this.gl.createUniform("1f", "textureRatio", this.imageBg.width / this.imageBg.height); + this.gl.createUniform("2f", "parallax", this.parallaxX, this.parallaxY); + this.updateTexture(); + this.gl.draw(); + + requestAnimationFrame(this.draw.bind(this)); + } + + updateTextures() { + this.textures.forEach((texture, i) => { + this.gl.activeTexture(i + 1); + this.gl.updateTexture(texture.img); + }) + } + + updateTexture() { + this.gl.activeTexture(0); + this.gl.updateTexture(this.canvasLiquid); + } + + resize(width: number, height: number) { + this.width = width; + this.height = height; + this.canvas.width = width; + this.canvas.height = height; + + // Update WebGL viewport + this.gl?.gl?.viewport(0, 0, width, height); + } + + get overlayTexture() { + return undefined; + } + + set overlayTexture(_) { + } + +} \ No newline at end of file diff --git a/src/lib/rain-effect/raindrops.ts b/src/lib/rain-effect/raindrops.ts new file mode 100644 index 0000000..09e9c0c --- /dev/null +++ b/src/lib/rain-effect/raindrops.ts @@ -0,0 +1,487 @@ +import createCanvas from "./utils/create-canvas.js"; +import times from "./utils/times.js"; +import { random, chance } from "./utils/random.js"; + +const dropSize = 64; + +class Drop { + x: number; + y: number; + r: number; + spreadX: number; + spreadY: number; + momentum: number; + momentumX: number; + lastSpawn: number; + nextSpawn: number; + parent: Drop | null; + isNew: boolean; + killed: boolean; + shrink: number; + + constructor({ + x = 0, + y = 0, + r = 0, + spreadX = 0, + spreadY = 0, + momentum = 0, + momentumX = 0, + lastSpawn = 0, + nextSpawn = 0, + parent = null, + isNew = true, + killed = false, + shrink = 0, + }: Partial = {}) { + this.x = x; + this.y = y; + this.r = r; + this.spreadX = spreadX; + this.spreadY = spreadY; + this.momentum = momentum; + this.momentumX = momentumX; + this.lastSpawn = lastSpawn; + this.nextSpawn = nextSpawn; + this.parent = parent; + this.isNew = isNew; + this.killed = killed; + this.shrink = shrink; + } +} + +interface RaindropOptions { + minR: number; + maxR: number; + maxDrops: number; + rainChance: number; + rainLimit: number; + dropletsRate: number; + dropletsSize: [number, number]; + dropletsCleaningRadiusMultiplier: number; + raining: boolean; + globalTimeScale: number; + trailRate: number; + autoShrink: boolean; + spawnArea: [number, number]; + trailScaleRange: [number, number]; + collisionRadius: number; + collisionRadiusIncrease: number; + dropFallMultiplier: number; + collisionBoostMultiplier: number; + collisionBoost: number; +} + +const defaultOptions: RaindropOptions = { + minR: 10, + maxR: 40, + maxDrops: 900, + rainChance: 0.3, + rainLimit: 3, + dropletsRate: 50, + dropletsSize: [2, 4], + dropletsCleaningRadiusMultiplier: 0.43, + raining: true, + globalTimeScale: 1, + trailRate: 1, + autoShrink: true, + spawnArea: [-0.1, 0.95], + trailScaleRange: [0.2, 0.5], + collisionRadius: 0.65, + collisionRadiusIncrease: 0.01, + dropFallMultiplier: 1, + collisionBoostMultiplier: 0.05, + collisionBoost: 1, +} + +export default class Raindrops { + dropColor: CanvasImageSource; + dropAlpha: CanvasImageSource; + canvas!: HTMLCanvasElement; + ctx!: CanvasRenderingContext2D; + width = 0; + height = 0; + scale = 0; + dropletsPixelDensity = 1; + droplets!: HTMLCanvasElement; + dropletsCtx!: CanvasRenderingContext2D; + dropletsCounter = 0; + drops: Drop[] = []; + dropsGfx: HTMLCanvasElement[] = []; + clearDropletsGfx!: HTMLCanvasElement; + textureCleaningIterations = 0; + lastRender: number | null = null; + + options: RaindropOptions; + + constructor( + width: number, + height: number, + scale: number, + dropAlpha: CanvasImageSource, + dropColor: CanvasImageSource, + options: Partial = {} + ) { + this.width = width; + this.height = height; + this.scale = scale; + this.dropAlpha = dropAlpha; + this.dropColor = dropColor; + this.options = { ...defaultOptions, ...options }; + this.init(); + } + + resize(width: number, height: number) { + this.width = width; + this.height = height; + if (this.canvas) { + this.canvas.width = width; + this.canvas.height = height; + } + } + + init() { + this.canvas = createCanvas(this.width, this.height); + const ctx = this.canvas.getContext('2d'); + if (!ctx) return; + this.ctx = ctx; + + this.droplets = createCanvas(this.width * this.dropletsPixelDensity, this.height * this.dropletsPixelDensity); + const dropletsCtx = this.droplets.getContext('2d'); + if (!dropletsCtx) return; + this.dropletsCtx = dropletsCtx; + + this.drops = []; + this.dropsGfx = []; + + this.renderDropsGfx(); + + this.update(); + } + + get deltaR() { + return this.options.maxR - this.options.minR; + } + + get area() { + return (this.width * this.height) / this.scale; + } + + get areaMultiplier() { + return Math.sqrt(this.area / (1024 * 768)); + } + + drawDroplet(x: number, y: number, r: number) { + if (!this.dropletsCtx) return; + this.drawDrop(this.dropletsCtx, new Drop({ + x: x * this.dropletsPixelDensity, + y: y * this.dropletsPixelDensity, + r: r * this.dropletsPixelDensity, + })); + } + + renderDropsGfx() { + const dropBuffer = createCanvas(dropSize, dropSize); + const dropBufferCtx = dropBuffer.getContext('2d'); + + if (!dropBufferCtx) return; + + this.dropsGfx = Array.apply(null, Array(255)) + .map((_cur, i) => { + const drop = createCanvas(dropSize, dropSize); + const dropCtx = drop.getContext('2d'); + + if (!dropCtx) return drop; + + dropBufferCtx.clearRect(0, 0, dropSize, dropSize); + + // color + dropBufferCtx.globalCompositeOperation = "source-over"; + dropBufferCtx.drawImage(this.dropColor, 0, 0, dropSize, dropSize); + + // blue overlay, for depth + dropBufferCtx.globalCompositeOperation = "screen"; + dropBufferCtx.fillStyle = `rgba(0,0,${i},1)`; + dropBufferCtx.fillRect(0, 0, dropSize, dropSize); + + // alpha + dropCtx.globalCompositeOperation = "source-over"; + dropCtx.drawImage(this.dropAlpha, 0, 0, dropSize, dropSize); + + dropCtx.globalCompositeOperation = "source-in"; + dropCtx.drawImage(dropBuffer, 0, 0, dropSize, dropSize); + return drop; + }); + + // create circle that will be used as a brush to remove droplets + this.clearDropletsGfx = createCanvas(128, 128); + const clearDropletsCtx = this.clearDropletsGfx.getContext("2d"); + + if (!clearDropletsCtx) return; + + clearDropletsCtx.fillStyle = "#000"; + clearDropletsCtx.beginPath(); + clearDropletsCtx.arc(64, 64, 64, 0, Math.PI * 2); + clearDropletsCtx.fill(); + } + + drawDrop(ctx: CanvasRenderingContext2D, drop: Drop) { + if (this.dropsGfx.length > 0) { + const x = drop.x; + const y = drop.y; + const r = drop.r; + const spreadX = drop.spreadX; + const spreadY = drop.spreadY; + + const scaleX = 1; + const scaleY = 1.5; + + let d = Math.max(0, Math.min(1, ((r - this.options.minR) / (this.deltaR)) * 0.9)); + d *= 1 / (((drop.spreadX + drop.spreadY) * 0.5) + 1); + + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + + d = Math.floor(d * (this.dropsGfx.length - 1)); + ctx.drawImage( + this.dropsGfx[d], + (x - (r * scaleX * (spreadX + 1))) * this.scale, + (y - (r * scaleY * (spreadY + 1))) * this.scale, + (r * 2 * scaleX * (spreadX + 1)) * this.scale, + (r * 2 * scaleY * (spreadY + 1)) * this.scale + ); + } + } + + clearDroplets(x: number, y: number, r: number = 30) { + const ctx = this.dropletsCtx; + if (!ctx) return; + ctx.globalCompositeOperation = "destination-out"; + ctx.drawImage( + this.clearDropletsGfx, + (x - r) * this.dropletsPixelDensity * this.scale, + (y - r) * this.dropletsPixelDensity * this.scale, + (r * 2) * this.dropletsPixelDensity * this.scale, + (r * 2) * this.dropletsPixelDensity * this.scale * 1.5 + ) + } + + clearCanvas() { + this.ctx.clearRect(0, 0, this.width, this.height); + } + + createDrop(options: Partial) { + if (this.drops.length >= this.options.maxDrops * this.areaMultiplier) return null; + + return new Drop(options); + } + + addDrop(drop: Drop) { + if (this.drops.length >= this.options.maxDrops * this.areaMultiplier || drop == null) return false; + + this.drops.push(drop); + return true; + } + + updateRain(timeScale: number) { + const rainDrops: Drop[] = []; + if (this.options.raining) { + const limit = this.options.rainLimit * timeScale * this.areaMultiplier; + let count = 0; + while (chance(this.options.rainChance * timeScale * this.areaMultiplier) && count < limit) { + count++; + const r = random(this.options.minR, this.options.maxR, (n: number) => { + return n ** 3; + }); + const rainDrop = this.createDrop({ + x: random(this.width / this.scale), + y: random((this.height / this.scale) * this.options.spawnArea[0], (this.height / this.scale) * this.options.spawnArea[1]), + r: r, + momentum: 1 + ((r - this.options.minR) * 0.1) + random(2), + spreadX: 1.5, + spreadY: 1.5, + }); + if (rainDrop != null) { + rainDrops.push(rainDrop); + } + } + } + return rainDrops; + } + + clearDrops() { + this.drops.forEach((drop) => { + setTimeout(() => { + drop.shrink = 0.1 + random(0.5); + }, Math.floor(random(1200))) + }) + this.clearTexture(); + } + + clearTexture() { + this.textureCleaningIterations = 50; + } + + updateDroplets(timeScale: number) { + if (this.textureCleaningIterations > 0) { + this.textureCleaningIterations -= 1 * timeScale; + if (this.dropletsCtx) { + this.dropletsCtx.globalCompositeOperation = "destination-out"; + this.dropletsCtx.fillStyle = `rgba(0,0,0,${0.05 * timeScale})`; + this.dropletsCtx.fillRect(0, 0, + this.width * this.dropletsPixelDensity, this.height * this.dropletsPixelDensity); + } + } + if (this.options.raining) { + this.dropletsCounter += this.options.dropletsRate * timeScale * this.areaMultiplier; + times(Math.floor(this.dropletsCounter), (_i: number) => { + this.dropletsCounter--; + this.drawDroplet( + random(this.width / this.scale), + random(this.height / this.scale), + random(...this.options.dropletsSize, (n: number) => { + return n * n; + }) + ) + }); + } + if (this.ctx) this.ctx.drawImage(this.droplets, 0, 0, this.width, this.height); + } + + updateDrops(timeScale: number) { + let newDrops: Drop[] = []; + + this.updateDroplets(timeScale); + const rainDrops = this.updateRain(timeScale); + newDrops = newDrops.concat(rainDrops); + + this.drops.sort((a, b) => { + const va = (a.y * (this.width / this.scale)) + a.x; + const vb = (b.y * (this.width / this.scale)) + b.x; + return va > vb ? 1 : va === vb ? 0 : -1; + }); + + this.drops.forEach((drop: Drop, i: number) => { + if (!drop.killed) { + // update gravity + // (chance of drops "creeping down") + if (chance((drop.r - (this.options.minR * this.options.dropFallMultiplier)) * (0.1 / this.deltaR) * timeScale)) { + drop.momentum += random((drop.r / this.options.maxR) * 4); + } + // clean small drops + if (this.options.autoShrink && drop.r <= this.options.minR && chance(0.05 * timeScale)) { + drop.shrink += 0.01; + } + //update shrinkage + drop.r -= drop.shrink * timeScale; + if (drop.r <= 0) drop.killed = true; + + // update trails + if (this.options.raining) { + drop.lastSpawn += drop.momentum * timeScale * this.options.trailRate; + if (drop.lastSpawn > drop.nextSpawn) { + const trailDrop = this.createDrop({ + x: drop.x + (random(-drop.r, drop.r) * 0.1), + y: drop.y - (drop.r * 0.01), + r: drop.r * random(...this.options.trailScaleRange), + spreadY: drop.momentum * 0.1, + parent: drop, + }); + + if (trailDrop != null) { + newDrops.push(trailDrop); + + drop.r *= 0.97 ** timeScale; + drop.lastSpawn = 0; + drop.nextSpawn = random(this.options.minR, this.options.maxR) - (drop.momentum * 2 * this.options.trailRate) + (this.options.maxR - drop.r); + } + } + } + + //normalize spread + drop.spreadX *= 0.4 ** timeScale; + drop.spreadY *= 0.7 ** timeScale; + + //update position + const moved = drop.momentum > 0; + if (moved && !drop.killed) { + drop.y += drop.momentum * this.options.globalTimeScale; + drop.x += drop.momentumX * this.options.globalTimeScale; + if (drop.y > (this.height / this.scale) + drop.r) { + drop.killed = true; + } + } + + // collision + const checkCollision = (moved || drop.isNew) && !drop.killed; + drop.isNew = false; + + if (checkCollision) { + this.drops.slice(i + 1, i + 70).forEach((drop2: Drop) => { + //basic check + if ( + drop !== drop2 && + drop.r > drop2.r && + drop.parent !== drop2 && + drop2.parent !== drop && + !drop2.killed + ) { + const dx = drop2.x - drop.x; + const dy = drop2.y - drop.y; + const d = Math.sqrt((dx * dx) + (dy * dy)); + //if it's within acceptable distance + if (d < (drop.r + drop2.r) * (this.options.collisionRadius + (drop.momentum * this.options.collisionRadiusIncrease * timeScale))) { + const pi = Math.PI; + const r1 = drop.r; + const r2 = drop2.r; + const a1 = pi * (r1 * r1); + const a2 = pi * (r2 * r2); + let targetR = Math.sqrt((a1 + (a2 * 0.8)) / pi); + if (targetR > this.options.maxR) { + targetR = this.options.maxR; + } + drop.r = targetR; + drop.momentumX += dx * 0.1; + drop.spreadX = 0; + drop.spreadY = 0; + drop2.killed = true; + drop.momentum = Math.max(drop2.momentum, Math.min(40, drop.momentum + (targetR * this.options.collisionBoostMultiplier) + this.options.collisionBoost)); + } + } + }); + } + + //slowdown momentum + drop.momentum -= Math.max(1, (this.options.minR * 0.5) - drop.momentum) * 0.1 * timeScale; + if (drop.momentum < 0) drop.momentum = 0; + drop.momentumX *= 0.7 ** timeScale; + + + if (!drop.killed) { + newDrops.push(drop); + if (moved && this.options.dropletsRate > 0) this.clearDroplets(drop.x, drop.y, drop.r * this.options.dropletsCleaningRadiusMultiplier); + this.drawDrop(this.ctx, drop); + } + + } + }); + + this.drops = newDrops; + } + + update() { + this.clearCanvas(); + + const now = Date.now(); + const last = (this.lastRender ?? now); + const deltaT = now - last; + let timeScale = deltaT / ((1 / 60) * 1000); + if (timeScale > 1.1) timeScale = 1.1; + timeScale *= this.options.globalTimeScale; + this.lastRender = now; + + this.updateDrops(timeScale); + + requestAnimationFrame(this.update.bind(this)); + } +} \ No newline at end of file diff --git a/src/lib/rain-effect/shaders/simple.vert b/src/lib/rain-effect/shaders/simple.vert new file mode 100644 index 0000000..be6fdc5 --- /dev/null +++ b/src/lib/rain-effect/shaders/simple.vert @@ -0,0 +1,7 @@ +precision mediump float; + +attribute vec2 a_position; + +void main() { + gl_Position = vec4(a_position,0.0,1.0); +} \ No newline at end of file diff --git a/src/lib/rain-effect/shaders/water.frag b/src/lib/rain-effect/shaders/water.frag new file mode 100644 index 0000000..8d5580b --- /dev/null +++ b/src/lib/rain-effect/shaders/water.frag @@ -0,0 +1,125 @@ +precision mediump float; + +// textures +uniform sampler2D u_waterMap; +uniform sampler2D u_textureShine; +uniform sampler2D u_textureFg; +uniform sampler2D u_textureBg; + +// the texCoords passed in from the vertex shader. +varying vec2 v_texCoord; +uniform vec2 u_resolution; +uniform vec2 u_parallax; +uniform float u_parallaxFg; +uniform float u_parallaxBg; +uniform float u_textureRatio; +uniform bool u_renderShine; +uniform bool u_renderShadow; +uniform float u_minRefraction; +uniform float u_refractionDelta; +uniform float u_brightness; +uniform float u_alphaMultiply; +uniform float u_alphaSubtract; + +// alpha-blends two colors +vec4 blend(vec4 bg,vec4 fg){ + vec3 bgm=bg.rgb*bg.a; + vec3 fgm=fg.rgb*fg.a; + float ia=1.0-fg.a; + float a=(fg.a + bg.a * ia); + vec3 rgb; + if(a!=0.0){ + rgb=(fgm + bgm * ia) / a; + }else{ + rgb=vec3(0.0,0.0,0.0); + } + return vec4(rgb,a); +} + +vec2 pixel(){ + return vec2(1.0,1.0)/u_resolution; +} + +vec2 parallax(float v){ + return u_parallax*pixel()*v; +} + +vec2 texCoord(){ + return vec2(gl_FragCoord.x, u_resolution.y-gl_FragCoord.y)/u_resolution; +} + +// scales the bg up and proportionally to fill the container +vec2 scaledTexCoord(){ + float ratio=u_resolution.x/u_resolution.y; + vec2 scale=vec2(1.0,1.0); + vec2 offset=vec2(0.0,0.0); + float ratioDelta=ratio-u_textureRatio; + if(ratioDelta>=0.0){ + scale.y=(1.0+ratioDelta); + offset.y=ratioDelta/2.0; + }else{ + scale.x=(1.0-ratioDelta); + offset.x=-ratioDelta/2.0; + } + return (texCoord()+offset)/scale; +} + +// get color from fg +vec4 fgColor(float x, float y){ + float p2=u_parallaxFg*2.0; + vec2 scale=vec2( + (u_resolution.x+p2)/u_resolution.x, + (u_resolution.y+p2)/u_resolution.y + ); + + vec2 scaledTexCoord=texCoord()/scale; + vec2 offset=vec2( + (1.0-(1.0/scale.x))/2.0, + (1.0-(1.0/scale.y))/2.0 + ); + + return texture2D(u_waterMap, + (scaledTexCoord+offset)+(pixel()*vec2(x,y))+parallax(u_parallaxFg) + ); +} + +void main() { + vec4 bg=texture2D(u_textureBg,scaledTexCoord()+parallax(u_parallaxBg)); + + vec4 cur = fgColor(0.0,0.0); + + float d=cur.b; // "thickness" + float x=cur.g; + float y=cur.r; + + float a=clamp(cur.a*u_alphaMultiply-u_alphaSubtract, 0.0,1.0); + + vec2 refraction = (vec2(x,y)-0.5)*2.0; + vec2 refractionParallax=parallax(u_parallaxBg-u_parallaxFg); + vec2 refractionPos = scaledTexCoord() + + (pixel()*refraction*(u_minRefraction+(d*u_refractionDelta))) + + refractionParallax; + + vec4 tex=texture2D(u_textureFg,refractionPos); + + if(u_renderShine){ + float maxShine=490.0; + float minShine=maxShine*0.18; + vec2 shinePos=vec2(0.5,0.5) + ((1.0/512.0)*refraction)* -(minShine+((maxShine-minShine)*d)); + vec4 shine=texture2D(u_textureShine,shinePos); + tex=blend(tex,shine); + } + + vec4 fg=vec4(tex.rgb*u_brightness,a); + + if(u_renderShadow){ + float borderAlpha = fgColor(0.,0.-(d*6.0)).a; + borderAlpha=borderAlpha*u_alphaMultiply-(u_alphaSubtract+0.5); + borderAlpha=clamp(borderAlpha,0.,1.); + borderAlpha*=0.2; + vec4 border=vec4(0.,0.,0.,borderAlpha); + fg=blend(border,fg); + } + + gl_FragColor = blend(bg,fg); +} \ No newline at end of file diff --git a/src/lib/rain-effect/utils/create-canvas.ts b/src/lib/rain-effect/utils/create-canvas.ts new file mode 100644 index 0000000..244f381 --- /dev/null +++ b/src/lib/rain-effect/utils/create-canvas.ts @@ -0,0 +1,6 @@ +export default function createCanvas(width: number, height: number): HTMLCanvasElement { + const canvas = document.createElement("canvas") as HTMLCanvasElement; + canvas.width = width; + canvas.height = height; + return canvas; +} \ No newline at end of file diff --git a/src/lib/rain-effect/utils/random.ts b/src/lib/rain-effect/utils/random.ts new file mode 100644 index 0000000..acf6bc7 --- /dev/null +++ b/src/lib/rain-effect/utils/random.ts @@ -0,0 +1,24 @@ +export function random( + from: number | null = null, + to: number | null = null, + interpolation: ((n: number) => number) | null = null +): number { + if (from == null) { + from = 0; + to = 1; + } else if (from != null && to == null) { + to = from; + from = 0; + } + const delta = (to as number) - (from as number); + + if (interpolation == null) { + interpolation = (n: number) => { + return n; + } + } + return (from as number) + (interpolation(Math.random()) * delta); +} +export function chance(c: number): boolean { + return random() <= c; +} \ No newline at end of file diff --git a/src/lib/rain-effect/utils/times.ts b/src/lib/rain-effect/utils/times.ts new file mode 100644 index 0000000..6b48e9a --- /dev/null +++ b/src/lib/rain-effect/utils/times.ts @@ -0,0 +1,5 @@ +export default function times(n: number, f: Function) { + for (let i = 0; i < n; i++) { + f.call(this, i); + } +} \ No newline at end of file diff --git a/src/lib/rain-effect/webgl.ts b/src/lib/rain-effect/webgl.ts new file mode 100644 index 0000000..33eb217 --- /dev/null +++ b/src/lib/rain-effect/webgl.ts @@ -0,0 +1,134 @@ +export function getContext(canvas: HTMLCanvasElement, options: WebGLContextAttributes = {}) { + const context = canvas.getContext("webgl", options); + + if (context == null) { + document.body.classList.add("no-webgl"); + } + + return context; +} + +export function createProgram(gl: WebGLRenderingContext, vertexScript: string, fragScript: string): WebGLProgram | null { + const vertexShader = createShader(gl, vertexScript, gl.VERTEX_SHADER); + const fragShader = createShader(gl, fragScript, gl.FRAGMENT_SHADER); + + if (!vertexShader || !fragShader) { + return null; + } + + const program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragShader); + + gl.linkProgram(program); + + const linked = gl.getProgramParameter(program, gl.LINK_STATUS); + + if (!linked) { + const lastError = gl.getProgramInfoLog(program); + error(`Error in program linking: ${lastError}`); + gl.deleteProgram(program); + return null; + } + + var positionLocation = gl.getAttribLocation(program, "a_position"); + var texCoordLocation = gl.getAttribLocation(program, "a_texCoord"); + + var texCoordBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ + -1.0, -1.0, + 1.0, -1.0, + -1.0, 1.0, + -1.0, 1.0, + 1.0, -1.0, + 1.0, 1.0 + ]), gl.STATIC_DRAW); + gl.enableVertexAttribArray(texCoordLocation); + gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); + + // Create a buffer for the position of the rectangle corners. + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.enableVertexAttribArray(positionLocation); + gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); + + return program; +} + + +export function createShader(gl: WebGLRenderingContext, script: string, type: GLenum) { + const shader = gl.createShader(type); + + if (!shader) { + error("Error creating shader."); + return null; + } + + gl.shaderSource(shader, script); + gl.compileShader(shader); + + const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + + if (!compiled) { + const lastError = gl.getShaderInfoLog(shader); + error(`Error compiling shader '${shader}':${lastError}`); + gl.deleteShader(shader); + return null; + } + + return shader; +} +export function createTexture(gl: WebGLRenderingContext, source: TexImageSource | null, i: number): WebGLTexture { + var texture = gl.createTexture(); + activeTexture(gl, i); + gl.bindTexture(gl.TEXTURE_2D, texture); + + // Set the parameters so we can render any size image. + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + + if (source !== null) { + updateTexture(gl, source); + } + + return texture; +} + +export type UniformType = "1f" | "1fv" | "1i" | "1iv" | "2f" | "2fv" | "2i" | "2iv" | "3f" | "3fv" | "3i" | "3iv" | "4f" | "4fv" | "4i" | "4iv" | "Matrix2fv" | "Matrix3fv" | "Matrix4fv"; + +export function createUniform(gl: WebGLRenderingContext, program: WebGLProgram, type: UniformType, name: string, ...args: Array) { + const location = gl.getUniformLocation(program, `u_${name}`); + if (location) { + gl[`uniform${type}`](location, ...args); + } +} + +export function activeTexture(gl: WebGLRenderingContext, i: number) { + gl.activeTexture(gl[`TEXTURE${i}`]); +} + +export function updateTexture(gl: WebGLRenderingContext, source: TexImageSource) { + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source); +} + +export function setRectangle(gl: WebGLRenderingContext, x: number, y: number, width: number, height: number) { + const x1 = x; + const x2 = x + width; + const y1 = y; + const y2 = y + height; + + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ + x1, y1, + x2, y1, + x1, y2, + x1, y2, + x2, y1, + x2, y2]), gl.STATIC_DRAW); +} + +function error(msg: unknown) { + console.error(msg); +} \ No newline at end of file diff --git a/src/lib/snowstorm/index.ts b/src/lib/snowstorm/index.ts new file mode 100644 index 0000000..2addb84 --- /dev/null +++ b/src/lib/snowstorm/index.ts @@ -0,0 +1,632 @@ +/** @license + * DHTML Snowstorm! JavaScript-based snow for web pages + * Making it snow on the internets since 2003. You're welcome. + * ----------------------------------------------------------- + * Version 1.44.20131215 (Previous rev: 1.44.20131208) + * Copyright (c) 2007, Scott Schiller. All rights reserved. + * Code provided under the BSD License + * http://schillmania.com/projects/snowstorm/license.txt + */ + +// Modern TypeScript refactor of the original Snowstorm script. + +export interface SnowStormOptions { + autoStart?: boolean; + excludeMobile?: boolean; + flakesMax?: number; + flakesMaxActive?: number; + animationInterval?: number; // ms per frame when falling back to setTimeout + useGPU?: boolean; + className?: string | null; + flakeBottom?: number | null; + followMouse?: boolean; + snowColor?: string; + snowCharacter?: string; // e.g. '•' + snowStick?: boolean; + targetElement?: HTMLElement | string | null; // element or element id + useMeltEffect?: boolean; + useTwinkleEffect?: boolean; + usePositionFixed?: boolean; + usePixelPosition?: boolean; + accessibility?: boolean; // hide from screen readers + + // Less-used bits + freezeOnBlur?: boolean; + flakeLeftOffset?: number; + flakeRightOffset?: number; + flakeWidth?: number; + flakeHeight?: number; + vMaxX?: number; + vMaxY?: number; + zIndex?: number; +} + +type RAF = (cb: FrameRequestCallback) => number; +type CAF = (id: number) => void; + +function isBrowser(): boolean { + return typeof window !== 'undefined' && typeof document !== 'undefined'; +} + +function isMobileUA(): boolean { + if (!isBrowser()) return false; + return /mobile|opera m(ob|in)/i.test(navigator.userAgent); +} + +function clamp(min: number, value: number, max: number): number { + return Math.max(min, Math.min(max, value)); +} + +export class SnowStorm { + // Public options + autoStart: boolean; + excludeMobile: boolean; + flakesMax: number; + flakesMaxActive: number; + animationInterval: number; + useGPU: boolean; + className: string | null; + flakeBottom: number | null; + followMouse: boolean; + snowColor: string; + snowCharacter: string; + snowStick: boolean; + targetElement: HTMLElement | null; + targetElementRef: HTMLElement | null | undefined; // internal ref after resolving string + useMeltEffect: boolean; + useTwinkleEffect: boolean; + usePositionFixed: boolean; + usePixelPosition: boolean; + accessibility: boolean; + + // Less-used + freezeOnBlur: boolean; + flakeLeftOffset: number; + flakeRightOffset: number; + flakeWidth: number; + flakeHeight: number; + vMaxX: number; + vMaxY: number; + zIndex: number; + + // Internal state + public flakes: SnowFlake[] = []; + public active = false; + public disabled = false; + private didInit = false; + public meltFrameCount = 20; + public meltFrames: number[] = []; + public docFrag: DocumentFragment | null = null; + + public screenX = 0; + public screenY = 0; + public screenX2 = 0; + public scrollY = 0; + public docHeight = 0; + public vRndX = 0; + public vRndY = 0; + public windOffset = 1; + private windMultiplier = 2; + private flakeTypes = 6; + public fixedForEverything = false; + public targetElementIsRelative = false; + public opacitySupported = true; + + // Animation + private raf: RAF | null = null; + private caf: CAF | null = null; + private rafId: number | null = null; + + // Event handlers (bound) + private onResize = () => this.resizeHandler(); + private onScroll = () => this.scrollHandler(); + private onMouseMove = (e: MouseEvent) => this.mouseMove(e); + private onBlur = () => this.freeze(); + private onFocus = () => this.resume(); + private onLoad = () => this._doStart(); + + constructor(options: SnowStormOptions = {}) { + // Defaults derived from original script + this.autoStart = options.autoStart ?? false; + this.excludeMobile = options.excludeMobile ?? false; + this.flakesMax = options.flakesMax ?? 128; + this.flakesMaxActive = options.flakesMaxActive ?? 64; + this.animationInterval = options.animationInterval ?? 33; + this.useGPU = options.useGPU ?? true; + this.className = options.className ?? null; + this.flakeBottom = options.flakeBottom ?? null; + this.followMouse = options.followMouse ?? true; + this.snowColor = options.snowColor ?? '#fff'; + this.snowCharacter = options.snowCharacter ?? '•'; + this.snowStick = options.snowStick ?? true; + this.targetElement = null; // resolve below + this.targetElementRef = undefined; + this.useMeltEffect = options.useMeltEffect ?? true; + this.useTwinkleEffect = options.useTwinkleEffect ?? false; + this.usePositionFixed = options.usePositionFixed ?? false; + this.usePixelPosition = options.usePixelPosition ?? false; + this.accessibility = options.accessibility ?? true; + + this.freezeOnBlur = options.freezeOnBlur ?? true; + this.flakeLeftOffset = options.flakeLeftOffset ?? 0; + this.flakeRightOffset = options.flakeRightOffset ?? 0; + this.flakeWidth = options.flakeWidth ?? 8; + this.flakeHeight = options.flakeHeight ?? 8; + this.vMaxX = options.vMaxX ?? 5; + this.vMaxY = options.vMaxY ?? 4; + this.zIndex = options.zIndex ?? 0; + + if (isBrowser()) { + this.opacitySupported = this._detectOpacitySupport(); + this._setupRAF(); + this.docFrag = document.createDocumentFragment(); + + // Resolve target element lazily; if string provided, resolve at start() + if (typeof options.targetElement === 'string') { + const el = document.getElementById(options.targetElement) as HTMLElement | null; + this.targetElement = el ?? null; + } else if (options.targetElement instanceof HTMLElement) { + this.targetElement = options.targetElement; + } else { + this.targetElement = null; + } + + if (this.autoStart) { + // Start on window load (respect mobile exclusion) + window.addEventListener('load', this.onLoad, { once: true }); + } + } + } + + // Public API + start(): void { + if (!isBrowser()) return; + if (this.didInit) { + // Already initialized + this.active = true; + this.resume(); + return; + } + this.didInit = true; + + // Resolve / default target element + if (!this.targetElement) { + this.targetElement = (document.body || document.documentElement); + } + + const target = this.targetElement; + if (!target) return; + this.targetElementRef = target; + + // If target is not the root/body, force pixel positioning and use alt resize handler + if (target !== document.documentElement && target !== document.body) { + this.usePixelPosition = true; + } + + // Detect if target is relatively positioned + try { + this.targetElementIsRelative = (window.getComputedStyle(target).getPropertyValue('position') === 'relative'); + } catch { + this.targetElementIsRelative = false; + } + + // Positioning mode + this.fixedForEverything = !!(this.usePositionFixed && !this.flakeBottom); + + // Precompute melt frames + this.meltFrames = []; + for (let i = 0; i < this.meltFrameCount; i++) { + this.meltFrames.push(1 - (i / this.meltFrameCount)); + } + + this.randomizeWind(); + this.createSnow(this.flakesMax); + + // Listeners + window.addEventListener('resize', this.onResize); + window.addEventListener('scroll', this.onScroll); + if (this.freezeOnBlur) { + window.addEventListener('blur', this.onBlur); + window.addEventListener('focus', this.onFocus); + } + if (this.followMouse) { + window.addEventListener('mousemove', this.onMouseMove); + } + + this.resizeHandler(); + this.scrollHandler(); + this.animationInterval = Math.max(20, this.animationInterval); + this.timerInit(); + this.active = true; + } + + stop(): void { + if (!isBrowser()) return; + this.freeze(); + for (const flake of this.flakes) { + flake.o.style.display = 'none'; + } + window.removeEventListener('scroll', this.onScroll); + window.removeEventListener('resize', this.onResize); + if (this.freezeOnBlur) { + window.removeEventListener('blur', this.onBlur); + window.removeEventListener('focus', this.onFocus); + } + if (this.followMouse) { + window.removeEventListener('mousemove', this.onMouseMove); + } + this.active = false; + } + + toggleSnow(): void { + if (!this.flakes.length) { + this.start(); + return; + } + this.active = !this.active; + if (this.active) { + this.show(); + this.resume(); + } else { + this.stop(); + this.freeze(); + } + } + + freeze(): void { + if (!this.disabled) { + this.disabled = true; + } else { + return; + } + this._stopRAF(); + } + + resume(): void { + if (this.disabled) { + this.disabled = false; + } else { + return; + } + this.timerInit(); + } + + show(): void { + for (const flake of this.flakes) { + flake.o.style.display = 'block'; + } + } + + randomizeWind(): void { + this.vRndX = this._plusMinus(this._rnd(this.vMaxX, 0.2)); + this.vRndY = this._rnd(this.vMaxY, 0.2); + for (const flake of this.flakes) { + if (flake.active) flake.setVelocities(); + } + } + + // --- Internal methods --- + private _doStart(): void { + if (this.excludeMobile && isMobileUA()) return; + this.start(); + } + + private _detectOpacitySupport(): boolean { + const el = document.createElement('div'); + try { + el.style.opacity = '0.5'; + return true; + } catch { + return false; + } + } + + private _setupRAF(): void { + const w = window as unknown as { + requestAnimationFrame?: RAF; + webkitRequestAnimationFrame?: RAF; + mozRequestAnimationFrame?: RAF; + oRequestAnimationFrame?: RAF; + msRequestAnimationFrame?: RAF; + cancelAnimationFrame?: CAF; + webkitCancelAnimationFrame?: CAF; + mozCancelAnimationFrame?: CAF; + oCancelAnimationFrame?: CAF; + msCancelAnimationFrame?: CAF; + }; + const raf: RAF | undefined = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.mozRequestAnimationFrame || w.oRequestAnimationFrame || w.msRequestAnimationFrame; + const caf: CAF | undefined = w.cancelAnimationFrame || w.webkitCancelAnimationFrame || w.mozCancelAnimationFrame || w.oCancelAnimationFrame || w.msCancelAnimationFrame; + if (raf && caf) { + this.raf = (cb) => raf(cb); + this.caf = (id) => caf(id); + } else { + this.raf = (cb) => window.setTimeout(cb, 1000 / (this.animationInterval || 30)); + this.caf = (id) => window.clearTimeout(id); + } + } + + private _stopRAF(): void { + if (this.rafId != null && this.caf) { + this.caf(this.rafId); + } + this.rafId = null; + } + + private _rnd(n: number, min = 0): number { + return (Math.random() * n) + min; + } + + private _plusMinus(n: number): number { + return (parseInt(String(this._rnd(2)), 10) === 1 ? n * -1 : n); + } + + public setXY(o: HTMLElement, x: number, y: number): void { + if (!o) return; + + // Prefer pixel positioning for modern environments or when target is relative + if (this.usePixelPosition || this.targetElementIsRelative) { + o.style.left = `${x - this.flakeWidth}px`; + o.style.top = `${y - this.flakeHeight}px`; + return; + } + + if (!this.flakeBottom) { + // Use right/bottom percentages to avoid scrollbars + o.style.right = `${100 - (x / this.screenX * 100)}%`; + o.style.bottom = `${100 - (y / this.screenY * 100)}%`; + } else { + o.style.right = `${100 - (x / this.screenX * 100)}%`; + o.style.top = `${Math.min(y, this.docHeight - this.flakeHeight)}px`; + } + } + + private resizeHandler(): void { + if (!isBrowser()) return; + if (this.targetElementRef && this.targetElementRef !== document.documentElement && this.targetElementRef !== document.body) { + // Alt handler for custom container + this.screenX = this.targetElementRef.offsetWidth - this.flakeRightOffset; + this.screenY = this.flakeBottom ?? this.targetElementRef.offsetHeight; + } else { + this.screenX = (window.innerWidth ?? document.documentElement.clientWidth) - 16 - this.flakeRightOffset; + this.screenY = this.flakeBottom ?? (window.innerHeight ?? document.documentElement.clientHeight); + } + this.docHeight = document.body.offsetHeight; + this.screenX = Math.max(0, this.screenX); + this.screenY = Math.max(0, this.screenY); + this.screenX2 = Math.floor(this.screenX / 2); + } + + private scrollHandler(): void { + if (!isBrowser()) return; + // Attach flakes to bottom of window if no absolute bottom value was given + this.scrollY = this.flakeBottom ? 0 : (window.scrollY || document.documentElement.scrollTop || 0); + if (Number.isNaN(this.scrollY)) this.scrollY = 0; + if (!this.fixedForEverything && !this.flakeBottom) { + for (const flake of this.flakes) { + if (flake.active === 0) flake.stick(); + } + } + } + + private timerInit(): void { + if (!isBrowser()) return; + const loop = () => { + if (this.disabled) return; // paused + this.snow(); + if (this.raf) this.rafId = this.raf(loop); + }; + if (this.raf) this.rafId = this.raf(loop); + } + + private snow(): void { + let active = 0; + for (let i = 0; i < this.flakes.length; i++) { + const f = this.flakes[i]; + if (f.active === 1) { + f.move(); + active++; + } + if (f.melting) f.melt(); + } + if (active < this.flakesMaxActive && this.flakes.length) { + const flake = this.flakes[Math.floor(this._rnd(this.flakes.length))]; + if (flake.active === 0) flake.melting = true; + } + } + + private mouseMove(e: MouseEvent): void { + if (!this.followMouse) return; + const x = clamp(0, e.clientX, this.screenX); + if (x < this.screenX2) { + this.windOffset = -this.windMultiplier + (x / this.screenX2 * this.windMultiplier); + } else { + const x2 = x - this.screenX2; + this.windOffset = (x2 / this.screenX2) * this.windMultiplier; + } + } + + private createSnow(limit: number, allowInactive = false): void { + if (!isBrowser() || !this.docFrag || !this.targetElementRef) return; + for (let i = 0; i < limit; i++) { + const flake = new SnowFlake(this, Math.floor(this._rnd(this.flakeTypes))); + this.flakes.push(flake); + if (allowInactive || i > this.flakesMaxActive) flake.active = -1; + } + this.targetElementRef.appendChild(this.docFrag); + } +} + +class SnowFlake { + type: number; + x: number; + y: number; + vX = 0; + vY = 0; + vAmpTypes = [1, 1.2, 1.4, 1.6, 1.8]; + vAmp: number; + melting = false; + meltFrameCount: number; + meltFrames: number[]; + meltFrame = 0; + twinkleFrame = 0; + active = 1; // 1 = active, 0 = stopped, -1 = inactive + fontSize: number; + o: HTMLDivElement; + + constructor(private storm: SnowStorm, type: number, x?: number, y?: number) { + this.type = type; + this.x = (typeof x === 'number') ? x : Math.floor(Math.random() * Math.max(1, this.storm.screenX - 20)); + this.y = (typeof y === 'number') ? y : -Math.random() * Math.max(1, this.storm.screenY) - 12; + this.vAmp = this.vAmpTypes[this.type] || 1; + this.meltFrameCount = this.storm.meltFrameCount || 20; + this.meltFrames = this.storm.meltFrames || []; + this.fontSize = (10 + (this.type / 5) * 10); + this.o = document.createElement('div'); + this.o.innerHTML = this.storm.snowCharacter; + if (this.storm.className) this.o.setAttribute('class', this.storm.className); + this.o.style.color = this.storm.snowColor; + this.o.style.position = (this.storm.fixedForEverything ? 'fixed' : 'absolute'); + if (this.storm.useGPU) { + // enable GPU compositing + this.o.style.transform = 'translate3d(0px, 0px, 0px)'; + } + this.o.style.width = `${this.storm.flakeWidth}px`; + this.o.style.height = `${this.storm.flakeHeight}px`; + this.o.style.fontFamily = 'arial,verdana'; + this.o.style.cursor = 'default'; + this.o.style.overflow = 'hidden'; + this.o.style.fontWeight = 'normal'; + this.o.style.zIndex = String(this.storm.zIndex); + if (this.storm.accessibility) this.o.setAttribute('aria-hidden', 'true'); + + this.storm.docFrag?.appendChild(this.o); + + this.recycle(); + this.refresh(); + } + + refresh(): void { + if (Number.isNaN(this.x) || Number.isNaN(this.y)) return; + this.storm.setXY(this.o, this.x, this.y); + } + + stick(): void { + const screenY = this.storm.screenY; + const scrollY = this.storm.scrollY; + const target = this.storm.targetElementRef; + const isRoot = target === document.documentElement || target === document.body; + if (!this.storm.fixedForEverything && isRoot && this.storm.flakeBottom == null) { + // Use fixed bottom when allowed and attached to root + this.o.style.display = 'none'; + this.o.style.top = 'auto'; + this.o.style.bottom = '0%'; + this.o.style.position = 'fixed'; + this.o.style.display = 'block'; + } else if (this.storm.flakeBottom != null) { + this.o.style.top = `${this.storm.flakeBottom}px`; + } else { + this.o.style.top = `${screenY + scrollY - this.storm.flakeHeight}px`; + } + } + + vCheck(): void { + if (this.vX >= 0 && this.vX < 0.2) this.vX = 0.2; + else if (this.vX < 0 && this.vX > -0.2) this.vX = -0.2; + if (this.vY >= 0 && this.vY < 0.2) this.vY = 0.2; + } + + move(): void { + const windOffset = this.storm.windOffset; + const flakeWidth = this.storm.flakeWidth; + const screenX = this.storm.screenX; + const screenY = this.storm.screenY; + const scrollY = this.storm.scrollY; + + const vX = this.vX * windOffset; + this.x += vX; + this.y += (this.vY * this.vAmp); + + if (this.x >= screenX || screenX - this.x < flakeWidth) { + this.x = 0; + } else if (vX < 0 && this.x - this.storm.flakeLeftOffset < -flakeWidth) { + this.x = screenX - flakeWidth - 1; + } + this.refresh(); + + const yDiff = screenY + scrollY - this.y + this.storm.flakeHeight; + if (yDiff < this.storm.flakeHeight) { + this.active = 0; + if (this.storm.snowStick) this.stick(); + else this.recycle(); + } else { + if (this.storm.useMeltEffect && this.active && this.type < 3 && !this.melting && Math.random() > 0.998) { + this.melting = true; + this.melt(); + } + if (this.storm.useTwinkleEffect) { + if (this.twinkleFrame < 0) { + if (Math.random() > 0.97) this.twinkleFrame = Math.floor(Math.random() * 8); + } else { + this.twinkleFrame--; + if (!this.storm.opacitySupported) { + this.o.style.visibility = (this.twinkleFrame && this.twinkleFrame % 2 === 0 ? 'hidden' : 'visible'); + } else { + this.o.style.opacity = (this.twinkleFrame && this.twinkleFrame % 2 === 0 ? '0' : '1'); + } + } + } + } + } + + setVelocities(): void { + this.vX = this.storm.vRndX + Math.random() * (this.storm.vMaxX * 0.12) + 0.1; + this.vY = this.storm.vRndY + Math.random() * (this.storm.vMaxY * 0.12) + 0.1; + } + + private setOpacity(o: HTMLElement, opacity: number): void { + if (!this.storm.opacitySupported) return; + o.style.opacity = String(opacity); + } + + melt(): void { + if (!this.storm.useMeltEffect || !this.melting) { + this.recycle(); + } else { + if (this.meltFrame < this.meltFrameCount) { + this.setOpacity(this.o, this.meltFrames[this.meltFrame]); + this.o.style.fontSize = `${this.fontSize - (this.fontSize * (this.meltFrame / this.meltFrameCount))}px`; + this.o.style.lineHeight = `${this.storm.flakeHeight + 2 + (this.storm.flakeHeight * 0.75 * (this.meltFrame / this.meltFrameCount))}px`; + this.meltFrame++; + } else { + this.recycle(); + } + } + } + + recycle(): void { + this.o.style.display = 'none'; + this.o.style.position = (this.storm.fixedForEverything ? 'fixed' : 'absolute'); + this.o.style.bottom = 'auto'; + this.setVelocities(); + this.vCheck(); + this.meltFrame = 0; + this.melting = false; + this.setOpacity(this.o, 1); + this.o.style.padding = '0px'; + this.o.style.margin = '0px'; + this.o.style.fontSize = `${this.fontSize}px`; + this.o.style.lineHeight = `${(this.storm.flakeHeight + 2)}px`; + this.o.style.textAlign = 'center'; + this.o.style.verticalAlign = 'baseline'; + const screenX = this.storm.screenX; + const screenY = this.storm.screenY; + this.x = Math.floor(Math.random() * Math.max(1, screenX - this.storm.flakeWidth - 20)); + this.y = Math.floor(Math.random() * Math.max(1, screenY)) * -1 - this.storm.flakeHeight; + this.refresh(); + this.o.style.display = 'block'; + this.active = 1; + } +} + +// Singleton instance for easy imports +// export const snowStorm = isBrowser() ? new SnowStorm() : undefined; diff --git a/src/pages/gol/[id].astro b/src/pages/gol/[id].astro new file mode 100644 index 0000000..36e2580 --- /dev/null +++ b/src/pages/gol/[id].astro @@ -0,0 +1,24 @@ +--- +import GOLLayout from "@/layouts/GOLLayout.astro"; +import type { + GetStaticPaths, + InferGetStaticParamsType, + InferGetStaticPropsType, +} from "astro"; +import { getCollection } from "astro:content"; + +export const getStaticPaths: GetStaticPaths = async () => { + const entries = await getCollection("gol"); + + return entries.map((entry) => ({ + params: { id: entry.data.id }, + })); +}; + +type Props = InferGetStaticPropsType; +type Params = InferGetStaticParamsType; + +const { id } = Astro.params as Params; +--- + + diff --git a/src/pages/gol/index.astro b/src/pages/gol/index.astro new file mode 100644 index 0000000..68e7af0 --- /dev/null +++ b/src/pages/gol/index.astro @@ -0,0 +1,9 @@ +--- +import GOLLayout from "@/layouts/GOLLayout.astro"; + +// Default entry when visiting /gol/ (index). Change this to whichever +// entry you want to show by default. +const selectedEntryId = "gtavi"; +--- + + diff --git a/src/pages/gt/[id].astro b/src/pages/gt/[id].astro new file mode 100644 index 0000000..557774e --- /dev/null +++ b/src/pages/gt/[id].astro @@ -0,0 +1,24 @@ +--- +import GTLayout from "@/layouts/GTLayout.astro"; +import type { + GetStaticPaths, + InferGetStaticParamsType, + InferGetStaticPropsType, +} from "astro"; +import { getCollection } from "astro:content"; + +export const getStaticPaths: GetStaticPaths = async () => { + const entries = await getCollection("gt"); + + return entries.map((entry) => ({ + params: { id: entry.data.id }, + })); +}; + +type Props = InferGetStaticPropsType; +type Params = InferGetStaticParamsType; + +const { id } = Astro.params as Params; +--- + + diff --git a/src/pages/gt/index.astro b/src/pages/gt/index.astro new file mode 100644 index 0000000..dd90316 --- /dev/null +++ b/src/pages/gt/index.astro @@ -0,0 +1,9 @@ +--- +import GTLayout from "@/layouts/GTLayout.astro"; + +// Default entry when visiting /gol/ (index). Change this to whichever +// entry you want to show by default. +const selectedEntryId = "gta1"; +--- + + diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..8e0bb66 --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,25 @@ +--- +import BaseLayout from "@/layouts/BaseLayout.astro"; +import HomeCard from "@/components/ui/home/HomeCard.astro"; +import Weather from "@/components/widgets/Weather.astro"; + +import { getCollection } from "astro:content"; + +const entries = await getCollection("home"); +entries.sort((a, b) => a.data.title.localeCompare(b.data.title)); +--- + + + + +
    +
    + {entries.map((entry) => )} +
    +
    +
    diff --git a/src/pages/mol/[id].astro b/src/pages/mol/[id].astro new file mode 100644 index 0000000..37aa79e --- /dev/null +++ b/src/pages/mol/[id].astro @@ -0,0 +1,24 @@ +--- +import MOLLayout from "@/layouts/MOLLayout.astro"; +import type { + GetStaticPaths, + InferGetStaticParamsType, + InferGetStaticPropsType, +} from "astro"; +import { getCollection } from "astro:content"; + +export const getStaticPaths: GetStaticPaths = async () => { + const entries = await getCollection("mol"); + + return entries.map((entry) => ({ + params: { id: entry.data.id }, + })); +}; + +type Props = InferGetStaticPropsType; +type Params = InferGetStaticParamsType; + +const { id } = Astro.params as Params; +--- + + diff --git a/src/pages/mol/index.astro b/src/pages/mol/index.astro new file mode 100644 index 0000000..3728e41 --- /dev/null +++ b/src/pages/mol/index.astro @@ -0,0 +1,9 @@ +--- +import MOLLayout from "@/layouts/MOLLayout.astro"; + +// Default entry when visiting /gol/ (index). Change this to whichever +// entry you want to show by default. +const selectedEntryId = "scarface"; +--- + + diff --git a/src/pages/wfp/[tag].astro b/src/pages/wfp/[tag].astro new file mode 100644 index 0000000..e8b81b1 --- /dev/null +++ b/src/pages/wfp/[tag].astro @@ -0,0 +1,22 @@ +--- +import { getCollection } from "astro:content"; +import type { GetStaticPaths, InferGetStaticPropsType } from "astro"; + +export const getStaticPaths: GetStaticPaths = async () => { + const games = await getCollection("wfp-games"); + const tags = [...new Set(games.map((game) => game.data.tag))]; + + return tags.map((tag) => ({ + params: { tag }, + props: { tag }, + })); +}; + +import WFPLayout from "@/layouts/WFPLayout.astro"; + +type Props = InferGetStaticPropsType; + +const { tag } = Astro.props; +--- + + diff --git a/src/pages/wfp/index.astro b/src/pages/wfp/index.astro new file mode 100644 index 0000000..7965473 --- /dev/null +++ b/src/pages/wfp/index.astro @@ -0,0 +1,5 @@ +--- +import WFPLayout from "@/layouts/WFPLayout.astro"; +--- + + diff --git a/src/site.config.ts b/src/site.config.ts new file mode 100644 index 0000000..db602a1 --- /dev/null +++ b/src/site.config.ts @@ -0,0 +1,7 @@ +export const siteConfig = { + title: "FusionFix", + description: "FusionFix", + keywords: "fusionfix", + author: "ThirteenAG", + favicon: "/favicon.svg", +} \ No newline at end of file diff --git a/src/styles/shadcn-svelte.css b/src/styles/shadcn-svelte.css new file mode 100644 index 0000000..8f0f8a2 --- /dev/null +++ b/src/styles/shadcn-svelte.css @@ -0,0 +1,120 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/styles/starwind.css b/src/styles/starwind.css new file mode 100644 index 0000000..8e64367 --- /dev/null +++ b/src/styles/starwind.css @@ -0,0 +1,148 @@ +@import "tailwindcss"; +@import "tw-animate-css"; +@plugin "@tailwindcss/typography"; +@plugin "@tailwindcss/forms"; +@variant dark (&:where(.dark, .dark *)); + +@theme { + --animate-accordion-down: accordion-down 0.2s ease-out; + --animate-accordion-up: accordion-up 0.2s ease-out; + + @keyframes accordion-down { + from { + height: 0; + } + to { + height: var(--starwind-accordion-content-height); + } + } + + @keyframes accordion-up { + from { + height: var(--starwind-accordion-content-height); + } + to { + height: 0; + } + } +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-info: var(--info); + --color-info-foreground: var(--info-foreground); + --color-success: var(--success); + --color-success-foreground: var(--success-foreground); + --color-warning: var(--warning); + --color-warning-foreground: var(--warning-foreground); + --color-error: var(--error); + --color-error-foreground: var(--error-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-outline: var(--outline); + + --radius-xs: calc(var(--radius) - 0.375rem); + --radius-sm: calc(var(--radius) - 0.25rem); + --radius-md: calc(var(--radius) - 0.125rem); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 0.25rem); + --radius-2xl: calc(var(--radius) + 0.5rem); + --radius-3xl: calc(var(--radius) + 1rem); +} + +@layer base { + :root { + --background: var(--color-neutral-50); + --foreground: var(--color-neutral-950); + --card: var(--color-neutral-50); + --card-foreground: var(--color-neutral-950); + --popover: var(--color-neutral-50); + --popover-foreground: var(--color-neutral-950); + --primary: var(--color-blue-700); + --primary-foreground: var(--color-neutral-50); + --secondary: var(--color-fuchsia-700); + --secondary-foreground: var(--color-neutral-50); + --muted: var(--color-neutral-100); + --muted-foreground: var(--color-neutral-600); + --accent: var(--color-neutral-200); + --accent-foreground: var(--color-neutral-900); + --info: var(--color-sky-300); + --info-foreground: var(--color-sky-950); + --success: var(--color-green-300); + --success-foreground: var(--color-green-950); + --warning: var(--color-amber-300); + --warning-foreground: var(--color-amber-950); + --error: var(--color-red-700); + --error-foreground: var(--color-neutral-50); + --border: var(--color-neutral-200); + --input: var(--color-neutral-200); + --outline: var(--color-blue-600); + --radius: 0.5rem; + } + + .dark { + --background: var(--color-neutral-950); + --foreground: var(--color-neutral-50); + --card: var(--color-neutral-950); + --card-foreground: var(--color-neutral-50); + --popover: var(--color-neutral-950); + --popover-foreground: var(--color-neutral-50); + --primary: var(--color-blue-700); + --primary-foreground: var(--color-neutral-50); + --secondary: var(--color-fuchsia-300); + --secondary-foreground: var(--color-neutral-950); + --muted: var(--color-neutral-900); + --muted-foreground: var(--color-neutral-400); + --accent: var(--color-neutral-900); + --accent-foreground: var(--color-neutral-100); + --info: var(--color-sky-300); + --info-foreground: var(--color-sky-950); + --success: var(--color-green-300); + --success-foreground: var(--color-green-950); + --warning: var(--color-amber-300); + --warning-foreground: var(--color-amber-950); + --error: var(--color-red-800); + --error-foreground: var(--color-neutral-50); + --border: var(--color-neutral-800); + --input: var(--color-neutral-800); + --outline: var(--color-blue-600); + --radius: 0.5rem; + } + + * { + @apply border-border; + } + *:focus-visible { + @apply outline-outline; + } + html { + @apply bg-background text-foreground scheme-light dark:scheme-dark; + } + button { + @apply cursor-pointer; + } +} + +@layer utilities { + /* transition-colors but without outline-color transition property */ + .starwind-transition-colors { + transition-property: + color, background-color, border-color, text-decoration-color, fill, stroke, + --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--default-transition-timing-function); + transition-duration: var(--default-transition-duration); + } +} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..55b3a91 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,13 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChild = T extends { child?: any } ? Omit : T; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type WithoutChildren = T extends { children?: any } ? Omit : T; +export type WithoutChildrenOrChild = WithoutChildren>; +export type WithElementRef = T & { ref?: U | null }; diff --git a/starwind.config.json b/starwind.config.json new file mode 100644 index 0000000..47343f1 --- /dev/null +++ b/starwind.config.json @@ -0,0 +1,47 @@ +{ + "$schema": "https://starwind.dev/config-schema.json", + "tailwind": { + "css": "src/styles/starwind.css", + "baseColor": "neutral", + "cssVariables": true + }, + "componentDir": "src/components", + "components": [ + { + "name": "card", + "version": "1.1.0" + }, + { + "name": "tooltip", + "version": "1.1.2" + }, + { + "name": "button", + "version": "2.1.0" + }, + { + "name": "dropdown", + "version": "1.0.3" + }, + { + "name": "tabs", + "version": "1.2.0" + }, + { + "name": "alert-dialog", + "version": "1.0.0" + }, + { + "name": "dialog", + "version": "1.3.0" + }, + { + "name": "alert", + "version": "1.2.0" + }, + { + "name": "table", + "version": "1.1.0" + } + ] +} diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 0000000..e4f1268 --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,6 @@ +import { vitePreprocess } from '@astrojs/svelte'; + +export default { + + preprocess: vitePreprocess(), +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3b1f457 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "astro/tsconfigs/strict", + "include": [ + ".astro/types.d.ts", + "**/*" + ], + "exclude": [ + "dist" + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": [ + "src/*" + ] + }, + "jsx": "react-jsx", + "jsxImportSource": "react" + } +} \ No newline at end of file diff --git a/vendor/awesomplete b/vendor/awesomplete deleted file mode 160000 index 7bafd6b..0000000 --- a/vendor/awesomplete +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7bafd6bbe4d09d994ebdd628dd7568ed339eb4f8 diff --git a/vendor/baguetteBox.js b/vendor/baguetteBox.js deleted file mode 160000 index 3d5c048..0000000 --- a/vendor/baguetteBox.js +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3d5c0485441832c2e6f803500b6950db5e269678 diff --git a/vendor/bootstrap b/vendor/bootstrap deleted file mode 160000 index 90acd33..0000000 --- a/vendor/bootstrap +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 90acd33350e1356194a364595cb07b65f24bd611 diff --git a/vendor/bootstrap-social b/vendor/bootstrap-social deleted file mode 160000 index 8f51880..0000000 --- a/vendor/bootstrap-social +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f51880a761bc3d3dfdff748f83edaf038ebf18f diff --git a/vendor/github-buttons b/vendor/github-buttons deleted file mode 160000 index d01aa92..0000000 --- a/vendor/github-buttons +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d01aa92e47079619aaeee5191f6b4e5aa790e7c1 diff --git a/vendor/jquery b/vendor/jquery deleted file mode 160000 index 4c0e4be..0000000 --- a/vendor/jquery +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4c0e4becb8263bb5b3e6dadc448d8e7305ef8215 diff --git a/vendor/lazyload b/vendor/lazyload deleted file mode 160000 index c0f2392..0000000 --- a/vendor/lazyload +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c0f2392c765b5651e1a4adb77159d9a469c26627 diff --git a/wfp.html b/wfp.html deleted file mode 100644 index 0380283..0000000 --- a/wfp.html +++ /dev/null @@ -1,9057 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Widescreen Fixes Pack - Plugins to make or improve widescreen resolutions support in PC games, add more - features and fix bugs - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - -
    - - - -
    - - -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any - -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - SLUS-21590 -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract PCSX2 Fork - With Plugins.
    2. -
    3. Download and extract the archive to the root directory, where exe is located.
    4. -
    5. Change the aspect ratio or window size of the emulator.
    6. -
    7. Launch the game.
    8. -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any - -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - SLUS-21423 -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract PCSX2 Fork - With Plugins.
    2. -
    3. Download and extract the archive to the root directory, where exe is located.
    4. -
    5. Change the aspect ratio or window size of the emulator.
    6. -
    7. Launch the game.
    8. -
    -
      -
    • Proper aspect ratio for any resolution, hor+ FOV, - blur removal and skip intro
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - ULUS-10490 - -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -
      -
    • Alternative controls -
    • -
    • Adds an option to activate 3rd person camera. -
    • -
    • Adds an option to enable radio in emergency - vehicles. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v1.112.48699928 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
      -
    • Skip Intro and Skip Menu -
    • -
    • Adds an ability to quicksave anywhere by pressing - F5 -
    • -
    • Adds an ability to resize HUD
    • -
    • Adds an ability to fix bugged mouse camera movement -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v1.0 US -
    - - Installation: - -

    - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download and extract Widescreen Frontend Textures to the game directory - (optional). -
    4. -
    5. Check the download link below for all available features.
    6. -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v1.112.48699928 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
      -
    • Skip Intro and Skip Menu -
    • -
    • Adds an ability to quicksave anywhere by pressing - F5 -
    • -
    • Adds an ability to disable first person aim mode - for rifles -
    • -
    • Adds an ability to resize HUD
    • -
    • Adds an ability to fix bugged mouse camera movement -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    -
    -
    -
    -

    Supported exe version: - Any | v1.0 recommended -
    - - Installation: - -

    - - - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download and extract Widescreen Frontend Textures to the game directory - (optional). -
    4. -
    5. Check the download link below for all available features.
    6. -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v1.112.48699928 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
      -
    • Skip Intro and Skip Menu -
    • -
    • Adds an ability to quicksave anywhere by pressing - F5 -
    • -
    • Adds an ability to disable first person aim mode - for rifles -
    • -
    • Adds an ability to resize HUD
    • -
    • Adds an ability to fix bugged mouse camera movement -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    -
    -
    -
    -

    Supported exe version: - Any | v1.0 recommended -
    - - Installation: - -

    - - - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download and extract Widescreen Frontend Textures to the game directory - (optional). -
    4. -
    5. Check the download link below for all available features.
    6. -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v9.6 -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Quicksave button - F5 by default. Customizable via - ini. -
    • -
    • Camera zoom - Num+ and Num-. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the 'WINO' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • The display mode for graphic novels can be changed - by - pressing F2. Customizable via ini. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • The display mode for graphic novels can be changed - by - pressing F2. Customizable via ini. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -

    - This projects aims to add new features and fix some issues in Max Payne 3. Borderless Windowed, - various Gamepad Icons styles, Skip Intro, crash fixes and LightSyncRGB support. -

    -
    -
    -
    -
    - - Download - - -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    • For non-16:9 resolutions install - NFSMW HUD Adapter. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    • For non-16:9 resolutions install - NFSC HUD Adapter. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - v1.1 -
    - - Installation: - -

    - - - - - Aero - - - xan1242 - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes Xanvier's NFS ProStreet MultiFix. -
    • -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - Aero - - - xan1242 - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Includes improved gamepad support. -
    • -
    • More options available under [MISC] section of the - ini - file. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Includes - dgVoodoo to - fix - buffered shadows. -
    • -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Includes - dgVoodoo to - fix - buffered shadows. -
    • -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Includes d3d9 wrapper with ability to activate windowed mode. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Includes special d3d9 wrapper that prevents the game from crashing after certain events occur. - Instead of the crash, loadscreens - may disappear, minimap will be bugged, but you'll be able to save your progress and restart the - game. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - SLUS-21356 | SLES-53827 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract PCSX2 Fork - With Plugins.
    2. -
    3. Download and extract the archive to the root directory, where exe is located.
    4. -
    5. Change the aspect ratio or window size of the emulator.
    6. -
    7. Launch the game.
    8. -
    -

    Notes:

    - -
    -
    -
    -
    - - Download - - -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - US-094 v1.02 - -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where cxbx.exe is located.
    2. -
    3. Change window size through the emulator, disable maintain aspect ratio option.
    4. -
    5. Launch the game.
    6. -
    -

    Notes:

    - -
    -
    -
    -
    - - Download - - -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any - -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -

    Notes:

    -
      -
    • Dual analog patch, 60 fps, skip intro and improved - controls
    • -
    • Ultra-wide support (for PPSSPP v1.14 and above)
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Skip intro, skip systemdetection, disable DOF, disable black and white filter, enhanced sonar vision -
    • -
    • - Blacklist Control Scheme and more... -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    - - -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Collaboration with Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - A couple of post-processing effects could not be scaled properly, so they are disabled when Fix2D - is used. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the 'Game' folder, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
      -
    • Hide Mouse Cursor -
    • -
    • Door Skip -
    • -
    • Borderless windowed mode -
    • -
    • LightSync RGB -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
      -
    • Unlocked all resolutions -
    • -
    • Hide Mouse Cursor -
    • -
    • Door Skip -
    • -
    • Borderless windowed mode -
    • -
    • LightSync RGB -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
      -
    • LightSync RGB -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
      -
    • Fixes camera near clip, borderless windowed, - LightSync RGB -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any (v1.1.0 recommended) -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
      -
    • Fullscreen coop -
    • -
    • Skip Intro -
    • -
    • Borderless windowed mode -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Feb 5 2024 (steam latest) -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Ver.5.00 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
      -
    • Fullscreen coop -
    • -
    • Skip Intro -
    • -
    • Episode 4 stuck controls bug fix -
    • -
    • Borderless windowed mode -
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - RE3: GLE(E|P|J)08, RE2: GHA(E|P|J)08 - -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where - Dolphin 2412 - executable is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -

    Notes:

    -
      -
    • Door skip plugin, also speeds up loading by changing - emulator's speed during door sequences.
    • -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Use MatrixOptions.exe to select resolution and other - settings. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Only works with Gamer's Edition, Signature Edition - is - not compatible.
    • -
    • Includes d3d9 wrapper that limits frame rate to - 60fps - to avoid game-breaking bugs. You can set limit to 30fps via d3d9.ini.
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • The "Effect" option could not be scaled properly, so - it was disabled.
    • -
    • Press Alt+Enter to switch between fullscreen and - windowed - mode. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - REC -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - Created by Fire-Head - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download Manhunt Audio - Fix and extract to - scripts directory. -
    4. -
    5. Download and extract Widescreen Frontend Textures to the game directory - (optional). -
    6. -
    7. Check the download link below for all available features.
    8. -
    -

    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any | PS2 - SLUS-21106 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Added few options to customize fps, game speed and - mouse movement speed (untested, high framerate causes in-game issues). -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    • Download and extract the archive to the game directory, where the exe is located.
    • -
    -

    Notes:

    -
      -
    • Some rendering issues are visible in widescreen. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - Made by nestdimon - -
    -
    -
      -
    • Download and extract the archive to the game directory, where the exe is located.
    • -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    - Supported - exe version: - - Any* - -
    - - Installation: - -

    - - - - - - - - - - - Made by behar - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Patched rw_data.dll for mods is included.
    • -
    • Draw distance options available via ini.
    • -
    • FPS limiter available via ini.
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download - SilentPatchGF and extract to - the game directory. -
    4. -
    5. Check the download link below for all available features.
    6. -
    -

    Notes:

    - -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - - - Made by Aero - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Download - SilentPatchBully and - extract - to the game directory. -
    4. -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -

    deprecated

    -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located - (Binaries - or Binaries\Win32).
    2. -
    3. Overwrite original binkw32.dll or rename it to binkw32Hooked.dll.
    4. -
    -

    Notes:

    -
      -
    • FOV adjusted to match 4:3 image. -
    • -
    • Click on the image to the left for additional - comparison - screenshot. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • Decreasing the FOV multiplier is recommended to hide - rendering issues. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - Created by xan1242 - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any (x86/x64) -
    - - Installation: - -

    - - - - - - - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game root directory.
    2. -
    3. Download - Widescreen FMVs - - and extract to the root directory. -
    4. -
    5. Download - SilentPatchFarCry - and extract to the root directory. -
    6. -
    7. Check the download link below for all available features.
    8. -
    -

    Notes:

    -
      -
    • Works with both x86 and x64 versions of the game. -
    • -
    • Plugin also switches windowed mode to borderless - windowed. -
    • -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - Created by xan1242 - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
    -
    -
    -
    - - Download - - -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
    -
    -
    -

    Supported version: - Exe - Any | PS2 - SLES-51011 -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the game exe is - located.
    2. -
    -
      -
    • - Includes - dgVoodoo to - fix - some game issues. However, dgVoodoo introduces more issues like invisible cutscene borders and - crashes - after loading a level, so you might not want to use it. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
    -
    -
    -

    Supported version: - Exe - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the game exe is - located.
    2. -
    -
      -
    • - Includes - dgVoodoo to - fix - some game issues. However, dgVoodoo introduces more issues like invisible cutscene borders and - fading, - so you might not want to use it. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
    -
    - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - SLUS-21050 -
    - - Installation: - -

    - - - - - Made by Aero - -
    -
    -
      -
    1. Download and extract PCSX2 Fork - With Plugins.
    2. -
    3. Download and extract the archive to the root directory, where exe is located.
    4. -
    5. Change the aspect ratio or window size of the emulator, set FMV Aspect Ratio Override - option to Off.
    6. -
    7. Launch the game.
    8. -
    -
    -
    -
    -
    - - Download - - -
    -
    -
    - -
    -
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -

    Notes:

    -
      -
    • - Unlocks delisted DLC -
    • -
    • - Ultrawide support -
    • -
    • - Extraction, Hunter and Ghost game modes modifications -
    • -
    • - Skip intro, disable negative mouse acceleration and more... -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. - -
    -
      -
    • Tiny Skip Intro and Legal Screens Plugin -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - Any -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    3. Check the download link below for all available features.
    4. -
    -
      -
    • FOV Fix (Hor+ for all aspect ratios) -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any (tested on UCUS-98615) - -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -
      -
    • Skip Intro. -
    • -
    • Dual Analog support. -
    • -
    • Improved loading speed. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - UCUS-98645 - -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -
      -
    • Skip Intro. -
    • -
    • Dual Analog support. -
    • -
    • Improved loading speed. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any (tested on UCUS-98716) - -
    - - Installation: - -

    - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -
      -
    • Skip Intro. -
    • -
    • Dual Analog support. -
    • -
    • Improved loading speed. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    -
    -
    -
      -
    1. Download and install SilentPatch.
    2. -
    3. Download and extract the archive to the game directory, where the exe is located.
    4. -
    -

    - Proper camera movement with mouse, gamepad support (via Xidi), modern gamepad controls - (Brake/Accelerate and Aim/Shoot with Triggers). -

    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported version: - - Any (tested on ULUS-10213) - -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the directory, where PPSSPP's memstick folder is located. -
    2. -
    3. Check the download link below for all available features.
    4. -
    5. Launch the game.
    6. -
    -
      -
    • Skip Intro. -
    • -
    • Dual Analog Patch, 60 fps. -
    • -
    • Adds an option to fix incorrect aspect ratio. -
    • -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    Supported exe version: - Any -
    - - Installation: - -

    - - - - - - -
    -
    -
      -
    1. Download and extract the archive to the game directory, where the exe is located.
    2. -
    -
    -
    -
    -
    - - Download - - -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    -
    -

    - Project2DFX -

    -
    -
    -
    -
    -

    - - Project2DFX is a set of plugins for GTA III, Vice City, San Andreas, Liberty City Stories, Vice - City - Stories and GTA IV: The Complete Edition which adds LOD corona effect to a game map, making - LOD-world - look a lot better. - It also includes an open source Limit Adjuster to enhance and improve certain game limits. - -

    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -

    - - Enhanced implementation of xbox rain droplets from SkyGFX for other games. Various ini settings - allow to customize the appearance and can be edited while in game. - -

    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - -
    - -
    -
    - - - -
    -
      -
    • - « -
    • -
    • - 1 -
    • -
    • - 2 -
    • -
    • - 3 -
    • -
    • - 4 -
    • -
    • - 5 -
    • -
    • - 6 -
    • -
    • - 7 -
    • -
    • - 8 -
    • -
    • - 9 -
    • -
    • - 10 -
    • - -
    • - » -
    • -
    -
    - - -
    - - - -
    - - - -
    - -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/widescreen_fixes_pack.html b/widescreen_fixes_pack.html deleted file mode 100644 index 584ea5d..0000000 --- a/widescreen_fixes_pack.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - ThirteenAG's GitHub page - - - If you are not redirected automatically, follow the link to my page - - \ No newline at end of file