[
  {
    "path": ".browserslistrc",
    "content": "# Browsers that we support\n\nlast 4 version\n>0.3%\nnot ie <= 8\nnot dead"
  },
  {
    "path": ".eslintrc.cjs",
    "content": "module.exports = {\n\troot: true,\n\textends: ['eslint:recommended', 'prettier'],\n\tplugins: ['svelte3'],\n\toverrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],\n\tparserOptions: {\n\t\tsourceType: 'module',\n\t\tecmaVersion: 2021\n\t},\n\tenv: {\n\t\tbrowser: true,\n\t\tes2017: true,\n\t\tnode: true\n\t}\n};\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: #\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: mantan21\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: ['https://trakteer.id/mantan21', 'https://saweria.co/AguzzTN54']\n"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\n#\n# ******** NOTE ********\n# We have attempted to detect the languages in your repository. Please check\n# the `language` matrix defined below to confirm you have the correct set of\n# supported CodeQL languages.\n#\nname: \"CodeQL\"\n\non:\n  push:\n    branches: [ \"master\" ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ \"master\" ]\n  schedule:\n    - cron: '39 11 * * 0'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ 'javascript' ]\n        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]\n        # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v3\n\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v2\n      with:\n        languages: ${{ matrix.language }}\n        # If you wish to specify custom queries, you can do so here or in a config file.\n        # By default, queries listed here will override any specified in a config file.\n        # Prefix the list here with \"+\" to use these queries and those in the config file.\n        \n        # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs\n        # queries: security-extended,security-and-quality\n\n        \n    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).\n    # If this step fails, then you should remove it and run the build manually (see below)\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v2\n\n    # ℹ️ Command-line programs to run using the OS shell.\n    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun\n\n    #   If the Autobuild fails above, remove it and uncomment the following three lines. \n    #   modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.\n\n    # - run: |\n    #   echo \"Run, Build Application using script\"\n    #   ./location_of_script_within_repo/buildscript.sh\n\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v2\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n/build\n/dist\n/.svelte-kit\n/package\n/static/g\n\n.vercel_build_output\n.vercel\n.env\n\nREADME.html\n\nCNAME\n\n### Node ###\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\nads.txt"
  },
  {
    "path": ".prettierrc",
    "content": "{\n\t\"useTabs\": true,\n\t\"singleQuote\": true,\n\t\"trailingComma\": \"none\",\n\t\"printWidth\": 100,\n\t\"endOfLine\": \"crlf\"\n}\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 WishSImulator.App\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Realistic Genshin Impact Wish Simulator\n\n![License](https://badgen.net/github/license/Mantan21/Genshin-Impact-Wish-Simulator?icon:github) ![Repo Size](https://img.shields.io/github/repo-size/Mantan21/Genshin-Impact-Wish-Simulator?color=fa0) [![CodeFactor](https://www.codefactor.io/repository/github/mantan21/genshin-impact-wish-simulator/badge)](https://www.codefactor.io/repository/github/Mantan21/genshin-impact-wish-simulator) ![Status](https://badgen.net/github/checks/Mantan21/Genshin-Impact-Wish-Simulator) ![Code Standard](https://badgen.net/badge/code%20style/standard/f2a) [![Trakteer](https://badgen.net/badge/Trakteer/Mantan21/BE1E2D)](https://trakteer.id/mantan21)\n\nI'm not an expert, and I may not write the cleanest code, but I've tried to create this Genshin Impact Wish Simulator. I believe it's the most realistic one for the web version. However, I still need your feedback to improve the wishing experience. If you enjoy this simulator, please consider giving a star to this repository.\n\n## Screenshots\n\n#### Main Banner\n\n![Main Banner](static/meta-picture.jpg)\n\n#### Layout on Mobile Version\n\n![Weapon Banner](screenshot/mobile-weapon.jpg)\n\n#### Epitomized Path\n\n![Epitomized Path](screenshot/epitomized-path.jpg)\n\n#### Inventory\n\n![Weapon Banner](screenshot/inventory.jpg)\n\n#### Switch banner\n\n![Weapon Banner](screenshot/switch-banner.jpg)\n\n#### Shop\n\n![Buying Welkin](https://user-images.githubusercontent.com/13815468/212980583-7539f527-c6bb-4005-8322-8996b59937fe.gif)\n\n> For more preview, please visit the live version at [https://wishsimulator.app](https://wishsimulator.app)\n\n---\n\n## Features\n\n1. **All banner types are available** ( Beginner, Standard, Event and Weapon Banner )\n2. Dual or Single Character Event Banner.\n3. **Epitomized Path System** for Weapon Banner start from version 2.0 - latest.\n4. **Custom Banner Maker**, Users can create their own banners and share them to other travelers over the internet\n5. The Pity System is designed to mimic the mechanics of the real game closely.\n6. **The most complete set of banners** among all existing simulators. Users can switch and engage in gacha on every banner, starting from version 1.0 to the latest.\n7. The Gacha Milestone Bonus, Starglitter, and Stardust can be exchanged for Acquaint or Intertwined Fate at the Shop section.\n8. **Shop** serves Gacha currencies, outfits, and Welkin.\n9. Users can purchase outfits and the Blessing of the Welkin Moon.\n10. Pity is shared with the previous banner, allowing users to continuously engage in gacha on different patches without resetting the pity counter.\n11. **Wish Details** for each banner.\n12. Different banner type has different **Gacha History**\n13. **Inventory** to show all items ( Weapons, Characters and Outfits ) that already owned by gacha or purchasement\n14. Screenshot and download wish result as Image localy.\n15. Pity Counter, Users can track their current information and history of their pity\n16. Site Localization: I hope this Wish Simulator can reach more people, even those who aren't English speakers.\n17. Mobile Friendly, responsive layout both landscape and portrait orientation.\n18. LLink generator is available if users want to share their gacha results on the internet.\n19. All user data will be saved to local storage and indexedDB.\n\n## Pity System\n\nI don't know how HoyoVerse's algorithm is, so I tried to create mine as realistic as possible with the following points based on in-game wish details.\n\n> In order to get the same experience with the game when doing gacha, I tried to use the following formula for determining the gacha rates according to the current pity\n>\n> `baseRate + ((CurrentPity - HardPity) * additionalRate)`\n>\n> To get the number of `additionalRate`, I calculated `100% - baseRate` and divide it by the difference between `HardPity` to `MaxPity`.\n> [Check here](https://github.com/Mantan21/Genshin-Impact-Wish-Simulator/blob/master/src/lib/helpers/gacha/probabilities.js#L4-L19) to see how I implemented it as code\n\nBased on the formula above, it can be concluded that the probability table is as follows:\n\n1. Probability for 4★ item on Character Event Wish\n\n   - 4★ item guaranteed at `10` roll and promoted 4★ item guaranteed at `20` roll.\n   - Base rate to get 4★ item is `5.1%`, guaranteed to get 4★ item at pity `10`\n\n   | **Pity** |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |   9    | ≥10  |\n   | -------: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :----: | :--: |\n   | **Rate** | 5.1% | 5.1% | 5.1% | 5.1% | 5.1% | 5.1% | 5.1% | 5.1% | 52.55% | 100% |\n\n2. Probability for 4★ item on Weapon Event Wish\n\n   - 4★ item guaranteed at `10` roll and promoted 4★ item guaranteed at `20` roll.\n   - Base rate to get 4★ item is `6.6%`, guaranteed to get 4★ item at pity `10`\n\n   | **Pity** |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |   9   | ≥10  |\n   | -------: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :---: | :--: |\n   | **Rate** | 6.0% | 6.0% | 6.0% | 6.0% | 6.0% | 6.0% | 6.0% | 6.0% | 53.0% | 100% |\n\n3. Weapon Wish Probability\n\n   - 5★ Item guaranteed at `80` roll and promoted 5★ item guaranteed at `160` roll.\n   - Probability to get 5★ item is `0.7%`, the rate starts to increase at pity 63 and then guaranteed at pity `80`.\n\n   | **Pity** | ≤62  |  63   |   64   |   65   |   66   |   67   |   68   |   69   |   70   |   71   |   72   |   73   |  74   |   75   |   76   |   77   |   78   |   79   | ≥80  |\n   | -------: | :--: | :---: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :---: | :----: | :----: | :----: | :----: | :----: | :--: |\n   | **Rate** | 0.7% | 6.21% | 11.77% | 17.25% | 22.76% | 28.28% | 33.80% | 39.31% | 44.83% | 50.35% | 55.86% | 61.38% | 66.9% | 72.41% | 77.93% | 83.45% | 88.96% | 94.48% | 100% |\n\n4. Character Event and Standard Wish Probability\n\n   - 5★ Item guaranteed at `90` roll and promoted 5★ item guaranteed at `180` roll.\n   - Probability to get 5★ item is `0.6%`, the rate starts to increase at pity 74 and then guaranteed at pity `90`.\n\n   | **Pity** | ≤73  |  74   |  75   |   76   |   77   |   78   |   79   |   80   |   81   |   82   |   83   |   84   |   85   |   86   |   87   |   88   |   89   | ≥90  |\n   | -------: | :--: | :---: | :---: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :--: |\n   | **Rate** | 0.6% | 6.45% | 12.3% | 18.14% | 23.99% | 29.83% | 35.68% | 41.53% | 47.38% | 53.22% | 59.07% | 64.92% | 70.76% | 76.61% | 82.46% | 88.30% | 94.15% | 100% |\n\n5. When you guaranteed for *5 and *4 item at the same time, your next pull priority is *5 item and *4 item will appear next at pity 11. For example: On Character Event Banner, you doesn't get *5 item until pity 89 and your *4 pity is 9, So your next pull will looks like screenshot below.\n\n   ![double guaranteed](screenshot/double-guaranteed.png)\n\n## Development\n\nThis app build with [Svelte-Kit](https://kit.svelte.dev/) based on Javascript programming language.\n\nOnce you've cloned this project, install all dependencies with `npm install` (or `pnpm install` or `yarn`). Once all dependencies already installed, then you can start a development server or build for production:\n\n```bash\nnpm run dev\n\n# or start the server and open the app in a new browser tab\nnpm run dev -- --open\n```\n\n### How to Update new banner\n\n- The guide to Add New Banner are moved to Wiki, [Read Here](https://github.com/Mantan21/Genshin-Impact-Wish-Simulator/wiki/How-to-Add-more-Banner)\n\n## Building\n\nBefore creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment, then run the command below. As default, this project use [Vercel Adapter](https://github.com/sveltejs/kit/tree/master/packages/adapter-vercel) and can be deployed to [Vercel.com](https://vercel.com)\n\n```bash\nnpm run build\n```\n\n## Deployment\n\nBefore Deploy to online server, please setup the environment variables by renaming file `.env.example` to `.env` and change the variables if needed.\n\n\\*\\* You can still deploy the app without even set the environment variables\n\n---\n\n## Contributing\n\nI'm welcome to all contributors! Feel free to [open new Issue](https://github.com/Mantan21/Genshin-Impact-Wish-Simulator/issues/new) if you find any problem or just want to give any suggestions.\n\n### Thank You to all Contributors\n\n[![Contributor](https://contrib.rocks/image?repo=Mantan21/Genshin-Impact-Wish-Simulator)](https://github.com/Mantan21/Genshin-Impact-Wish-Simulator/graphs/contributors)\n\n> **Notes :**\n>\n> The data and assets used for this Project are taken from [Hoyo Wiki](https://wiki.hoyolab.com/), [Genshin Fandom Wiki](https://genshin-impact.fandom.com/wiki/Genshin_Impact_Wiki), [Honey Impact](https://genshin.honeyhunterworld.com/) and recorded from the game itself with several modification. <br/> **Important thing**: This App is not affiliated with Hoyoverse, all assets used for this application belongs to [Hoyoverse](http://hoyoverse.com/), so if you want to use assets from this repository, please credit them too.\n"
  },
  {
    "path": "jsconfig.json",
    "content": "{\n\t\"compilerOptions\": {\n\t\t\"baseUrl\": \".\",\n\t\t\"paths\": {\n\t\t\t\"$lib\": [\"src/lib\"],\n\t\t\t\"$lib/*\": [\"src/lib/*\"],\n\t\t\t\"$post\": [\"src/post\"],\n\t\t\t\"$post/*\": [\"src/post/*\"]\n\t\t},\n\t\t\"preserveValueImports\": false,\n\t\t\"allowJs\": true,\n\t\t\"esModuleInterop\": true,\n\t\t\"forceConsistentCasingInFileNames\": true,\n\t\t\"resolveJsonModule\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"sourceMap\": true,\n\t\t\"strict\": true,\n\t\t\"ignoreDeprecations\": \"5.0\"\n\t},\n\t\"include\": [\"src/**/*.d.ts\", \"src/**/*.js\", \"src/**/*.svelte\"],\n\t\"extends\": \"./.svelte-kit/tsconfig.json\"\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n\t\"name\": \"wishsimulator.app\",\n\t\"description\": \"Realistic Genshin Impact Wish Simulator, Unlimited Gacha, 100% running on browser\",\n\t\"version\": \"2.0.0\",\n\t\"author\": {\n\t\t\"name\": \"AguzzTN54\",\n\t\t\"email\": \"admin@wishsimulator.app\",\n\t\t\"url\": \"https://github.com/AguzzTN54\"\n\t},\n\t\"repository\": {\n\t\t\"url\": \"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator\"\n\t},\n\t\"license\": \"MIT\",\n\t\"homepage\": \"https://wishsimulator.app\",\n\t\"scripts\": {\n\t\t\"dev\": \"vite dev\",\n\t\t\"build\": \"vite build\",\n\t\t\"preview\": \"vite preview\",\n\t\t\"check\": \"svelte-kit sync && svelte-check --tsconfig ./jsconfig.json\",\n\t\t\"check:watch\": \"svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch\",\n\t\t\"lint\": \"prettier --plugin-search-dir . --check . && eslint .\",\n\t\t\"format\": \"prettier --plugin-search-dir . --write .\"\n\t},\n\t\"type\": \"module\",\n\t\"devDependencies\": {\n\t\t\"@sveltejs/adapter-vercel\": \"^1.0.0-next.66\",\n\t\t\"@sveltejs/kit\": \"^1.0.0-next.551\",\n\t\t\"autoprefixer\": \"^10.4.8\",\n\t\t\"dotenv\": \"^16.3.1\",\n\t\t\"eslint\": \"^8.16.0\",\n\t\t\"eslint-config-prettier\": \"^8.3.0\",\n\t\t\"eslint-plugin-svelte3\": \"^4.0.0\",\n\t\t\"postcss\": \"^8.4.16\",\n\t\t\"postcss-load-config\": \"^4.0.1\",\n\t\t\"postcss-nested\": \"^5.0.6\",\n\t\t\"prettier\": \"^2.6.2\",\n\t\t\"prettier-plugin-svelte\": \"^2.7.0\",\n\t\t\"svelte\": \"^3.47.0\",\n\t\t\"svelte-check\": \"^2.9.2\",\n\t\t\"svelte-preprocess\": \"^4.10.6\",\n\t\t\"uuid\": \"^9.0.0\",\n\t\t\"vite\": \"^3.1.8\",\n\t\t\"vite-imagetools\": \"^6.2.3\",\n\t\t\"vite-plugin-markdown\": \"^2.1.0\",\n\t\t\"vite-plugin-pwa\": \"^0.13.1\",\n\t\t\"workbox-cacheable-response\": \"^6.5.4\",\n\t\t\"workbox-core\": \"^6.5.4\",\n\t\t\"workbox-precaching\": \"^6.5.4\",\n\t\t\"workbox-routing\": \"^6.5.4\"\n\t},\n\t\"dependencies\": {\n\t\t\"file-saver\": \"^2.0.5\",\n\t\t\"firebase\": \"^9.19.1\",\n\t\t\"hotkeys-js\": \"^3.12.0\",\n\t\t\"howler\": \"^2.2.3\",\n\t\t\"html-to-image\": \"^1.8.5\",\n\t\t\"idb\": \"^6.1.2\",\n\t\t\"overlayscrollbars\": \"^1.13.1\",\n\t\t\"svelte-i18n\": \"^3.4.0\",\n\t\t\"zoomist\": \"^2.0.10\"\n\t}\n}\n"
  },
  {
    "path": "postcss.config.js",
    "content": "import postcssNested from 'postcss-nested';\nimport autoprefixer from 'autoprefixer';\n\nexport default {\n\tplugins: [postcssNested, autoprefixer]\n};\n"
  },
  {
    "path": "src/app.css",
    "content": ":root {\n\tletter-spacing: -0.02rem;\n\t--gi-global-font: 'GI_Global_Web', 'GI_JA_Web', 'GI_TH_Web', 'GI_TH_Web', 'GI_ZH_Web', Arial,\n\t\t-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',\n\t\t'Helvetica Neue', sans-serif;\n\t--gi-ja-font: 'GI_JA_Web', Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n\t\tUbuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n\t--gi-ko-font: 'GI_KO_Web', Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n\t\tUbuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n\t--gi-th-font: 'GI_TH_Web', Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n\t\tUbuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n\t--gi-zh-font: 'GI_ZH_Web', Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n\t\tUbuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n\t--secondary-color: #4f6d95;\n\t--tertiary-color: #f7f3d8;\n\t--text-color: #444444;\n}\n\n* {\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n::-webkit-scrollbar {\n\twidth: 5px;\n}\n::-webkit-scrollbar-thumb {\n\tbackground-color: rgba(210, 198, 156, 0.5);\n\tborder-radius: 5px;\n\ttransition: all 0.2s;\n}\n::-webkit-scrollbar-thumb:hover {\n\tbackground-color: rgba(210, 198, 156, 1);\n}\n\nbody {\n\toverflow: hidden;\n\tmargin: 0;\n}\n\nbody,\nbutton:hover,\ninput,\nlabel,\na:hover {\n\tuser-select: none;\n\t-moz-user-select: -moz-none;\n\t-khtml-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\t-webkit-user-drag: none;\n\tcursor: url(data:image/png;base64,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),\n\t\tauto;\n}\n\n.icon-gradient {\n\tbackground-clip: text;\n\ttext-fill-color: transparent;\n\t-webkit-background-clip: text;\n\t-webkit-text-fill-color: transparent;\n}\n\n.icon-gradient.dendro {\n\tbackground-image: linear-gradient(to right, #a6d138 30%, #aaef3a 45%, #a6d138 75%);\n}\n.icon-gradient.hydro {\n\tbackground-image: linear-gradient(to right, #06bbff, #06bbff, #10e2ff, #06bbff, #06bbff);\n}\n.icon-gradient.geo {\n\tbackground-image: linear-gradient(to right, #f9aa02, #f9aa02, #fcd260, #f9aa02, #f9aa02);\n}\n.icon-gradient.pyro {\n\tbackground-image: linear-gradient(to right, #fe6606, #fe6606, #fea76b, #fe6606, #fe6606);\n}\n.icon-gradient.anemo {\n\tbackground-image: linear-gradient(to right, #32d9a1, #32d9a1, #aef2cd, #32d9a1, #32d9a1);\n}\n.icon-gradient.electro {\n\tbackground-image: linear-gradient(to right, #ca82fc, #ca82fc, #deb5fe, #ca82fc, #ca82fc);\n}\n.icon-gradient.cryo {\n\tbackground-image: linear-gradient(to right, #7cfeff, #7cfeff, #c6fffd, #7cfeff, #7cfeff);\n}\n\n.filter-drop.dendro {\n\tfilter: drop-shadow(0 0 6px rgba(114, 255, 6, 0.6));\n}\n.filter-drop.hydro {\n\tfilter: drop-shadow(0 0 6px rgba(6, 187, 255, 0.6));\n}\n.filter-drop.geo {\n\tfilter: drop-shadow(0 0 6px rgba(249, 170, 2, 0.6));\n}\n.filter-drop.pyro {\n\tfilter: drop-shadow(0 0 6px rgba(254, 102, 6, 0.6));\n}\n.filter-drop.anemo {\n\tfilter: drop-shadow(0 0 6px rgba(50, 217, 161, 0.6));\n}\n.filter-drop.electro {\n\tfilter: drop-shadow(0 0 6px rgba(202, 130, 252, 0.6));\n}\n.filter-drop.cryo {\n\tfilter: drop-shadow(0 0 6px rgba(124, 254, 255, 0.6));\n}\n\n.dendro-flat {\n\tcolor: #64ad15;\n}\n.hydro-flat {\n\tcolor: #3f8ed1;\n}\n.geo-flat {\n\tcolor: #cb8f46;\n}\n.pyro-flat {\n\tcolor: #ee6c4c;\n}\n.anemo-flat {\n\tcolor: #359697;\n}\n.electro-flat {\n\tcolor: #7d67c5;\n}\n.cryo-flat {\n\tcolor: #46c2d8;\n}\n.wanderlust-flat {\n\tcolor: #757acdff;\n}\n.epitome-flat {\n\tcolor: #ef7c1aff;\n}\n\n.bg-dendro {\n\tbackground-color: #64ad15;\n}\n.bg-hydro {\n\tbackground-color: #3d6db5;\n}\n.bg-geo {\n\tbackground-color: #b88f47;\n}\n.bg-pyro {\n\tbackground-color: #c45b31;\n}\n.bg-anemo {\n\tbackground-color: #359697;\n}\n.bg-electro {\n\tbackground-color: #8246ba;\n}\n.bg-cryo {\n\tbackground-color: #5cd2e3;\n}\n.bg-wanderlust {\n\tbackground-color: #757acdff;\n}\n.bg-epitome {\n\tbackground-color: #ef7c1aff;\n}\n\n.card-stroke {\n\t/* prettier-ignore */\n\ttext-shadow:\n\t-0.03rem -0.03rem 0 #f7f3eb,\n\t 0   \t\t -0.03rem 0 #f7f3eb,\n\t 0.03rem -0.03rem 0 #f7f3eb,\n\t 0.03rem  0 \t\t  0 #f7f3eb,\n\t 0.03rem  0.03rem 0 #f7f3eb,\n\t 0    \t\t0.03rem 0 #f7f3eb,\n\t-0.03rem  0.03rem 0 #f7f3eb,\n\t-0.03rem  0\t\t    0 #f7f3eb;\n}\n\n#svelte {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\nh1,\nh2,\np {\n\tfont-weight: 400;\n}\n\np {\n\tline-height: 1.5;\n}\n\na {\n\tcolor: var(--accent-color);\n\ttext-decoration: none;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\nh1 {\n\tfont-size: 2rem;\n\ttext-align: center;\n}\n\nh2 {\n\tfont-size: 1rem;\n}\n\npre {\n\tfont-size: 16px;\n\tfont-family: var(--font-mono);\n\tbackground-color: rgba(255, 255, 255, 0.45);\n\tborder-radius: 3px;\n\tbox-shadow: 2px 2px 6px rgb(255 255 255 / 25%);\n\tpadding: 0.5em;\n\toverflow-x: auto;\n\tcolor: var(--text-color);\n}\n\nimg {\n\tobject-fit: cover;\n\t-webkit-user-drag: none;\n\t-khtml-user-drag: none;\n\t-moz-user-drag: none;\n\t-o-user-drag: none;\n\tuser-drag: none;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n\t-webkit-appearance: none;\n\tmargin: 0;\n}\ninput[type='number'] {\n\t-moz-appearance: textfield;\n}\n\ninput:focus {\n\tborder: none;\n\toutline: none;\n}\n\ninput,\nbutton {\n\tfont-size: inherit;\n\tfont-family: inherit;\n\tletter-spacing: -0.03rem;\n}\n\nbutton:focus:not(:focus-visible) {\n\toutline: none;\n}\n\nbutton {\n\tbackground-color: transparent;\n\tborder: 0;\n\toutline: 0;\n\tfont-size: 1rem;\n}\n\ninput.wishinput {\n\theight: 2.3rem;\n\tfont-size: 90%;\n\twidth: 100%;\n\tborder-radius: 10rem;\n\toutline: none;\n\tpadding: 2% 6%;\n\tfont-family: var(--gi-global-font);\n\tcolor: #3b4255;\n\tborder: 0;\n\ttransition: 0.2s;\n}\ninput.wishinput:focus,\ninput.wishinput:hover {\n\tborder-color: #fff;\n\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n}\n:global(.mobile) input.wishinput {\n\theight: 2.1rem;\n}\n\ninput.wishinput.error {\n\tborder: #ee6c4c 2px solid;\n}\ninput.wishinput.error:focus,\ninput.wishinput.error {\n\tbox-shadow: rgba(222, 47, 34, 0.7) 0px 0px 7px 5px;\n}\n\nh1 {\n\tfont-size: 1.3rem;\n}\n\n.mobile,\n.mobile button {\n\tfont-size: 0.85rem;\n}\n\n.gi-close {\n\tline-height: 0;\n}\n\n.close {\n\tdisplay: inline-flex;\n\tjustify-content: center;\n\talign-items: center;\n\taspect-ratio: 1/1;\n\twidth: 35px;\n\theight: 35px;\n\tcolor: rgba(0, 0, 0, 0.7);\n\tbackground-color: #e0ddd4;\n\tborder: 3.5px solid #abbcc6;\n\tpadding: 0;\n\tline-height: 0;\n\toverflow: hidden;\n\tborder-radius: 50px;\n\ttransition: all 0.2s;\n}\n\n.close:active {\n\ttransform: scale(0.9);\n\tcolor: #fff;\n\tborder-color: darkgray !important;\n}\n\n.close:hover {\n\tborder-color: #fff;\n\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n}\n\n.mobile .close {\n\twidth: 2rem;\n\theight: 2rem;\n}\n\n/* Select Option */\n.selector {\n\tcolor: #3a4156;\n\tmargin: 0 0.5rem;\n\tdisplay: inline-block;\n\twidth: 240px;\n\tmax-width: 40%;\n\tposition: relative;\n\ttext-transform: capitalize;\n\tfont-size: 0.85rem;\n}\n\n.selected-option {\n\tbackground-color: #ede5d8;\n\tpadding: 0.45rem 2rem 0.45rem 1.5rem;\n\tborder-radius: 10rem;\n\ttransition: all 0.2s;\n\ttext-align: left;\n}\n\n.selected-option i {\n\tdisplay: inline-block;\n\tposition: absolute;\n\tright: 1rem;\n}\n\n.sort-button:active,\n.selected-option:active {\n\tcolor: #fff;\n\tborder-color: darkgray;\n}\n\n.sort-button:hover,\n.selected-option:hover {\n\tborder-color: #fff;\n\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n}\n\n.option-list {\n\tposition: absolute;\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n\tbackground-color: #565a64;\n\tborder-radius: 1rem;\n\tpadding: 1% 1.5%;\n\tz-index: +10;\n\toverflow: hidden;\n}\n\n.option-list.above {\n\ttop: -10%;\n\ttransform: translateY(-100%);\n}\n\n.option-list.below {\n\ttop: 110%;\n}\n\n.option-list button {\n\tposition: relative;\n\tpadding: 0.85rem 1rem;\n\tmargin: 0.5% 0;\n\ttext-decoration: none;\n\tcolor: #eee;\n\ttransition: all 0.2s;\n\ttext-align: left;\n}\n\n.option-list button.selected,\n.option-list button:hover {\n\tbackground-color: #717887;\n\tborder-radius: 2rem;\n}\n\n.option-list button.selected::after {\n\tcontent: '✔';\n\tcolor: #eee;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 50%;\n\tright: 8%;\n\tfont-size: 170%;\n\tline-height: 0;\n\ttransform: translateY(-50%);\n}\n\n/* Button */\n.btn {\n\tdisplay: inline-flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 1.8rem;\n\theight: 1.8rem;\n\tline-height: 0rem;\n\tcolor: #3a4156;\n\tbackground-color: #ede5d8;\n\tfont-size: 1rem;\n\tborder-radius: 100%;\n\ttransition: 0.2s;\n}\n\n.btn:active {\n\tcolor: #fff;\n\tborder-color: darkgray;\n}\n\n.btn:hover {\n\tborder-color: #fff;\n\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n}\n\n.gi-exchange {\n\ttransform: rotate(90deg);\n}\n\n.btn:active {\n\ttransform: scale(0.9);\n}\n@media screen and (max-width: 900px) {\n\tbody,\n\thtml {\n\t\tfont-size: 0.8rem;\n\t}\n\n\t.close {\n\t\twidth: 2.5rem;\n\t\theight: 2.5rem;\n\t\tmargin: 3px;\n\t}\n}\n\n@media screen and (max-width: 700px) {\n\tinput.wishinput {\n\t\tfont-size: 150%;\n\t}\n}\n\n@media screen and (max-width: 400px) {\n\tbody,\n\thtml {\n\t\tfont-size: 0.7rem;\n\t}\n\th1 {\n\t\tfont-size: 1.5rem;\n\t}\n}\n"
  },
  {
    "path": "src/app.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta\n\t\t\tname=\"viewport\"\n\t\t\tcontent=\"width=device-width,initial-scale=1,shrink-to-fit=no,user-scalable=no\"\n\t\t/>\n\t\t<meta name=\"a.validate.02\" content=\"gc8Hcbkq-w-3WEWF_q38cMwWsDdHhE5icT8F\" />\n\t\t<meta name=\"google-site-verification\" content=\"zn73VlG6JLf_oG3P8jQVbKGlDkQ9s6JcR6qZLzT2tVI\" />\n\t\t<meta name=\"google-adsense-account\" content=\"ca-pub-1874822310102113\" />\n\n\t\t<meta property=\"og:type\" content=\"profile\" />\n\t\t<meta property=\"profile:username\" content=\"AguzzTN54\" />\n\t\t<meta property=\"twitter:card\" content=\"summary_large_image\" />\n\t\t<meta name=\"author\" content=\"AguzzTN54\" />\n\t\t<meta name=\"robots\" content=\"index, follow\" />\n\n\t\t<meta name=\"language\" content=\"English\" />\n\t\t<meta property=\"og:locale\" content=\"en_US\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"id_ID\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"it_IT\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"ja_JP\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"pt_BR\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"ru_RU\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"th_TH\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"vi_VN\" />\n\t\t<meta property=\"og:locale:alternate\" content=\"zh_CN\" />\n\t\t<title>Genshin Impact Wish Simulator</title>\n\n\t\t<link rel=\"stylesheet\" href=\"/icons.css\" />\n\t\t<link rel=\"icon\" href=\"/favicon.ico\" />\n\t\t<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\" />\n\t\t<link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#5bbad5\" />\n\t\t<meta name=\"msapplication-TileColor\" content=\"#2d89ef\" />\n\t\t<meta name=\"theme-color\" content=\"#ffffff\" />\n\n\t\t%sveltekit.head%\n\n\t\t<script async src=\"https://www.googletagmanager.com/gtag/js?id=UA-211756322-1\"></script>\n\t\t<script>\n\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\tfunction gtag() {\n\t\t\t\tdataLayer.push(arguments);\n\t\t\t}\n\t\t\tgtag('js', new Date());\n\t\t\tgtag('config', 'UA-211756322-1');\n\t\t</script>\n\t</head>\n\t<body>\n\t\t<div id=\"svelte\" class=\"svelte\">%sveltekit.body%</div>\n\t</body>\n</html>\n"
  },
  {
    "path": "src/global.d.ts",
    "content": "/// <reference types=\"@sveltejs/kit\" />\n"
  },
  {
    "path": "src/lib/components/ButtonGeneral.svelte",
    "content": "<script>\n\timport { createEventDispatcher } from 'svelte';\n\texport let disabled = false;\n\texport let dark = false;\n\n\tconst dispatch = createEventDispatcher();\n\tconst click = () => dispatch('click');\n</script>\n\n<button on:click|preventDefault|stopPropagation={click} {disabled} class:dark>\n\t<slot />\n</button>\n\n<style>\n\tbutton {\n\t\tposition: relative;\n\t\tborder: 3.5px solid transparent;\n\t\tborder-radius: 50px;\n\t\tbackground-color: #e0ddd4;\n\t\tbox-shadow: 0 2px 2px 0 rgba(100, 100, 100, 0.2), 0 2px 2px 0 rgba(100, 100, 100, 0.19);\n\t\tpadding: 0.25rem 1.5rem;\n\t\tmargin: 2px 5px;\n\t\ttransition: all 0.2s;\n\t\tborder: solid transparent;\n\t\tfont-size: 90%;\n\t}\n\n\tbutton.dark {\n\t\tcolor: white;\n\t\tbackground-color: #4a5265;\n\t}\n\n\tbutton:hover:not(:disabled) {\n\t\tborder-color: #fff;\n\t}\n\n\tbutton:active:not(:disabled) {\n\t\tanimation-name: colourchange;\n\t\tanimation-duration: 0.2s;\n\t\tanimation-fill-mode: forwards;\n\t\ttransform: scale(0.95);\n\t}\n\n\t@keyframes colourchange {\n\t\t50% {\n\t\t\tcolor: #ffffda;\n\t\t\tbackground: #ede9cc;\n\t\t}\n\t\t100% {\n\t\t\tborder-color: darkgray;\n\t\t\tcolor: white;\n\t\t\tbackground: linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05)), #e0ddd4;\n\t\t}\n\t}\n\n\t:global(.mobile) button {\n\t\tmargin: 1px 2px;\n\t\tpadding: 0.15rem 1.3rem;\n\t\tfont-size: 90%;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\tbutton {\n\t\t\tmargin: 2px 5px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\tbutton {\n\t\t\tfont-size: 120%;\n\t\t\tmargin: 1px 2px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/ButtonModal.svelte",
    "content": "<script>\n\timport { createEventDispatcher } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\n\tconst isSlotpresent = $$props.$$slots;\n\texport let type = 'confirm';\n\texport let text = '';\n\texport let disabled = false;\n\texport let light = false;\n\texport let width = '';\n\texport let icon = '';\n\n\tconst dispatch = createEventDispatcher();\n\tconst click = () => dispatch('click');\n</script>\n\n<button\n\ton:click|preventDefault={click}\n\t{disabled}\n\tclass:light\n\tstyle={width ? `width:${width}` : ''}\n>\n\t{#if icon}\n\t\t<i class=\"gi-{icon}\" />\n\t{:else if type === 'confirm'}\n\t\t<i class=\"gi-circle-o\" />\n\t{:else}\n\t\t<i class=\"gi-times\" />\n\t{/if}\n\n\t{#if isSlotpresent}\n\t\t<slot />\n\t{:else}\n\t\t<span>\n\t\t\t{text || (type === 'confirm' ? $t('confirmButton') : $t('cancelButton'))}\n\t\t</span>\n\t{/if}\n</button>\n\n<style>\n\tbutton {\n\t\tborder-radius: 40px;\n\t\talign-items: center;\n\t\tpadding: 0 0 0 0.3em;\n\t\tmax-width: 100%;\n\t\theight: 2.3rem;\n\t\ttransition: all 0.2s;\n\t\tposition: relative;\n\t\ttext-align: center;\n\t\tborder: 3.5px solid transparent;\n\t\ttransition: all 0.2s;\n\t\twidth: 200px;\n\t}\n\tbutton.light {\n\t\tbackground-color: #ece5d8;\n\t\tcolor: #4a5265;\n\t}\n\n\tbutton:not(.light) {\n\t\tcolor: white;\n\t\tbackground-color: #4a5265;\n\t}\n\n\tbutton:active:not(:disabled) {\n\t\ttransform: scale(0.9);\n\t\tbackground-color: #e0ddd4 !important;\n\t\tborder-color: rgb(195, 195, 195) !important;\n\t\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n\t\tcolor: #fff;\n\t}\n\n\tbutton:disabled {\n\t\topacity: 0.7;\n\t}\n\n\tbutton i {\n\t\twidth: 1.7rem;\n\t\theight: 1.7rem;\n\t\tbackground-color: #353533;\n\t\tborder-radius: 100%;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 0.8rem;\n\t\tposition: absolute;\n\t\tleft: 2%;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t}\n\tbutton:hover:not(:disabled) {\n\t\tbackground-color: rgb(51, 57, 71);\n\t}\n\n\tbutton.light:hover:not(:disabled) {\n\t\tbackground-color: #c3b8a1;\n\t}\n\n\tbutton i {\n\t\tcolor: #ffc107;\n\t}\n\tbutton i.gi-times {\n\t\tcolor: #3f9ad1;\n\t}\n\n\t:global(.mobile) button {\n\t\theight: 2.1rem;\n\t}\n\t:global(.mobile) button:not(.light) {\n\t\twidth: 130px;\n\t}\n\n\t@media screen and (max-width: 700px) {\n\t\t:global(main):not(.mobile) button {\n\t\t\tfont-size: 0.85rem;\n\t\t}\n\t\t:global(main):not(.mobile) button:not(.light) {\n\t\t\twidth: 120px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/CheckBox.svelte",
    "content": "<script>\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { createEventDispatcher } from 'svelte';\n\n\texport let checked = false;\n\texport let id = '_0';\n\n\tconst dispatch = createEventDispatcher();\n\tconst change = (e) => {\n\t\tconst { checked } = e.target;\n\t\tdispatch('change', { checked });\n\t\tplaySfx('click2');\n\t};\n</script>\n\n<div class=\"checkbox\">\n\t<input type=\"checkbox\" name=\"check{id}\" id=\"check{id}\" {checked} on:change={change} />\n\t<label for=\"check{id}\">\n\t\t<i>✔</i>\n\t\t<slot />\n\t</label>\n</div>\n\n<style>\n\t.checkbox {\n\t\tmargin: 1%;\n\t}\n\n\tlabel {\n\t\tcursor: inherit;\n\t}\n\t.checkbox input + label i {\n\t\tcolor: white;\n\t\tdisplay: inline-block;\n\t\twidth: 1.1rem;\n\t\taspect-ratio: 1/1;\n\t\tline-height: 1rem;\n\t\tbackground-color: #fff;\n\t\tborder: 1px solid #aaa;\n\t\ttransition: all 0.2s;\n\t\ttext-align: center;\n\t}\n\n\t.checkbox input:checked + label i {\n\t\tbackground-color: #06bbff;\n\t\tborder-color: transparent;\n\t}\n\n\t.checkbox:hover input + label i {\n\t\tborder: 1px solid #06bbff;\n\t\tbox-shadow: rgba(106, 168, 230, 0.6) 0px 0px 7px 5px;\n\t}\n\n\t.checkbox input {\n\t\tdisplay: none;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/Icon.svelte",
    "content": "<script>\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let type = '';\n\texport let width = '20px';\n\texport let height = 'auto';\n\texport let style = '';\n\n\t$: pic = {\n\t\tacquaint: $assets['acquaint-fate.webp'],\n\t\tintertwined: $assets['intertwined-fate.webp'],\n\t\tstardust: $assets['masterless-stardust.webp'],\n\t\tstarglitter: $assets['masterless-starglitter.webp'],\n\t\tprimogem: $assets['primogem.webp'],\n\t\tgenesis: $assets['genesis.webp']\n\t};\n</script>\n\n{#if type !== 'loader'}\n\t<img src={pic[type]} alt={type} {width} {height} {style} />\n{:else}\n\t<div class=\"loader-icon\" style=\"--width:{width};width: {width};\">\n\t\t<span />\n\t</div>\n{/if}\n\n<style>\n\t.loader-icon {\n\t\tposition: relative;\n\t\taspect-ratio: 1/1;\n\t}\n\tspan {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\tspan::before,\n\tspan::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tmargin: auto;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder: calc(0.15 * var(--width)) solid var(--text-color);\n\t\tborder-radius: 50%;\n\t\topacity: 0.5;\n\t}\n\tspan::before {\n\t\tanimation: loaderAnim1 1.5s cubic-bezier(0.075, 0.82, 0.165, 1) infinite;\n\t}\n\n\tspan::after {\n\t\tanimation: loaderAnim2 1.5s cubic-bezier(0.075, 0.82, 0.165, 1) 0.25s infinite;\n\t}\n\n\t@keyframes loaderAnim1 {\n\t\t0% {\n\t\t\ttransform: scale(0);\n\t\t\topacity: 1;\n\t\t}\n\t\t20% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1.5);\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t@keyframes loaderAnim2 {\n\t\t0% {\n\t\t\ttransform: scale(0);\n\t\t\topacity: 1;\n\t\t}\n\t\t20% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1);\n\t\t\topacity: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/Iklan.svelte",
    "content": "<script>\n\timport { dev } from '$app/environment';\n\timport { onMount } from 'svelte';\n\timport { isMobile, isPWA, showAd } from '$lib/store/app-stores';\n\timport { randomNumber } from '$lib/helpers/gacha/itemdrop-base';\n\n\texport let type = '';\n\texport let head = false;\n\texport let size = 'wide';\n\n\tconst show = randomNumber(1, 2) === 1;\n\n\tconst adSize = {\n\t\tsquare: 6247038092,\n\t\twide: 6827309798\n\t};\n\n\tonMount(() => {\n\t\tif (type !== 'banner' || head || (type === 'banner' && !show)) return;\n\t\ttry {\n\t\t\t// Google Ads\n\t\t\t(window.adsbygoogle = window.adsbygoogle || []).push({});\n\t\t\t// End Google Ads\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\t});\n\n\tlet addcashLoaded = false;\n\tconst loadAdcash = () => {\n\t\tif (addcashLoaded) return;\n\t\taddcashLoaded = true;\n\n\t\tconst sc = document.createElement('script');\n\t\tsc.setAttribute('id', 'aclib');\n\t\tsc.setAttribute('type', 'text/javascript');\n\t\tsc.src = '//acscdn.com/script/aclib.js';\n\t\tdocument.head.appendChild(sc);\n\t\tsc.addEventListener('load', () => window.aclib.runAutoTag({ zoneId: 'v1xd6wvvpe' }));\n\t};\n\n\tconst loadHeaderAds = () => {\n\t\tloadAdcash();\n\t\t// Ezoic\n\t\twindow.ezstandalone = window.ezstandalone || {};\n\t\twindow.ezstandalone.cmd = window.ezstandalone.cmd || [];\n\t\twindow.ezstandalone.cmd.push(function () {\n\t\t\twindow.ezstandalone.showAds();\n\t\t});\n\t\t// End Ezoic\n\t};\n\n\t$: if ($showAd && !dev && head && !type && !($isPWA && $isMobile)) loadHeaderAds();\n</script>\n\n{#if dev && type === 'banner' && show}\n\t<div class=\"row\">\n\t\t<div class=\"banner\" />\n\t</div>\n{/if}\n\n{#if $showAd && !dev}\n\t{#if type === 'banner' && show}\n\t\t<ins\n\t\t\tdata-ad-slot={adSize[size]}\n\t\t\tclass=\"adsbygoogle\"\n\t\t\tstyle=\"display:block\"\n\t\t\tdata-ad-client=\"ca-pub-1874822310102113\"\n\t\t\tdata-ad-format=\"auto\"\n\t\t\tdata-full-width-responsive=\"true\"\n\t\t/>\n\t{/if}\n\n\t{#if head && !type}\n\t\t<!-- Google Ad -->\n\t\t<script\n\t\t\tasync\n\t\t\tsrc=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1874822310102113\"\n\t\t\tcrossorigin=\"anonymous\"></script>\n\t\t<!-- Google Ad -->\n\n\t\t<!-- Ezoic -->\n\t\t<script src=\"https://the.gatekeeperconsent.com/cmp.min.js\" data-cfasync=\"false\"></script>\n\t\t<script src=\"https://the.gatekeeperconsent.com/ccpa/v2/standalone.js\" async></script>\n\t\t<script async src=\"//www.ezojs.com/ezoic/sa.min.js\"></script>\n\t\t<!-- Ezoic -->\n\n\t\t<!-- Autotag -->\n\t\t<!-- don't show autotag if PWA -->\n\t\t{#if !($isPWA && $isMobile)}\n\t\t\t<!-- <script\n\t\t\t\tdata-cfasync=\"false\"\n\t\t\t\ttype=\"text/javascript\"\n\t\t\t\tdata-adel=\"atag\"\n\t\t\t\tsrc=\"//acacdn.com/script/atg.js\"\n\t\t\t\tczid=\"v1xd6wvvpe\"></script> -->\n\t\t{/if}\n\t\t<!-- Autotag -->\n\n\t\t<!-- Desktop Only -->\n\t\t<!-- {#if !$isMobile} -->\n\t\t<!-- PopAds -->\n\t\t<!-- {#if randomNumber(1, 2) === 1}\n\t\t\t\t<script\n\t\t\t\t\ttype=\"text/javascript\"\n\t\t\t\t\tsrc=\"//pl17416355.profitablecpmgate.com/3e/70/98/3e7098724a8a6321d737e1bd39d9ffed.js\"></script>\n\t\t\t{/if} -->\n\t\t<!-- PopAds -->\n\n\t\t<!-- In-Push Page -->\n\t\t<!-- <script\n\t\t\t\ttype=\"text/javascript\"\n\t\t\t\tsrc=\"//pl17419889.profitablecpmgate.com/fb/35/45/fb3545e433a3f40f53c83f80f24037ec.js\"></script> -->\n\t\t<!-- In-Push Page -->\n\t\t<!-- {/if} -->\n\t{/if}\n{/if}\n\n<style>\n\tins::-webkit-scrollbar,\n\t.row::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.row {\n\t\twidth: 100%;\n\t\toverflow: auto;\n\t\tdisplay: flex;\n\t}\n\n\tins {\n\t\tmargin: auto;\n\t\toverflow: auto;\n\t\tmax-width: 100%;\n\t}\n\n\t:global(ins.adsbygoogle[data-ad-status='unfilled']) {\n\t\tdisplay: none !important;\n\t}\n\n\t.banner {\n\t\tmargin: auto;\n\t\twidth: 100%;\n\t\tmax-width: 728px;\n\t\theight: 280px;\n\t\taspect-ratio: 728/90;\n\t\tbackground-image: linear-gradient(40deg, #00aaff, pink 50%);\n\t\tbackground-size: cover;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/ModalTpl.svelte",
    "content": "<script>\n\timport { createEventDispatcher, onDestroy, onMount } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { assets } from '$lib/store/app-stores';\n\timport ButtonModal from './ButtonModal.svelte';\n\n\texport let title = '';\n\texport let dark = false;\n\texport let blank = false;\n\texport let disabled = false;\n\texport let confirmOnly = false;\n\texport let noDimiss = false;\n\n\tlet content;\n\tonMount(() =>\n\t\tOverlayScrollbars(content, { sizeAutoCapable: false, className: 'os-theme-light' })\n\t);\n\n\tconst dispatch = createEventDispatcher();\n\tconst confirmClick = () => dispatch('confirm');\n\tconst cancelClik = () => dispatch('cancel');\n\n\tconst dimiss = () => {\n\t\tif (confirmOnly || noDimiss) return;\n\t\tdispatch('cancel');\n\t};\n\n\t// Shortcut\n\thotkeys('enter', 'modal', (e) => {\n\t\te.preventDefault();\n\t\tif (disabled) return;\n\t\tconfirmClick();\n\t});\n\n\thotkeys('esc', 'modal', (e) => {\n\t\te.preventDefault();\n\t\tcancelClik();\n\t});\n\n\tconst currentScope = hotkeys.getScope();\n\thotkeys.setScope('modal');\n\tonDestroy(() => hotkeys.deleteScope('modal', currentScope));\n</script>\n\n<div\n\tclass=\"modal\"\n\tclass:dark\n\tin:fade={{ duration: 200 }}\n\tout:fade={{ duration: 80 }}\n\ton:mousedown|self={dimiss}\n>\n\t<div\n\t\tclass=\"modal-content\"\n\t\tin:fly={{ y: 20, duration: 250, opacity: 1 }}\n\t\tout:fly={{ y: 50, duration: 100, opacity: 1 }}\n\t>\n\t\t<span class=\"corner top-left\" />\n\t\t<span class=\"corner top-right\" />\n\t\t<span class=\"corner bottom-left\" />\n\t\t<span class=\"corner bottom-right\" />\n\t\t<div class=\"container\" style=\"--bg-icon:url({$assets['modal-bg-icon.png']})\">\n\t\t\t{#if blank}\n\t\t\t\t<slot />\n\t\t\t{:else}\n\t\t\t\t{#if title}\n\t\t\t\t\t<h1 class=\"pop-header\">{title}</h1>\n\t\t\t\t{/if}\n\t\t\t\t<div class=\"pop-body\" bind:this={content}>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"pop-footer\">\n\t\t\t\t\t{#if !confirmOnly}\n\t\t\t\t\t\t<ButtonModal light={dark} type=\"cancel\" on:click={cancelClik} />\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<ButtonModal light={dark} type=\"confirm\" {disabled} on:click={confirmClick}>\n\t\t\t\t\t\t{#if $$slots.confirmtext}\n\t\t\t\t\t\t\t<slot name=\"confirmtext\" />\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t{$t('confirmButton')}\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</ButtonModal>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.modal {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100vw;\n\t\theight: var(--screen-height);\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tz-index: 997;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackdrop-filter: blur(2px);\n\t}\n\n\t.modal-content {\n\t\twidth: 35rem;\n\t\tmax-width: 90%;\n\t\tbackground-color: #fbf6ee;\n\t\tpadding: 8px;\n\t\ttext-align: center;\n\t\tcolor: #383b40;\n\t\tposition: relative;\n\t\tborder-radius: 0.8rem;\n\t}\n\n\t.dark .modal-content {\n\t\tbackground-color: #4a5265;\n\t}\n\n\t:global(.mobile) .modal-content {\n\t\tmax-width: 110vh;\n\t}\n\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder: 2px solid #ddd5c8;\n\t\tbackground-image: var(--bg-icon);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 50%;\n\t\tbackground-position: 50%;\n\t}\n\n\t.corner {\n\t\tbackground-image: url('data:image/webp;base64,UklGRkgFAABXRUJQVlA4WAoAAAAQAAAANgAAMQAAQUxQSAUDAAABCbRt2wYS0Kny/w+3P0T0fwL4Fh3ZUFn3RQqxyZuhoG0bpuZPuzsQImICIhX+jrAkyW7bzKp0//s6YRwAcOH8GTEBE0C5tm1FknPu+xCQWdBiZpZGclsGyAB0QONmZkqIiB/vDRpNiIgJIP6144LOBIQAaStmAqCN0E4AUphAwoCQXtEIPIiISeCiIWUUwkwECbAXfA0Pj8BSW4GwsJqTeU7uMjoa3Qtdmtt8nIH4ELgYhOx9U1hpxZw2KNQFUH23+mFBoKxI326+3UyLToG6iejNu6E8X7f3/vKHwywQsRchX96fP/74Yy5GQCVFkDI10f/wh55IHwDhYnjcvvP7u2dPao+ZXFFiTVoiVtWf/32Gvrdv/nw2/qLTFCsERiDhJu+QevH4duXe83Khb94AUskCw7CM6KmtwbiZl7ufnLJiHiJBKNy5i/gQDWjL9pu4++6wu1ffxRMEO0SsT5gHuql7P3386+P7bbPsvxodw6MRWtYVEOryej6c2/hOd9fL8vF7KfvRD4hCCMsoIKvjeH5Sx/fKbvlshHUvmlAQiJkaYNuuH8ahnPLSaYI5KDXjbNCNfS2lppc9DdRCQQcIgFrEVAsphfTCwzufEEh21t/gaCgwRfbCi7fyHtDqJAABRIvUkOV56/YCPHUpzPWC0BewVmDqEbx7e9gn97BYhGVUME+hECJcpMfD/+4W7B8PE6GsgnT0dvQzgy59fnU44EGrgQAQta4/Lq65LA+r0dZ4GLckwgMQALVsWMZ5fmZT6QDbPP/w3k0aVg3CQeWTPO8X2hNqlqVuyc82d06KUghnNjFNd8szSxF9l3Uy5/7Kb6ZIAKIm5eTH3f5xZlLe1FF9/e6mcracJaglyQ/Xdm32VopsSKUrwztD/37RcVDg7PJwHd1CRk5Zdfs8n6xr/+nzAQcleRzdBCAJcmbl0vjJnc8HTVQBwlcBBAjApnlu7//3/bCIjniLa5uu3v+m9i9m6iAKGIYHDzTgK4YUUsz0eWLQCyE0gz4NAAlfMRR7+jR/bwBWUDggHAIAAHAKAJ0BKjcAMgA+KQ6FQqGHfAYAoSygDgHbI3I4tdhHQL88A1kA2ozja3RezMIbWU3XuF8+/h9ILAYHndhrUbZy5B81xTHr3sWw+e1DsBqahnwk8nvegFg3CiwAAP7/KvhRIfulyVvAM+kd25h7/f9q48lj/8TP6ceUoTF8V1L0D7kxK/RYzWsE2gM84nd8zXc9QGLEFOT/sLorw3Yjn9KVTdhjeYf/JPghddPdW0LE5XY55VYd6No1Np9IqEu9k4ZHiHsClwKB9XL+sZKxaOfPkAx9tBWSX/EaPi0L0FT+Ia2LsLUt7Gv/94HKXgfgqAY3Dc3mrgA9914RrLuW9+/4muOcWZqBrbww2hfhuvV6OzfAOs9mDbeSCYCL8K3CPHvdT0wItSZ53JuxG9FLZCIfp0b8LJkq1OMW6TeGE5KKpvYCamNksDv1s+pAa2J18XKje5sj8hSQhZjIqh9uPJX7FZXFqLIxObNJPebhHE3gvZWar0ojALZ+1hmoJKVuJVetIsSw8Nqfb9drEU81Na8myzoyvPFjWzeCiZoWF+PHkNkeaySoSlxjDHlbQS8zky28ygG5RGkzIURZol88xyDcVVvHW05Bq5d79tZ9Nbk/ofOfzl0+Un6lPuZpn0zhr9YSAvne330OxW3f5DbKZyT+YPZstc2H5QaDYWBcyVMJ2TCXOSCq+L28GLxA8V82mMeS122MP/qzwAAAAA==');\n\t\tbackground-size: cover;\n\t\twidth: 2.35rem;\n\t\taspect-ratio: 1/1;\n\t\tfont-size: 1.5rem;\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t}\n\n\t.top-left {\n\t\ttop: -0.9rem;\n\t\tleft: -0.9rem;\n\t\ttransform: rotate(-90deg);\n\t}\n\t.top-right {\n\t\ttop: -0.9rem;\n\t\tright: -0.9rem;\n\t}\n\t.bottom-left {\n\t\tbottom: -0.9rem;\n\t\tleft: -0.9rem;\n\t\ttransform: rotate(-180deg);\n\t}\n\t.bottom-right {\n\t\tbottom: -0.9rem;\n\t\tright: -0.9rem;\n\t\ttransform: rotate(90deg);\n\t}\n\n\t.pop-header {\n\t\tfont-size: 130%;\n\t\tmargin: 0.4rem 7%;\n\t\tpadding-bottom: 0.4rem;\n\t\tborder-bottom: 0.2rem solid #ddd5c8;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\n\t.dark .pop-header {\n\t\tcolor: rgba(210, 198, 156, 1);\n\t}\n\n\t:global(.mobile) .pop-header {\n\t\tfont-size: 1rem;\n\t}\n\n\t.pop-body {\n\t\theight: 15rem;\n\t\tmax-height: 45vh;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t\tfont-size: 1.1rem;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t}\n\n\t.dark .pop-body {\n\t\tcolor: #fbf6ee;\n\t}\n\n\t:global(.mobile) .pop-body {\n\t\theight: 12rem;\n\t\tfont-size: 0.9rem;\n\t}\n\n\t.pop-footer {\n\t\tdisplay: flex;\n\t\tpadding: 0.7rem 0;\n\t\tjustify-content: space-around;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\t.pop-footer::before {\n\t\twidth: 80%;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tborder-top: 0.2rem solid #ddd5c8;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\t.dark .container,\n\t.dark .pop-header,\n\t.dark .pop-footer::before {\n\t\tborder-color: rgba(210, 198, 156, 0.6);\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/MyFund.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Icon from './Icon.svelte';\n\n\texport let type = 'primogem';\n\texport let plusbutton = false;\n\tconst allowAddition = type === 'primogem' && plusbutton;\n\n\tconst openConvertModal = getContext('openConvertModal');\n\tconst openModal = () => {\n\t\tif (!allowAddition) return;\n\t\topenConvertModal();\n\t\tplaySfx('modal');\n\t};\n</script>\n\n<button class={type} class:increament={allowAddition} on:click={openModal}>\n\t<Icon\n\t\t{type}\n\t\theight=\"80%\"\n\t\twidth=\"auto\"\n\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t/>\n\t<slot />\n\t{#if allowAddition}\n\t\t<span> <i class=\"gi-plus\" /> </span>\n\t{/if}\n</button>\n\n<style>\n\t.primogem span {\n\t\twidth: 1.2rem;\n\t\theight: 1.2rem;\n\t\tcolor: rgba(0, 0, 0, 0.7);\n\t\tbackground-color: #e0ddd4;\n\t\tborder-radius: 100%;\n\t\tposition: absolute;\n\t\tright: 3px;\n\t\ttop: 50%;\n\t\tfont-size: 110%;\n\t\tline-height: 0;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttransform: translateY(-50%);\n\t\ttransition: all 0.2s;\n\t}\n\n\t.primogem.increament {\n\t\tpadding-right: 2rem !important;\n\t}\n\n\t.primogem:active span {\n\t\ttransform: translateY(-50%) scale(0.9);\n\t\tcolor: #fff;\n\t\tborder-color: darkgray;\n\t}\n\n\t.primogem:hover span {\n\t\tborder-color: #fff;\n\t\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 7px 5px;\n\t}\n\n\tbutton {\n\t\tdisplay: inline-block;\n\t\theight: 25px;\n\t\toverflow: hidden;\n\t\tbackground-color: rgba(0, 0, 0, 0.3);\n\t\tborder-radius: 50px;\n\t\tcolor: #fff;\n\t\tvertical-align: middle;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t\tmargin: 0 10px 0 0;\n\t\tpadding: 0 1rem 0 1.85rem;\n\t\tborder: 0.7px solid #656565;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\tbutton {\n\t\t\theight: 20px;\n\t\t\tmargin: 0 3px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.primogem {\n\t\t\tmargin-bottom: 2px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/NoticeMark.svelte",
    "content": "<script>\n\timport { notice } from '$lib/store/app-stores';\n\n\texport let name = '';\n\texport let style = '';\n\n\tlet active = false;\n\n\t$: {\n\t\tif (!Array.isArray(name)) {\n\t\t\tactive = !$notice.includes(name);\n\t\t} else {\n\t\t\tconst tmp = [];\n\t\t\tname.forEach((n) => tmp.push($notice.includes(n)));\n\t\t\tactive = tmp.includes(false);\n\t\t}\n\t}\n</script>\n\n{#if active}\n\t<div class=\"notice\" {style}>\n\t\t<span>!</span>\n\t</div>\n{/if}\n\n<style>\n\t.notice {\n\t\tposition: absolute;\n\t\tright: 0.5rem;\n\t\tz-index: +1;\n\t}\n\n\tspan {\n\t\tcolor: #fff;\n\t\tbackground-color: #de2f22;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tborder-radius: 100%;\n\t\taspect-ratio: 1/1;\n\t\tfont-size: xx-small;\n\t\tpadding: 0.3rem;\n\t\tline-height: 0;\n\t}\n\n\t:global(.mobile) span {\n\t\tfont-size: 0.4rem;\n\t\tpadding: 0.25rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/ObtainedItem.svelte",
    "content": "<script>\n\timport { getContext, onDestroy, onMount } from 'svelte';\n\timport { scale } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Icon from './Icon.svelte';\n\n\texport let data = [{ item: 'primogem', qty: 0 }];\n\n\tconst checkRarity = (item) => {\n\t\treturn item === 'stardust' ? 4 : 5;\n\t};\n\tconst closeObtained = getContext('closeObtained');\n\tonMount(() => playSfx('obtain'));\n\n\t// Shortcut;\n\tconst currentScope = hotkeys.getScope();\n\thotkeys('*', 'obtain', (e) => {\n\t\te.preventDefault();\n\t\tcloseObtained();\n\t});\n\n\thotkeys.setScope('obtain');\n\tonDestroy(() => hotkeys.deleteScope('obtain', currentScope));\n</script>\n\n<section on:mousedown={closeObtained}>\n\t<div class=\"container\">\n\t\t<div class=\"bg\" />\n\t\t<div class=\"content\" in:scale={{ start: 0, duration: 200 }}>\n\t\t\t<h3 class=\"title\">\n\t\t\t\t{$t('obtained')}\n\t\t\t\t<i class=\"gi-primo-star\" />\n\t\t\t</h3>\n\n\t\t\t<h4>{$t('extra')}</h4>\n\t\t\t<div class=\"milestone\">\n\t\t\t\t{#each data as { item, qty }}\n\t\t\t\t\t{#if qty > 0}\n\t\t\t\t\t\t<div class=\"item {item}\" on:mousedown|stopPropagation>\n\t\t\t\t\t\t\t<div class=\"body\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"pic\"\n\t\t\t\t\t\t\t\t\tstyle=\"--bg: url('{$assets[`${checkRarity(item)}star-bg.webp`]}');\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon width=\"100%\" type={item} />\n\t\t\t\t\t\t\t\t\t<div class=\"star\">\n\t\t\t\t\t\t\t\t\t\t{#each Array(checkRarity(item)) as _}\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<span>{qty}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"name\">\n\t\t\t\t\t\t\t\t{$t(`shop.item.${item}`)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t{/each}\n\t\t\t</div>\n\n\t\t\t<h4 class=\"msg\">{$t('pressToContinue')}</h4>\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 999;\n\t\tcolor: #000;\n\t}\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.bg {\n\t\tmin-width: 100vw;\n\t\tmin-height: 100%;\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: 0;\n\t\tbackground-image: linear-gradient(to top, rgba(136, 132, 133, 0.93), rgba(39, 34, 54, 0.93));\n\t}\n\n\t.content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmax-width: 80%;\n\t\twidth: 35rem;\n\t\ttext-align: center;\n\t}\n\n\t:global(.mobile) .content {\n\t\ttransform: scale(0.85);\n\t}\n\n\th3 {\n\t\tcolor: #beb99c;\n\t\tfont-weight: 100;\n\t\tpadding: 0.5rem;\n\t\tborder-bottom: 0.01rem solid #959187;\n\t}\n\th4 {\n\t\tcolor: #ede5d8;\n\t\tpadding: 0.8rem;\n\t\tfont-weight: 100;\n\t}\n\th4.msg {\n\t\tborder-top: 0.01rem solid #959187;\n\t\tmargin-top: 1.5rem;\n\t}\n\ti.gi-primo-star {\n\t\tfont-size: 0.7rem;\n\t\tvertical-align: top;\n\t}\n\n\t.milestone {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: center;\n\t}\n\n\t.item {\n\t\tmargin: 0.25rem;\n\t}\n\t.item,\n\t.body {\n\t\tdisplay: block;\n\t\tborder-radius: 0.4rem;\n\t\toverflow: hidden;\n\t\twidth: 5rem;\n\t}\n\t.body {\n\t\tbackground-color: #fff;\n\t}\n\n\t.acquaint .pic,\n\t.intertwined .pic {\n\t\tpadding: 0.55rem;\n\t}\n\n\t.pic {\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: cover;\n\t\tposition: relative;\n\t\tborder-bottom-right-radius: 0.8em;\n\t}\n\t.star {\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\tbottom: -0.6rem;\n\t\ttransform: translateX(-50%);\n\t}\n\t.gi-star {\n\t\tcolor: #eac343;\n\t\tfont-size: 0.9rem;\n\t}\n\tspan {\n\t\tfont-size: 0.7rem;\n\t\tdisplay: block;\n\t\tline-height: 1rem;\n\t}\n\t.name {\n\t\tfont-size: 0.7rem;\n\t\twhite-space: pre-wrap;\n\t\twidth: 5rem;\n\t\tcolor: #ede5d8;\n\t\tline-height: 0.9rem;\n\t\tmargin-top: 0.3rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/RandomBackground.svelte",
    "content": "<script>\n\timport { assets } from '$lib/store/app-stores';\n\n\tconst random = (min, max) => {\n\t\tmin = Math.ceil(min);\n\t\tmax = Math.floor(max);\n\t\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n\t};\n</script>\n\n<img class=\"bg\" src={$assets[`bg${random(1, 20)}.webp`]} alt=\"background\" />\n\n<style>\n\t.bg {\n\t\twidth: 100vw;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tposition: fixed;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%) scale(1.1);\n\t\tfilter: blur(10px);\n\t\t-webkit-filter: blur(10px);\n\t\tz-index: +1;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/Range.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\texport let max;\n\texport let min;\n\texport let value;\n\texport let disabled = false;\n\n\tconst setValue = getContext('setValue');\n\tconst changeRange = (e) => {\n\t\tconst { value } = e.target;\n\t\tsetValue(parseInt(value));\n\t};\n\n\tlet timeout;\n\tlet interval;\n\tconst rangeControl = (plusOrMinus = 'plus') => {\n\t\tconst change = plusOrMinus === 'plus' ? plus : minus;\n\t\tchange();\n\t\ttimeout = setTimeout(() => {\n\t\t\tinterval = setInterval(change, 50);\n\t\t}, 500);\n\n\t\tconst isMinRange = plusOrMinus === 'min' && value <= 1;\n\t\tconst isMaxRange = plusOrMinus === 'plus' && value >= max;\n\t\tif (isMinRange || isMaxRange) return;\n\t\tplaySfx();\n\t};\n\n\tconst plus = () => {\n\t\tif (value >= max) return clearTimers();\n\t\tchangeRange({ target: { value: value + 1 } });\n\t};\n\n\tconst minus = () => {\n\t\tif (value <= 1) return clearTimers();\n\t\tchangeRange({ target: { value: value - 1 } });\n\t};\n\n\tconst clearTimers = () => {\n\t\tclearTimeout(timeout);\n\t\tclearInterval(interval);\n\t};\n</script>\n\n<div class=\"input\">\n\t<button\n\t\tclass=\"min\"\n\t\tdisabled={isNaN(value) || value <= 1}\n\t\ton:touchstart|preventDefault|nonpassive={() => rangeControl('min')}\n\t\ton:mousedown|preventDefault={() => rangeControl('min')}\n\t\ton:mouseleave={clearTimers}\n\t\ton:mouseup={clearTimers}\n\t\ton:touchend={clearTimers}\n\t>\n\t\t<i class=\"gi-min\" />\n\t</button>\n\t<div class=\"control\">\n\t\t<span style=\"pointer-events:none\">{min}</span>\n\t\t<input\n\t\t\tstyle=\"--min:{min || 0}; --max:{max || 0}; --val:{value || 0}\"\n\t\t\tclass=\"range\"\n\t\t\ttype=\"range\"\n\t\t\tmax={max || 0}\n\t\t\tmin={min || 0}\n\t\t\tvalue={value || 0}\n\t\t\ton:input={changeRange}\n\t\t\t{disabled}\n\t\t/>\n\t\t<span style=\"pointer-events:none\">{max}</span>\n\t</div>\n\t<button\n\t\tclass=\"plus\"\n\t\tdisabled={isNaN(value) || value >= max}\n\t\ton:touchstart|preventDefault|nonpassive={() => rangeControl('plus')}\n\t\ton:mousedown|preventDefault={() => rangeControl('plus')}\n\t\ton:mouseleave={clearTimers}\n\t\ton:mouseup={clearTimers}\n\t\ton:touchend={clearTimers}\n\t>\n\t\t<i class=\"gi-plus\" />\n\t</button>\n</div>\n\n<style>\n\t.control,\n\t.input {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tfont-size: 1rem;\n\t}\n\n\t.control {\n\t\tflex-direction: row;\n\t\tmargin: 0 3rem;\n\t}\n\n\t.control > span {\n\t\twidth: 2.2em;\n\t\theight: 2em;\n\t\tline-height: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: larger;\n\t}\n\n\t/* range */\n\t[type='range'] {\n\t\t--range: calc(var(--max) - var(--min));\n\t\t--ratio: calc((var(--val) - var(--min)) / var(--range));\n\t\t--sx: calc(0.5 * 1.5em + var(--ratio) * (100% - 1.5em));\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 55%;\n\t\theight: 1.5em;\n\t\tbackground: transparent;\n\t\tfont: 1em/1 arial, sans-serif;\n\t}\n\t[type='range'],\n\t[type='range']::-webkit-slider-thumb {\n\t\t-webkit-appearance: none;\n\t}\n\t[type='range']::-webkit-slider-runnable-track {\n\t\tbox-sizing: border-box;\n\t\tborder: none;\n\t\twidth: 100%;\n\t\theight: 0.4em;\n\t\tbackground: #ccc;\n\t}\n\t[type='range']::-webkit-slider-runnable-track {\n\t\tbackground: linear-gradient(#4a5265, #4a5265) 0 / var(--sx) 100% no-repeat #ccc;\n\t\tborder-radius: 10px;\n\t}\n\t[type='range']::-moz-range-track {\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 10px;\n\t\twidth: 100%;\n\t\theight: 0.4em;\n\t\tbackground: #ccc;\n\t}\n\n\t/* duplicated because browsers ignore\n\t * the whole selector when they see\n\t * non-standard rules\n\t * (FF 96, Chrome 97)\n\t */\n\t[type='range']::-ms-track {\n\t\tbox-sizing: border-box;\n\t\tborder: none;\n\t\twidth: 100%;\n\t\theight: 0.4em;\n\t\tbackground: #ccc;\n\t}\n\n\t[type='range']::-moz-range-progress {\n\t\theight: 0.4em;\n\t\tborder-radius: 10px;\n\t\tbackground: #4a5265;\n\t}\n\n\t[type='range']::-ms-fill-lower {\n\t\theight: 0.4em;\n\t\tbackground: #ccc;\n\t}\n\n\t[type='range']::-webkit-slider-thumb {\n\t\tbox-sizing: border-box;\n\t\tborder: none;\n\t\tborder-radius: 0;\n\t\twidth: 0.75em;\n\t\theight: 0.75em;\n\t\tbackground: #4a5265;\n\t\tmargin-top: -0.22rem;\n\t\ttransform: rotate(45deg);\n\t\tborder: 0.15em solid #ece6de;\n\t\toutline: 0.15em solid #4a5265;\n\t\tbox-shadow: 0 0 6px #ece6de;\n\t}\n\n\t[type='range']::-moz-range-thumb {\n\t\tbox-sizing: border-box;\n\t\tborder: none;\n\t\tborder-radius: 0;\n\t\twidth: 0.75em;\n\t\theight: 0.75em;\n\t\tbackground: #4a5265;\n\t\tmargin-top: -0.22rem;\n\t\ttransform: rotate(45deg);\n\t\tborder: 0.15em solid #ece6de;\n\t\toutline: 0.15em solid #4a5265;\n\t\tbox-shadow: 0 0 6px #ece6de;\n\t}\n\n\t[type='range']::-ms-tooltip {\n\t\tdisplay: none;\n\t}\n\n\tbutton:active:not(:disabled) {\n\t\ttransform: scale(0.9) translateY(-50%);\n\t\tbackground-color: #e0ddd4 !important;\n\t\tborder-color: rgb(195, 195, 195) !important;\n\t\tbox-shadow: rgb(160 175 190 / 60%) 0px 0px 4px 2px;\n\t}\n\n\tbutton:hover:not(:disabled) {\n\t\tbackground-color: rgb(51, 57, 71);\n\t}\n\n\tbutton.plus:disabled,\n\tbutton.min:disabled {\n\t\tbackground-color: rgb(173, 179, 192);\n\t}\n\n\tbutton.plus,\n\tbutton.min {\n\t\tbackground-color: #4a5265;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tposition: absolute;\n\t\twidth: 2rem;\n\t\theight: 2rem;\n\t\tcolor: #fff;\n\t\tborder-radius: 100%;\n\t\tborder: 0.2rem solid transparent;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\ttransition: all 0.2s;\n\t}\n\n\tbutton.plus {\n\t\tright: 7%;\n\t}\n\tbutton.min {\n\t\tleft: 7%;\n\t\tz-index: +3;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/SVGIcon.svelte",
    "content": "<script>\n\t// Vision\n\timport Anemo from './svgs/Anemo.svelte';\n\timport Cryo from './svgs/Cryo.svelte';\n\timport Dendro from './svgs/Dendro.svelte';\n\timport Electro from './svgs/Electro.svelte';\n\timport Geo from './svgs/Geo.svelte';\n\timport Hydro from './svgs/Hydro.svelte';\n\timport Pyro from './svgs/Pyro.svelte';\n\n\t// Weapon\n\timport Bow from './svgs/Bow.svelte';\n\timport Catalyst from './svgs/Catalyst.svelte';\n\timport Claymore from './svgs/Claymore.svelte';\n\timport Polearm from './svgs/Polearm.svelte';\n\timport Sword from './svgs/Sword.svelte';\n\n\texport let name = '';\n\n\tconst icons = {\n\t\tanemo: Anemo,\n\t\tcryo: Cryo,\n\t\tdendro: Dendro,\n\t\telectro: Electro,\n\t\tgeo: Geo,\n\t\thydro: Hydro,\n\t\tpyro: Pyro,\n\t\tbow: Bow,\n\t\tcatalyst: Catalyst,\n\t\tclaymore: Claymore,\n\t\tpolearm: Polearm,\n\t\tsword: Sword\n\t};\n</script>\n\n{#if name in icons}\n\t<svelte:component this={icons[name]} />\n{/if}\n"
  },
  {
    "path": "src/lib/components/Toast.svelte",
    "content": "<script>\n\timport { createEventDispatcher } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\n\texport let type = 'info';\n\texport let dismissible = false;\n\texport let timeout = 0;\n\texport let autoclose = true;\n\n\tconst dispatch = createEventDispatcher();\n\tconst duration = timeout ? `${timeout / 1000}s` : '0s';\n</script>\n\n<div\n\tclass=\"toast {type}\"\n\tclass:dismissible\n\tclass:autoclose={autoclose && timeout > 0}\n\trole=\"alert\"\n\tstyle=\"--duration: {duration}\"\n\tin:fly|local={{ y: -20 }}\n\tout:fade={{ duration: 200 }}\n>\n\t<div class=\"text\">\n\t\t<slot />\n\t</div>\n\n\t{#if dismissible}\n\t\t<button class=\"dismiss\" on:click={() => dispatch('dismiss')}>\n\t\t\t<i class=\"gi-times\" />\n\t\t</button>\n\t{/if}\n</div>\n\n<style>\n\t.toast {\n\t\tpointer-events: initial;\n\t\tpadding: 0.5rem 1.5rem 0.7rem;\n\t\ttext-align: center;\n\t\tborder-top-right-radius: 0.3rem;\n\t\tborder-top-left-radius: 0.3rem;\n\t\tmin-width: 10rem;\n\t\tmax-width: 20rem;\n\t\tmargin: 0.2rem;\n\t\tbackground-color: var(--tertiary-color);\n\t\tcolor: #4a5265;\n\t\tfont-size: 80%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\tbox-shadow: 0 0 1rem rgba(0, 0, 0, 0.4);\n\t}\n\n\t.toast.autoclose::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tborder-bottom: #4a5265 0.2rem solid;\n\t\tanimation: scaleX forwards linear;\n\t\ttransform-origin: 0%;\n\t\tanimation-duration: var(--duration);\n\t}\n\n\t.toast.dismissible {\n\t\tpadding-right: 0.75rem;\n\t}\n\n\t.toast.error {\n\t\tcolor: #d14a29;\n\t}\n\t.toast.error::after {\n\t\tborder-color: #d14a29;\n\t}\n\n\t.toast.success {\n\t\tcolor: #359697;\n\t}\n\t.toast.success::after {\n\t\tborder-color: #359697;\n\t}\n\n\tbutton {\n\t\tcolor: inherit;\n\t\tbackground: transparent;\n\t\tborder: 0 none;\n\t\tpadding: 0;\n\t\tline-height: 0;\n\t\tfont-size: 80%;\n\t\tmargin-left: auto;\n\t\taspect-ratio: 1/1;\n\t\tpadding: 0.25rem;\n\t\ttransform: scale(1.2);\n\t}\n\n\t@keyframes scaleX {\n\t\t0% {\n\t\t\ttransform: scaleX(100%);\n\t\t}\n\t\t100% {\n\t\t\ttransform: scaleX(0%);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/Toasts.svelte",
    "content": "<script lang=\"ts\">\n\timport { flip } from 'svelte/animate';\n\timport { dismissToast } from '$lib/helpers/toast';\n\timport { toastMsg } from '$lib/store/app-stores';\n\timport Toast from './Toast.svelte';\n</script>\n\n{#if $toastMsg}\n\t<div class=\"toasts\">\n\t\t{#each $toastMsg as { type, id, dismissible, message, autoclose, timeout } (id)}\n\t\t\t<div class=\"toast-item\" animate:flip={{ duration: (i) => 25 * Math.sqrt(i) }}>\n\t\t\t\t<Toast {type} {dismissible} {autoclose} {timeout} on:dismiss={() => dismissToast(id)}>\n\t\t\t\t\t{message}\n\t\t\t\t</Toast>\n\t\t\t</div>\n\t\t{/each}\n\t</div>\n{/if}\n\n<style>\n\t.toasts {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tmargin-top: 1rem;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\tpointer-events: none;\n\t\tz-index: 1000;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/ToolTip.svelte",
    "content": "<script>\n\texport let position = 'bottom';\n</script>\n\n<div class=\"tooltip {position}\">\n\t<i>i</i>\n\t<span class=\"tooltiptext\">\n\t\t<slot />\n\t</span>\n</div>\n\n<style>\n\t.tooltip {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\t.tooltip i {\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\twidth: 1.2rem;\n\t\ttransform: translateY(-20%);\n\t\tfont-size: small;\n\t\tborder: 1px solid var(--text-color);\n\t\tfont-style: normal;\n\t\ttext-align: center;\n\t\tline-height: 100%;\n\t\tborder-radius: 100%;\n\t}\n\n\t.tooltip .tooltiptext {\n\t\tdisplay: block;\n\t\twidth: 200px;\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\tpadding: 0.5rem;\n\t\tborder-radius: 6px;\n\t\tposition: absolute;\n\t\tz-index: +10;\n\t\topacity: 0;\n\t\ttransition: opacity 0.25s;\n\t\tpointer-events: none;\n\t\tfont-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode',\n\t\t\tGeneva, Verdana, sans-serif;\n\t}\n\n\t.tooltip:hover .tooltiptext {\n\t\topacity: 1;\n\t}\n\n\t.tooltip .tooltiptext::after {\n\t\tcontent: ' ';\n\t\tposition: absolute;\n\t\tmargin-top: -5px;\n\t\tborder-width: 5px;\n\t\tborder-style: solid;\n\t}\n\n\t/* right position */\n\t.right.tooltip .tooltiptext {\n\t\ttop: -5px;\n\t\tleft: 105%;\n\t}\n\t.right.tooltip .tooltiptext::after {\n\t\ttop: 50%;\n\t\tright: 100%;\n\t\tborder-color: transparent rgba(0, 0, 0, 0.75) transparent transparent;\n\t}\n\n\t/* Left Position */\n\t.left.tooltip .tooltiptext {\n\t\ttop: -5px;\n\t\tright: 105%;\n\t}\n\t.left.tooltip .tooltiptext::after {\n\t\ttop: 50%;\n\t\tleft: 100%;\n\t\tborder-color: transparent transparent transparent rgba(0, 0, 0, 0.75);\n\t}\n\n\t/* Top Position */\n\t.top.tooltip .tooltiptext {\n\t\tbottom: 100%;\n\t\tleft: 50%;\n\t}\n\t.top.tooltip .tooltiptext::after {\n\t\ttop: 100%;\n\t\tleft: 50%;\n\t\tborder-color: rgba(0, 0, 0, 0.75) transparent transparent transparent;\n\t}\n\n\t/* bottom position */\n\t.bottom.tooltip .tooltiptext {\n\t\ttop: 100%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\t.bottom.tooltip .tooltiptext::after {\n\t\tposition: absolute;\n\t\tbottom: 100%;\n\t\tleft: 50%;\n\t\tborder-color: transparent transparent rgba(0, 0, 0, 0.75) transparent;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/MainChat.svelte",
    "content": "<script>\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { ref, query, limitToLast, onChildAdded } from 'firebase/database';\n\timport { db } from '$lib/helpers/chat/firebaseApp';\n\timport { mobileMode, viewportWidth } from '$lib/store/app-stores';\n\timport { getCredential } from '$lib/helpers/chat/firebaseApp';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { adKey } from '$lib/helpers/accessKey';\n\n\timport ButtonGeneral from '../ButtonGeneral.svelte';\n\timport Chats from './_chats.svelte';\n\timport Sidebar from './_sidebar.svelte';\n\timport ChangeNick from './_changeNick.svelte';\n\timport ChangeAvatar from './_changeAvatar.svelte';\n\timport LoaderChat from './_loader-chat.svelte';\n\n\texport let show = false;\n\n\tlet userId;\n\tlet clientHeight;\n\tlet pro = false;\n\tlet showSetting = false;\n\tlet changeNick = false;\n\tlet changePic = false;\n\n\tconst close = getContext('chatToggle');\n\tconst loadCredential = async () => (userId = await getCredential());\n\tconst toggleSetting = (op) => {\n\t\tconst isDimiss = op === 'dimiss';\n\t\tif (isDimiss && !showSetting) return;\n\t\tshowSetting = isDimiss ? false : !showSetting;\n\t\tplaySfx(isDimiss ? 'close' : 'click');\n\t};\n\n\tconst toggleNick = () => (changeNick = !changeNick);\n\tconst togglePic = () => (changePic = !changePic);\n\tsetContext('toggleNick', toggleNick);\n\tsetContext('togglePic', togglePic);\n\n\tconst toggle = (op) => {\n\t\tplaySfx();\n\t\tif (op === 'nick') return toggleNick();\n\t\treturn togglePic();\n\t};\n\n\t$: if (show && !userId) loadCredential();\n\t$: if (!show) showSetting = false;\n\n\tlet messages = [\n\t\t{\n\t\t\tuid: 'nang441',\n\t\t\tname: 'nang441',\n\t\t\tpic: 'nahida',\n\t\t\tpro: false,\n\t\t\tmessage:\n\t\t\t\t'Welcome to the WishSimulator.App! Please be polite in this chat room! Everything in here will be cleaned every 3 hours.'\n\t\t}\n\t];\n\n\t// Read & Listen DB\n\tconst dataRef = query(ref(db, 'wishsim-chatroom'), limitToLast(5));\n\tonChildAdded(dataRef, (data) => {\n\t\tconst { uid, name, pic, pro, message } = data.toJSON();\n\t\tconst key = data.key.split('-')[1];\n\t\tmessages = [...messages, { uid, name, pic, pro, message, key }];\n\t});\n\n\tonMount(async () => {\n\t\tconst { validity } = await adKey.checkLocal();\n\t\tpro = validity;\n\t});\n</script>\n\n{#if show}\n\t<section>\n\t\t<div\n\t\t\tclass=\"container\"\n\t\t\ttransition:fly={{ x: -200, duration: 200 }}\n\t\t\ton:click={() => toggleSetting('dimiss')}\n\t\t>\n\t\t\t{#if $viewportWidth > 640 || $mobileMode}\n\t\t\t\t<Sidebar />\n\t\t\t{/if}\n\t\t\t<div\n\t\t\t\tclass=\"room\"\n\t\t\t\tclass:full={$viewportWidth <= 640}\n\t\t\t\ton:click|stopPropagation={() => toggleSetting('dimiss')}\n\t\t\t\tstyle=\"--height:{clientHeight}px\"\n\t\t\t\ttransition:fly={{ x: -50, duration: 200, delay: 150 }}\n\t\t\t>\n\t\t\t\t<div class=\"top\" bind:clientHeight>\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<button class=\"close dimiss\" on:click={close}>\n\t\t\t\t\t\t\t<i class=\"gi-reply\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span> Chatroom is an experimental feature </span>\n\t\t\t\t\t<div class=\"col\" style=\"position:relative\">\n\t\t\t\t\t\t<button class=\"close\" on:click|stopPropagation={toggleSetting}>\n\t\t\t\t\t\t\t<i class=\"gi-dot-3\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{#if showSetting}\n\t\t\t\t\t\t\t<div class=\"setting\" transition:fade={{ duration: 250 }} on:click|stopPropagation>\n\t\t\t\t\t\t\t\t<ButtonGeneral on:click={() => toggle('nick')}>Edit Nickname</ButtonGeneral>\n\t\t\t\t\t\t\t\t<ButtonGeneral on:click={toggle}>Change Avatar</ButtonGeneral>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"chats\">\n\t\t\t\t\t{#if !userId || messages.length < 2}\n\t\t\t\t\t\t<div class=\"loading\" transition:fade|local={{ duration: 300 }}>\n\t\t\t\t\t\t\t<LoaderChat />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<Chats {userId} {messages} {pro} />\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"close-div\" on:click={close} />\n\t\t</div>\n\t\t{#if changeNick} <ChangeNick />{/if}\n\t\t{#if changePic} <ChangeAvatar /> {/if}\n\t</section>\n{/if}\n\n<style>\n\tsection {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 10;\n\t}\n\n\t.container {\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(32, 36, 49, 0.9) 50%,\n\t\t\trgba(32, 36, 49, 0.3) 80%,\n\t\t\trgba(32, 36, 49, 0)\n\t\t);\n\t\tbackground-position: left;\n\t\tbackground-repeat: no-repeat;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t}\n\n\t.close-div {\n\t\twidth: 25%;\n\t\tmargin-left: auto;\n\t}\n\n\t.top {\n\t\twidth: 100%;\n\t\theight: 60px;\n\t\tcolor: rgba(210, 198, 156, 0.8);\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid rgba(210, 198, 156, 0.5);\n\t}\n\n\t:global(.mobile) .top {\n\t\theight: 40px;\n\t\tmargin-bottom: -10px;\n\t}\n\t.top .close {\n\t\ttransform: scale(0.8);\n\t}\n\n\t.top .dimiss {\n\t\tdisplay: none;\n\t}\n\t.setting {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 150%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tbackground-color: #454b5d;\n\t\tborder: 1px solid rgba(210, 198, 156, 0.5);\n\t\tborder-radius: 1.1rem;\n\t\tpadding: 20% 10%;\n\t\tz-index: +1;\n\t}\n\t.setting :global(button) {\n\t\tfont-size: 80%;\n\t\twhite-space: nowrap;\n\t}\n\n\t.loading {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\t.room {\n\t\theight: 100%;\n\t\twidth: 50%;\n\t\tmin-width: 300px;\n\t\tmax-width: 500px;\n\t}\n\t.room.full,\n\t.top span {\n\t\twidth: 100%;\n\t}\n\n\t.chats {\n\t\tpadding: 5%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: calc(100% - var(--height));\n\t\tposition: relative;\n\t}\n\n\t@media screen and (min-width: 1200px) {\n\t\t.container {\n\t\t\tbackground-size: 1400px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 1200px) {\n\t\t.container {\n\t\t\tbackground-size: 120%;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 850px) {\n\t\t.container {\n\t\t\tbackground-size: 140%;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.container {\n\t\t\tbackground-size: 180%;\n\t\t}\n\t\t.close-div {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.top {\n\t\t\theight: unset;\n\t\t\tpadding: 3%;\n\t\t\tfont-size: 120%;\n\t\t}\n\t\t.top .dimiss {\n\t\t\tdisplay: unset;\n\t\t}\n\t\t.gi-reply {\n\t\t\tfont-size: large;\n\t\t}\n\n\t\t.setting {\n\t\t\tleft: unset;\n\t\t\ttop: 100%;\n\t\t\tright: 0;\n\t\t}\n\n\t\t.room {\n\t\t\twidth: 100%;\n\t\t\tmin-width: unset;\n\t\t\tmax-width: unset;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_changeAvatar.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { HistoryManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { checkActiveOutfit } from '$lib/helpers/outfit';\n\n\timport ModalTpl from '../ModalTpl.svelte';\n\timport ButtonModal from '../ButtonModal.svelte';\n\n\tlet scrollable;\n\tlet characters = [];\n\tlet selectedChar = {};\n\tlet activeAvatar = cookie.get('avatar') || {};\n\t$: avatarName = selectedChar?.name || activeAvatar?.name;\n\n\tconst { getAllHistories } = HistoryManager;\n\tconst togglePic = getContext('togglePic');\n\n\tconst previewAvatar = (charData) => {\n\t\tselectedChar = charData;\n\t\tplaySfx();\n\t};\n\n\tconst setAvatar = () => {\n\t\tcookie.set('avatar', selectedChar);\n\t\tplaySfx();\n\t\ttogglePic();\n\t};\n\n\tconst getCharacter = async () => {\n\t\tconst data = await getAllHistories();\n\t\tconst chars = data.filter(({ type }) => type === 'character');\n\t\tconst tmp = [];\n\n\t\tchars.forEach(({ name }) => {\n\t\t\tif (tmp.findIndex((c) => c?.name === name) > -1) return;\n\t\t\tconst outfit = checkActiveOutfit(name)?.name;\n\t\t\ttmp.push({ name, outfit });\n\t\t});\n\t\tcharacters = tmp;\n\t};\n\n\tonMount(async () => {\n\t\tgetCharacter();\n\t\tOverlayScrollbars(scrollable, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n<ModalTpl dark wide confirm={false} on:cancel={togglePic} title=\"Change Avatar\">\n\t<div class=\"changeAvatar\">\n\t\t<div class=\"avatars\" bind:this={scrollable}>\n\t\t\t{#if characters.length < 1}\n\t\t\t\t<div class=\"no-char\">\n\t\t\t\t\t<span> No Character to show</span>\n\t\t\t\t</div>\n\t\t\t{:else}\n\t\t\t\t<div class=\"avatar-list\">\n\t\t\t\t\t{#each characters as { name, outfit }}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"item\"\n\t\t\t\t\t\t\tclass:selected={avatarName === name}\n\t\t\t\t\t\t\ton:click={() => previewAvatar({ name, outfit })}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t<img src={$assets[`face/${outfit || name}`]} alt={outfit || name} />\n\t\t\t\t\t\t\t</figure>\n\t\t\t\t\t\t\t{#if activeAvatar?.name === name}\n\t\t\t\t\t\t\t\t<span>Current</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t\t<div class=\"preview\">\n\t\t\t<div class=\"selected\">\n\t\t\t\t<div class=\"item\">\n\t\t\t\t\t<figure>\n\t\t\t\t\t\t{#if avatarName}\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={$assets[\n\t\t\t\t\t\t\t\t\t`face/${\n\t\t\t\t\t\t\t\t\t\tselectedChar.outfit ||\n\t\t\t\t\t\t\t\t\t\tselectedChar.name ||\n\t\t\t\t\t\t\t\t\t\tactiveAvatar?.outfit ||\n\t\t\t\t\t\t\t\t\t\tactiveAvatar?.name\n\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\talt={avatarName}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<i class=\"gi-user\" />\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</figure>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"info\">\n\t\t\t\t<div class=\"name\">\n\t\t\t\t\t<caption>\n\t\t\t\t\t\t{#if avatarName}\n\t\t\t\t\t\t\t<span>{$t(`${avatarName}.name`)}</span>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<span> Choose Avatar</span>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</caption>\n\t\t\t\t</div>\n\t\t\t\t<ButtonModal\n\t\t\t\t\tlight\n\t\t\t\t\tdisabled={selectedChar?.name === activeAvatar?.name || !selectedChar?.name}\n\t\t\t\t\ton:click={setAvatar}\n\t\t\t\t>\n\t\t\t\t\tUse\n\t\t\t\t</ButtonModal>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ModalTpl>\n\n<style>\n\t.changeAvatar {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tpadding: 0 4% 3%;\n\t}\n\n\t.avatars {\n\t\twidth: 70%;\n\t\tbackground-color: #41495b;\n\t\tpadding: 2%;\n\t}\n\t.avatar-list {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: flex-start;\n\t\talign-items: flex-start;\n\t}\n\n\t.no-char {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.item {\n\t\twidth: 24%;\n\t\taspect-ratio: 1/1;\n\t\tborder-radius: 0.3rem;\n\t\tmargin: 0.2%;\n\t\tpadding: 3.5%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t\ttransition: 0.2s;\n\t}\n\n\t.item.selected,\n\t.item:hover {\n\t\tbackground-color: #ece5d8;\n\t}\n\n\t.item span {\n\t\tposition: absolute;\n\t\tbottom: 5%;\n\t\tcolor: #ece5d8;\n\t\tbackground-color: #41495b;\n\t\tfont-size: small;\n\t\ttransition: 0.2s;\n\t}\n\n\t.item.selected span,\n\t.item:hover span {\n\t\tbackground-color: #ece5d8;\n\t\tcolor: #383b40;\n\t}\n\n\tfigure,\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t}\n\n\tfigure {\n\t\tborder-radius: 100%;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackground-color: #d19d78;\n\t\tbox-shadow: rgb(0 0 0 / 15%) 0px 0px 5px 5px;\n\t\tborder: 0.15rem solid #f1ebe1;\n\t}\n\n\tfigure i {\n\t\tfont-size: 400%;\n\t\topacity: 0.8;\n\t}\n\n\timg {\n\t\tborder-radius: 100%;\n\t\toverflow: hidden;\n\t}\n\n\t.preview {\n\t\twidth: 30%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.preview .selected {\n\t\theight: 70%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\t.selected .item {\n\t\twidth: 70%;\n\t}\n\t.selected .item:hover {\n\t\tbackground-color: unset;\n\t}\n\n\t.preview .info {\n\t\theight: 40%;\n\t\tpadding: 0 10% 10%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: flex-end;\n\t}\n\n\t.preview .name caption {\n\t\tdisplay: block;\n\t\tcolor: #d3bd8f;\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(51, 57, 71, 0),\n\t\t\trgba(51, 57, 71, 1),\n\t\t\trgba(51, 57, 71, 0)\n\t\t);\n\t\tpadding: 3%;\n\t\tmargin-bottom: 10%;\n\t\twidth: 100%;\n\t\tborder-top: 1px solid rgba(210, 198, 156, 0.6);\n\t\tborder-bottom: 1px solid rgba(210, 198, 156, 0.6);\n\t}\n\n\t@media screen and (max-width: 620px) {\n\t\t.changeAvatar {\n\t\t\tflex-direction: column;\n\t\t}\n\t\t.avatars {\n\t\t\twidth: 100%;\n\t\t\theight: 70%;\n\t\t}\n\n\t\t.preview {\n\t\t\tflex-direction: row;\n\t\t\twidth: 100%;\n\t\t\theight: 30%;\n\t\t}\n\n\t\t.preview .selected {\n\t\t\theight: unset;\n\t\t\twidth: 50%;\n\t\t}\n\n\t\t.preview .info {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.preview .name {\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t\t.preview .name caption {\n\t\t\tmargin-bottom: -10%;\n\t\t}\n\n\t\t.info :global(button) {\n\t\t\twidth: unset;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_changeNick.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport Badwords from '$lib/helpers/chat/badwords';\n\timport ModalTpl from '../ModalTpl.svelte';\n\n\tlet error = false;\n\tlet errorMsg = '';\n\tlet newName = cookie.get('nickName') || cookie.get('travelerID');\n\tconst toggleNick = getContext('toggleNick');\n\n\tconst setName = () => {\n\t\tlet newNick = newName.trim();\n\t\tif (newNick === '') return;\n\t\tif (/[,./\\\\=+#@~` *\":;_$^?$%&<>[\\]{}()|]/.test(newNick)) {\n\t\t\terror = true;\n\t\t\terrorMsg = 'Illegal character detected';\n\t\t\treturn;\n\t\t}\n\t\tif (Badwords.hasBadword(newNick)) {\n\t\t\terror = true;\n\t\t\terrorMsg = 'Badword Detected, Use different Name!';\n\t\t\treturn;\n\t\t}\n\t\ttoggleNick();\n\t\tcookie.set('nickName', newNick);\n\t};\n</script>\n\n<ModalTpl show dark on:cancel={toggleNick} title=\"Edit Nickname\" on:confirm={setName}>\n\t<div class=\"input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tclass=\"wishinput\"\n\t\t\tplaceholder=\"Input Nickname\"\n\t\t\tmaxlength=\"15\"\n\t\t\tclass:error\n\t\t\tbind:value={newName}\n\t\t\ton:input={() => (error = false)}\n\t\t/>\n\t\t{#if error}\n\t\t\t<div class=\"warning\" transition:fade={{ duration: 250 }}>{errorMsg}</div>\n\t\t{/if}\n\t</div>\n</ModalTpl>\n\n<style>\n\t.input {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\tinput {\n\t\twidth: 70%;\n\t\ttext-align: center;\n\t}\n\n\t.warning {\n\t\tposition: absolute;\n\t\ttop: 65%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tcolor: #fff;\n\t\tbackground-color: #ee6c4c;\n\t\tfont-size: x-small;\n\t\tpadding: 1% 3%;\n\t\tborder-radius: 0.3rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_chats.svelte",
    "content": "<script>\n\timport { afterUpdate, beforeUpdate, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { assets } from '$lib/store/app-stores';\n\timport Messagebox from './_messagebox.svelte';\n\n\texport let userId;\n\texport let messages = [];\n\texport let pro = false;\n\n\tlet chatlist;\n\tlet autoscroll;\n\tlet newUpdate = false;\n\n\tconst isAdmin = (id, nick) => id === 'nang441' && nick === 'nang441';\n\tconst scrollToBottom = (behavior) => {\n\t\tconst last = messages[messages.length - 1]?.key;\n\t\tconst el = chatlist.querySelector(`#${last}`);\n\t\tel.scrollIntoView({ behavior });\n\t};\n\n\tconst autoscrollCheck = () => {\n\t\tconst chatListHeight = chatlist.offsetHeight + chatlist.scrollTop;\n\t\tautoscroll = chatListHeight > chatlist.scrollHeight - 20;\n\t\tif (chatListHeight <= chatlist.scrollHeight) {\n\t\t\tnewUpdate = false;\n\t\t}\n\t};\n\tonMount(() => scrollToBottom('instant'));\n\n\tbeforeUpdate(() => {\n\t\tif (!chatlist) return;\n\t\tautoscrollCheck();\n\t\tif (autoscroll) return;\n\t\tnewUpdate = true;\n\t});\n\n\tafterUpdate(() => {\n\t\tif (autoscroll) scrollToBottom('smooth');\n\t});\n</script>\n\n<div class=\"messages\" in:fade={{ duration: 300 }} bind:this={chatlist} on:scroll={autoscrollCheck}>\n\t{#each messages as { uid, name, pic, pro, message, key }, i}\n\t\t<div\n\t\t\tclass=\"group\"\n\t\t\tclass:nopic={!pic}\n\t\t\tclass:me={uid === userId}\n\t\t\tclass:special={isAdmin(uid, name)}\n\t\t\tid={key}\n\t\t>\n\t\t\t<div class=\"picture\">\n\t\t\t\t<figure>\n\t\t\t\t\t{#if isAdmin(uid, name)}\n\t\t\t\t\t\t<img src=\"/images/utility/admin.webp\" alt=\"Admin\" />\n\t\t\t\t\t{:else if pic}\n\t\t\t\t\t\t<img src={$assets[`face/${pic}`]} alt=\"Profile\" />\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<i class=\"gi-user\" />\n\t\t\t\t\t{/if}\n\t\t\t\t</figure>\n\t\t\t</div>\n\n\t\t\t<div class=\"message\">\n\t\t\t\t<div class=\"sender reverse\">\n\t\t\t\t\t{#if isAdmin(uid, name)}\n\t\t\t\t\t\t<span class=\"name\">Admin</span>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<span class=\"name\">{name || uid}</span>\n\t\t\t\t\t{/if}\n\t\t\t\t\t{#if pro || isAdmin(uid, name)}\n\t\t\t\t\t\t<span class=\"pro\"><i class=\"gi-win\" /></span>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"text\">\n\t\t\t\t\t<p>{message}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t{#if i === 0}\n\t\t\t<div class=\"divider\">\n\t\t\t\t<span />\n\t\t\t</div>\n\t\t{/if}\n\t{/each}\n</div>\n{#if newUpdate}\n\t<div class=\"jump\">\n\t\t<button transition:fade on:click={() => scrollToBottom('smooth')}>\n\t\t\t<i class=\"gi-arrow-right\" />\n\t\t</button>\n\t</div>\n{/if}\n<Messagebox {userId} {pro} />\n\n<style>\n\t.messages {\n\t\toverflow-y: auto;\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n\n\t.messages::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.group {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\theight: fit-content;\n\t\tmargin-bottom: 4%;\n\t}\n\n\t.group.me {\n\t\tflex-direction: row-reverse;\n\t\tjustify-content: right;\n\t}\n\n\t.picture {\n\t\twidth: 14%;\n\t}\n\tfigure {\n\t\twidth: 100%;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #3b4255;\n\t\tborder-radius: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\toverflow: hidden;\n\t}\n\t.nopic figure {\n\t\tbackground-color: rgba(210, 198, 156, 1);\n\t}\n\t.special .name {\n\t\tbackground-color: #0087cb;\n\t\tpadding: 0 4%;\n\t\tfont-size: 80%;\n\t\tcolor: #fff;\n\t\tborder-radius: 2rem;\n\t}\n\t.special .pro {\n\t\tbackground-color: #f9aa02;\n\t}\n\t.special figure {\n\t\tborder: rgba(210, 198, 156, 1) solid 0.1rem;\n\t}\n\n\tfigure i {\n\t\tfont-size: x-large;\n\t\tcolor: #3b4255;\n\t}\n\n\tfigure img {\n\t\twidth: 100%;\n\t\theight: auto;\n\t}\n\n\t.message {\n\t\tpadding: 0 5%;\n\t\twidth: 86%;\n\t}\n\t.message span {\n\t\tmargin-right: 3%;\n\t}\n\t.sender {\n\t\tdisplay: flex;\n\t}\n\t.me .sender {\n\t\tflex-direction: row-reverse;\n\t\tjustify-content: right;\n\t}\n\t.pro {\n\t\tbackground-color: #0087cb;\n\t\tcolor: #fff;\n\t\taspect-ratio: 1/1;\n\t\twidth: 1.3rem;\n\t\tline-height: 0;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttransform: rotate(45deg) scale(0.7);\n\t}\n\t.pro i {\n\t\ttransform: rotate(-45deg);\n\t}\n\t.name {\n\t\tcolor: #bbbcc1;\n\t\tfont-size: 90%;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.text {\n\t\tdisplay: flex;\n\t}\n\t.me .text {\n\t\tjustify-content: right;\n\t}\n\n\t.text p {\n\t\tbackground-color: #454b5d;\n\t\tcolor: #fff;\n\t\tpadding: 2.3% 4%;\n\t\tmargin-top: 2%;\n\t\tfont-size: 80%;\n\t\tborder-radius: 0.9rem;\n\t\tborder-top-left-radius: 0;\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\tword-wrap: break-word;\n\t\twhite-space: pre-wrap;\n\t\tmax-width: 100%;\n\t\tfont-family: var(--gi-global-font);\n\t}\n\n\t.me .text p {\n\t\tbackground-color: #d7d1c7;\n\t\tcolor: #3b4255;\n\t\tborder-top-left-radius: 0.9rem;\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t.divider {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 5%;\n\t}\n\n\t.divider span {\n\t\tborder-bottom: rgba(210, 198, 156, 1) solid 0.5px;\n\t\twidth: 20%;\n\t}\n\n\t.jump {\n\t\theight: 0;\n\t\tposition: relative;\n\t}\n\t.jump button {\n\t\tborder-radius: 100%;\n\t\taspect-ratio: 1/1;\n\t\twidth: 9%;\n\t\tposition: absolute;\n\t\tcolor: #d7d1c7;\n\t\tleft: 50%;\n\t\tbottom: 0;\n\t\tdisplay: inline-flex;\n\t\tjustify-self: center;\n\t\talign-items: center;\n\t\ttransform: translateX(-50%) translateY(-20%) rotate(90deg);\n\t\tline-height: 0;\n\t\ttransition: 0.4s;\n\t}\n\t.jump i {\n\t\tanimation: alternate 1s arrow infinite;\n\t\tfont-size: 170%;\n\t}\n\n\t.jump button:hover {\n\t\tcolor: #fff;\n\t}\n\t.jump button:active {\n\t\ttransform: translateX(-50%) translateY(-20%) rotate(90deg) scale(0.8);\n\t}\n\n\t@keyframes arrow {\n\t\t0% {\n\t\t\ttransform: translateX(0%);\n\t\t}\n\n\t\t100% {\n\t\t\ttransform: translateX(50%);\n\t\t}\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.text p {\n\t\t\tfont-size: 120%;\n\t\t\tmargin-top: 0%;\n\t\t}\n\t\t.name {\n\t\t\tfont-size: 110%;\n\t\t}\n\t\t.pro {\n\t\t\ttransform: rotate(45deg) scale(0.6);\n\t\t\tfont-size: medium;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_loader-chat.svelte",
    "content": "<script>\n\tlet activeIconIndex = 0;\n\tconst iconList = ['pyro', 'hydro', 'anemo', 'electro', 'dendro', 'cryo', 'geo'];\n\n\tsetInterval(() => {\n\t\tactiveIconIndex = activeIconIndex === iconList.length - 1 ? 0 : activeIconIndex + 1;\n\t}, 1500);\n</script>\n\n<div class=\"initializing\">\n\t<div class=\"icons\">\n\t\t{#each iconList as element, i}\n\t\t\t<span class=\"icon\" class:active={activeIconIndex === i}>\n\t\t\t\t<i class=\"gi-{element} {element}-flat\" />\n\t\t\t</span>\n\t\t{/each}\n\t</div>\n\t<caption>\n\t\t<span>Initializing</span>\n\t</caption>\n</div>\n\n<style>\n\t.initializing {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\ti {\n\t\tfont-size: 300%;\n\t}\n\n\tspan.icon {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%) translateY(-50%);\n\t\topacity: 0;\n\t\ttransition: 1s;\n\t}\n\n\tspan.icon.active {\n\t\topacity: 1;\n\t}\n\n\tcaption {\n\t\tcolor: rgba(210, 198, 156, 1);\n\t\tfont-size: 80%;\n\t\tposition: absolute;\n\t\ttop: 57%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\tcaption span::after {\n\t\tcontent: '';\n\t\tpadding-left: 2%;\n\t\tanimation: infinite dot 2s;\n\t}\n\n\t@keyframes dot {\n\t\t0% {\n\t\t\tcontent: '';\n\t\t}\n\t\t25% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t50% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t75% {\n\t\t\tcontent: '...';\n\t\t}\n\t\t100% {\n\t\t\tcontent: '...';\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_messagebox.svelte",
    "content": "<script>\n\timport { push, ref } from 'firebase/database';\n\timport { db } from '$lib/helpers/chat/firebaseApp';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport Badwords from '$lib/helpers/chat/badwords';\n\timport ButtonModal from '../ButtonModal.svelte';\n\n\texport let userId;\n\texport let pro = false;\n\tlet isOnline = true;\n\n\t// Write to DB\n\tconst writeUserData = (userId, message) => {\n\t\tconst char = cookie.get('avatar');\n\t\tpush(ref(db, 'wishsim-chatroom'), {\n\t\t\tuid: userId,\n\t\t\tname: cookie.get('nickName'),\n\t\t\tpic: char.outfit || char.name,\n\t\t\tpro,\n\t\t\tmessage\n\t\t});\n\t};\n\n\tconst removeUrl = (text) => {\n\t\tlet urlRegex =\n\t\t\t/(https?:\\/\\/)?[\\w\\-~]+(\\.[\\w\\-~]+)+(\\/[\\w\\-~@:%]*)*(#[\\w-]*)?(\\?[^\\s]*)?(\\.[\\w\\-~]+)?/gi;\n\t\treturn text.replace(urlRegex, '~𝘣𝘭𝘰𝘤𝘬𝘦𝘥 𝘭𝘪𝘯𝘬~');\n\t};\n\n\tlet msgInput;\n\tconst send = () => {\n\t\tif (!msgInput || !isOnline) return;\n\t\tconst urlRemoved = removeUrl(msgInput);\n\t\twriteUserData(userId, Badwords.clean(urlRemoved));\n\t\tmsgInput = '';\n\t\tplaySfx();\n\t};\n\n\tconst offlineHandle = () => {\n\t\tisOnline = !isOnline;\n\t};\n</script>\n\n<svelte:window on:offline={offlineHandle} on:online={offlineHandle} />\n\n<form class=\"message-box\" on:submit|preventDefault>\n\t<div class=\"input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tclass=\"wishinput\"\n\t\t\tplaceholder=\"Click to Enter\"\n\t\t\tmaxlength=\"200\"\n\t\t\tbind:value={msgInput}\n\t\t/>\n\t</div>\n\t<div class=\"col\" style=\"margin-left: 2%\">\n\t\t<ButtonModal light width=\"100px\" on:click={send} disabled={!isOnline}>\n\t\t\t{#if isOnline}\n\t\t\t\t<span style=\"margin-right: -20%;\">Send</span>\n\t\t\t{:else}\n\t\t\t\t<span style=\"margin-right: -20%;\"> ... </span>\n\t\t\t{/if}\n\t\t</ButtonModal>\n\t</div>\n</form>\n\n<style>\n\t.message-box {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tborder-top: 1px solid rgba(210, 198, 156, 0.5);\n\t\tpadding-top: 4%;\n\t}\n\t.input {\n\t\twidth: 100%;\n\t}\n\n\tspan {\n\t\twidth: fit-content;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/chat/_sidebar.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\n\tconst close = getContext('chatToggle');\n</script>\n\n<div class=\"sidebar\" on:click|stopPropagation transition:fly={{ x: -50, duration: 100 }}>\n\t<div class=\"top\">\n\t\t<button class=\"close\" on:click={close}>\n\t\t\t<i class=\"gi-reply\" />\n\t\t</button>\n\t</div>\n\t<div class=\"nav-item\">\n\t\t<a href=\"#chat\" class=\"link active\" on:click|preventDefault>\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-team\" />\n\t\t\t\tWishSimulator.App\n\t\t\t</span>\n\t\t</a>\n\t</div>\n</div>\n\n<style>\n\t.sidebar {\n\t\tmax-width: 220px;\n\t\twidth: 15%;\n\t\tmin-width: 170px;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tbackground-color: rgba(32, 36, 49, 0.6);\n\t\tborder-right: 1px solid rgba(210, 198, 156, 0.6);\n\t\tborder-left: 1px solid rgba(210, 198, 156, 0.6);\n\t\tcolor: #d2c69c;\n\t\tposition: relative;\n\t}\n\n\t@media screen and (max-width: 454px) {\n\t\t.sidebar {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t.top {\n\t\twidth: 100%;\n\t\theight: 60px;\n\t\tbackground-color: #3b4255;\n\t\tpadding: 0 20px 10px;\n\t\tdisplay: flex;\n\t\talign-items: flex-end;\n\t}\n\t:global(.mobile) .top {\n\t\theight: 40px;\n\t\tpadding: 0 20px 0px;\n\t\tmargin-bottom: -10px;\n\t}\n\n\t.gi-reply {\n\t\tfont-size: x-large;\n\t}\n\n\t:global(.mobile) .gi-reply {\n\t\tfont-size: large;\n\t}\n\n\t.nav-item {\n\t\tmargin-top: 20px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tcolor: #f0e4d4;\n\t}\n\n\t.link {\n\t\tposition: relative;\n\t\ttransition: all 0.2s;\n\t\ttext-decoration: none;\n\t\tcolor: #f0e4d4;\n\t\taspect-ratio: 70/17.5;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding-left: 5%;\n\t\tz-index: 1;\n\t}\n\n\t@media screen and (min-width: 900px) {\n\t\t.link {\n\t\t\tfont-size: 80%;\n\t\t}\n\t}\n\n\t.link i {\n\t\tfont-size: 1.3rem;\n\t\tdisplay: inline-block;\n\t\tmargin-right: 10px;\n\t\topacity: 0.8;\n\t}\n\t:global(.mobile) .link i {\n\t\tfont-size: 1.4rem;\n\t}\n\n\t.link.active,\n\t.link:hover {\n\t\tbackground-color: #414856;\n\t\tborder-radius: 0.25rem;\n\t}\n\n\t.link::after,\n\t.link::before,\n\tspan::after,\n\tspan::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tbackground-size: contain;\n\t\tdisplay: block;\n\t}\n\n\t.link.active::before {\n\t\ttop: 50%;\n\t\tright: -3%;\n\t\theight: 100%;\n\t\taspect-ratio: 1/1;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tz-index: -1;\n\t\tline-height: 120%;\n\t\tbackground-color: #414856;\n\t\tborder-radius: 100%;\n\t}\n\n\t.link.active::after {\n\t\ttop: 50%;\n\t\tright: -1%;\n\t\twidth: 100%;\n\t\taspect-ratio: 708/156;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAACcCAMAAABPyU0CAAAAOVBMVEUAAADTu4vUvI7Uuo3TvI7TvI7UvI7TvozTu43TvI7Su47Pv4/fv43TvI7Tu43SvIzVuo3UvI/TvI7Io+VzAAAAEnRSTlMAQL9goL/eIHDvsBAQkIBQML8hIpUyAAADO0lEQVR42uzd22oCMRSG0dixM2oVZb//wzaOhzoWerjzh7VAxfuPkExibD9ZF7yg97YgYvKImHj/jHho8FJWIiadiIknYuKJmHgiJp6IiSdi4omYeL9G/FYLIublrOqZiAkjYuL9JeJVgxwiJp6IiSdi4omYeCImnoiJJ2LiiZh4IiaeiIknYuKJmHgiJp6IiSdi4omYeCImnoiJJ2LiiZh4Iibet4inrYjJ8hzxfqwaPxrkeI74ULWdGgR5injo3zcNkiwjnsaqdYMoy4jXVaPJBGEWEQ+uDyTQImKTCRI9RrwxmSDRQ8TTaDJBoh7x46quQZyviCerOjL1cg3EZLtHPG0NxGS6RzwYiAl1j9ijCVLdIj4aiEl1i3hns45U14in/mmzjkzXiIeq9waRrhG/WdYRq0dsNkG2Xq/ZBNkuEe/8so5cl4jHqlODTHPEJzsdBJsjHqp2DULNEa9NiQk2Rzy6fo1gPeL5bd8gVO/Xuo5s54iPtjpIdo54U3VokOoc8cHDCZKdI95VHRuk6hH7lw6y9YidnCDbHLHDxCTrEc8viCVi4omYeCImnoiJJ2LiecRGPBETz7Yz8eYDQO6wIpmjmMT7bO8OU1oHwgCKpiCtIdDHy/4XKxOjOFUQ//XCOWu4hJkk34yf4sk7xpMcO0HZiPhmUJQyI/vkOTyFPMdYkXdE/GpnR9gR8W3f1wWijoiX1agoXSNii2LSXDxD3nvEmzfFdJ1THf+tJ8g6I361niDrjHhzpShZI+JzPXFfoOgj4su+r7Z2JI2ID6sZJaI+I77b2hH1GfG2+h+TphGxRzFpI2KPYtJGxKe7UTuSvkS8rb49UzQi/nD3rpii6VjX676/LBAzRXzZ7e3omSIeRwteLSiImSPeVgsKcuaIl3+7NxTUPEQ8jnld/VhMymPE29WymJgR8eTm6zMx3yJ2gwc1IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8n6KeOJSJZ7OZZ+ImB4Rk/drxLMXEfN0Lt9u+hIxMSImT8TkiZg8EZMnYvJETJ6IyftzxPCEREyeiMl7iPgNPx9ffAKGWGIAAAAASUVORK5CYII=');\n\t\tbackground-repeat: no-repeat;\n\t\topacity: 0.5;\n\t}\n\n\tspan {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 95%;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\tspan :global(i) {\n\t\tline-height: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/lib/components/svgs/Anemo.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,-5.68434e-14,10)\">\n\t\t<circle cx=\"200\" cy=\"200\" r=\"200\" style=\"fill:url(#_RadialAnemo);\" />\n\t</g>\n\t<path\n\t\td=\"M200.023,249.356C201.285,221.689 254.948,199.235 287.064,181.699C338.894,153.398 346.889,76.826 346.889,76.826C346.889,76.826 364.313,105.277 364.313,140.952C364.313,196.476 299.029,208 271.459,211.97C243.89,215.94 206.396,236.893 206.396,270.417C206.396,303.941 244.13,309.656 244.13,309.303C256.481,297.305 269.714,304.892 269.538,305.069C235.674,324.592 201.454,397.068 200.045,400.075L200.045,400.171L200.023,400.123L200,400.171L200,400.075C198.591,397.068 164.371,324.592 130.507,305.069C130.331,304.892 143.564,297.305 155.915,309.303C155.915,309.656 193.649,303.941 193.649,270.417C193.649,236.893 156.155,215.94 128.586,211.97C101.017,208 35.733,196.476 35.733,140.952C35.733,105.277 53.156,76.826 53.156,76.826C53.156,76.826 61.151,153.398 112.982,181.699C145.097,199.235 198.761,221.689 200.023,249.356ZM200.023,327.478C199.597,328.03 193.149,336.189 183.025,338.109C183.025,338.109 199.341,356.361 200.023,373.342C200.704,356.361 217.02,338.109 217.02,338.109C206.896,336.189 200.448,328.03 200.023,327.478ZM200.023,294.038C199.292,305.884 181.001,321.411 169.67,321.411C169.67,321.501 174.368,323.85 179.788,323.85C185.19,323.85 195.746,320.351 200,314.428L200,314.364L200.023,314.396L200.045,314.364L200.045,314.428C204.299,320.351 214.856,323.85 220.257,323.85C225.677,323.85 230.375,321.501 230.375,321.411C219.044,321.411 200.753,305.884 200.023,294.038ZM263.096,280.004C246.299,280.004 231.619,274.781 231.619,259.113C231.619,243.445 243.335,236.81 253.639,236.81C269.589,236.81 297.397,259.96 327.604,259.96C357.811,259.96 392.045,231.658 392.045,184.68C392.045,167.698 386.752,153.803 386.752,153.803C386.752,153.803 360.065,195.046 340.656,206.294C321.247,217.543 306.911,219.969 285.297,219.969C263.683,219.969 220.013,227.027 220.013,267.167C220.013,283.709 232.364,296.06 246.7,296.06C265.666,296.06 263.096,280.342 263.096,280.004ZM136.949,280.004C153.746,280.004 168.426,274.781 168.426,259.113C168.426,243.445 156.711,236.81 146.406,236.81C130.456,236.81 102.648,259.96 72.441,259.96C42.234,259.96 8,231.658 8,184.68C8,167.698 13.293,153.803 13.293,153.803C13.293,153.803 39.98,195.046 59.389,206.294C78.798,217.543 93.134,219.969 114.748,219.969C136.362,219.969 180.032,227.027 180.032,267.167C180.032,283.709 167.681,296.06 153.345,296.06C134.379,296.06 136.949,280.342 136.949,280.004ZM217.303,199.715C217.303,199.715 312.651,128.929 263.975,21.808C263.614,21.447 323.1,37.66 323.1,103.998C325.684,181.537 217.303,199.715 217.303,199.715ZM182.742,199.715C182.742,199.715 87.394,128.929 136.071,21.808C136.431,21.447 76.945,37.66 76.945,103.998C74.361,181.537 182.742,199.715 182.742,199.715Z\"\n\t\tstyle=\"fill:rgb(166,243,203);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialAnemo\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,200)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(68,183,136);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(68,185,137);stop-opacity:0.73\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(69,191,141);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Bow.svelte",
    "content": "<svg\n\tviewBox=\"0 0 128 128\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"\n>\n\t<g transform=\"matrix(0.94442,0,0,0.94442,4.27757,-0.4701)\">\n\t\t<g transform=\"matrix(1.05885,-0,-0,1.05885,-4.52931,0.497767)\">\n\t\t\t<use\n\t\t\t\txlink:href=\"#_ImageBow1\"\n\t\t\t\tx=\"20.069\"\n\t\t\t\ty=\"20.019\"\n\t\t\t\twidth=\"45.409px\"\n\t\t\t\theight=\"45.382px\"\n\t\t\t\ttransform=\"matrix(0.987158,0,0,0.986573,0,0)\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.94442,0,0,0.94442,4.27757,-0.4701)\">\n\t\t<g transform=\"matrix(1.05885,-0,-0,1.05885,-4.52931,0.497767)\">\n\t\t\t<use\n\t\t\t\txlink:href=\"#_ImageBow2\"\n\t\t\t\tx=\"39.941\"\n\t\t\t\ty=\"60.407\"\n\t\t\t\twidth=\"68.523px\"\n\t\t\t\theight=\"48.243px\"\n\t\t\t\ttransform=\"matrix(0.993092,0,0,0.984541,0,0)\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.954497,0,0,0.954497,4.40699,-0.764803)\">\n\t\t<g transform=\"matrix(1.04767,-0,-0,1.04767,-4.61708,0.801263)\">\n\t\t\t<use\n\t\t\t\txlink:href=\"#_ImageBow3\"\n\t\t\t\tx=\"72.762\"\n\t\t\t\ty=\"44.826\"\n\t\t\t\twidth=\"17.055px\"\n\t\t\t\theight=\"17.055px\"\n\t\t\t\ttransform=\"matrix(0.947507,0,0,0.947507,0,0)\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.667805,-0.667805,0.667805,0.667805,-24.1918,61.0036)\">\n\t\t<path\n\t\t\td=\"M4,64L7,67L10,64L7,61L10,58L12,60L19.942,60L22,58L30,66L100,66L102,64L100,62L105,57L128,68.934L105,80.868L100,75.868L102,73.868L100,71.868L30,71.868L22,79.868L20,78L12,78L10,80L7,77L10,73.868L7,70.868L4,73.868L-1,68.934L4,64Z\"\n\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:1.06px;\"\n\t\t/>\n\t</g>\n\t<defs>\n\t\t<image\n\t\t\tid=\"_ImageBow1\"\n\t\t\twidth=\"46px\"\n\t\t\theight=\"46px\"\n\t\t\txlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFJUlEQVRogdWYS2wbRRjH/9/MxGsndRLbaZun0qRNQ+IEyVQp9ElLERceKvTAAYTgUvXCBQmkWtpaG6urilIOcOCCxAUJhITgiEQrHgda0VatkFLaRGrjtKlKorzIw7G9M8OhSaidNLbzsNPfbXd25vvp8+zs54+wzpiWLQA0AtjJOW9jjNUBCCitKpRUZQBo7lGttf40Ggn/lMu6Yh1ECUAH5/wIMQpJR9a6XK5Upa8Sfr/f4/F4YLgNuA03XIYLBIKGxs2/b6pYfyyQa5w1EZ+T7eScv6i1PmQYhqirrzM2b97MKioqIEpE1jic87xirkrctGw3ER0jojcNw+D1DfXu2rpa5vV6V7NsTqxI3LRsg4iOEtE7VVVVvLWt1aioqFhrt2XJS9y0bBcRvUpE7/oDftHW3uYutPA8OYublt3JOOv2VfrcbcE2d2Vl5Xp6ZSWruGnZxBh7i4jeDu0KGdXV1YXwysqy4qZll3PBrVJP6VNdz3YZpaWlhfLKymPFTcsOMsZONzQ0lLYH20sYY4X0ysqS4pHomTeI6HjomZBRXbMxtkYmi8RNy36Jc358/8H9RllZWTGcciLt9zctu4tz/sHefXs3tDTwSMZNy25ljEV3P7fb8Jav/5dvpcwVbS+IuYs6xti50K6QEQjkXOcUBc75CSnlMWZato9z/ll7sN1TU1NTbK9lMS17DzF6BQAYF/xcU3NT+bambRvrvMvAtOwtjDGzq6vLAAAhHdnYsrOl6NJEBMbYa9322T1LjSulana07HD5A34AWb6cWmuMjIxgYnwCo6Oj8Xg8rlYj5/f7RUdnh7HUWHNzM/P7/VsAbFlqnHOOQNX/799jxePxOC7/eXl2ZnpmXGt9VUrZA+AfAHqF3vWpZOpER2fHkoOG28DW6q1ZF9H6YfglxcfHxnHxj4tJrfU3Sqmvo5HwqjINAKZlT612jUdZJC6lxJUrVxJSyk+ikfD5tQy2lix6Kft6+xwn5fwF4EIRfHImTVwrjf47/cpxnM+jkfBK93JBSBMfHh4GgAfRSPhucXRyJ018aGjIcRxnQ2+RedLEJycnkwAGiuSSF2ni09PTADBYHJX8WBDXWiMxmzDwhIgvnOPJRBJElOo+dXKmmEK5spBxpRWIyCmmTD6kn+NaF71KzJUFUVpoUz8ZPDEZzmTNG/vLkUqlSvp6+/KawxhD47ZGiIwWeyHFB6WU3/Xe6s0rJhG9HAgENlX60pus+XRrmzjnR+evpZQ/RCPh/lznRyPhGQBf5vr8PN322f0ANmXez1lcCPF+TW1NyOv1YmBgwJmanLoFoD9fkbUiJ3HTsquUUp3BYBCiRODe3XtJAEPr7AYA0Fqrnp6ehMvlevgv7GGx7VmuW1sKwE9Ee4jove07titRIiClxOTkpAHgRiHEHcc5MzY6Vp9x+1/BOY/Pzs6Wcc6hlPJYpz/+Xkrp1Vpzl8uVLC8v18GOoGe+LTc2NgYu+GAk/FFBSoNoJHwDSyRJENGl+4P3D7fsbGH7DuwjIYTfbbhR4ioBAHfmhN5bvQkl1c8FcF4W5jjOj7dv304lZhPw+Xzwer3z0ouI9cf0xPjEsFLq2wJ7LoL//uuFoYOHjhiD9wZba+tqReZBP8/U1BSuXr6alFJ+GI2ERwrsuQgOAL/9cv7agecP81gs1ialZIILIiIopTAxMYHYnZi8fu26A+CL7lMnLxXZGQDSKyvTsls5568T0dNKKZ/WWnDBH2ilb0gpv4pGwg+KJZrJf37ysujOFyKWAAAAAElFTkSuQmCC\"\n\t\t/>\n\t\t<image\n\t\t\tid=\"_ImageBow2\"\n\t\t\twidth=\"69px\"\n\t\t\theight=\"49px\"\n\t\t\txlink:href=\"data:image/png;base64,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\"\n\t\t/>\n\t\t<image\n\t\t\tid=\"_ImageBow3\"\n\t\t\twidth=\"18px\"\n\t\t\theight=\"18px\"\n\t\t\txlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAW0lEQVQ4je3UsQ2AMBBDURs5XcYKa1HQMBBlbqx0RDoKlAVyElV+71eax3nd7p4RiGSTu+eyFyhpCulPh1XLAgAlQZqDRltovaAFLeh3SMB3BbONrUg2qxY+theCJRmnxjtu3QAAAABJRU5ErkJggg==\"\n\t\t/>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Catalyst.svelte",
    "content": "<svg\n\tviewBox=\"0 0 128 128\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"\n>\n\t<g>\n\t\t<g transform=\"matrix(1.2822,0,0,1.2822,-28.2205,-18.909)\">\n\t\t\t<circle cx=\"70.545\" cy=\"64.661\" r=\"9.273\" style=\"fill:rgb(201,207,210);fill-opacity:0.75;\" />\n\t\t</g>\n\t\t<g transform=\"matrix(1.14367,0,0,1.14367,-11.8482,-9.37487)\">\n\t\t\t<g transform=\"matrix(0.874382,-0,-0,0.874382,10.3599,8.19722)\">\n\t\t\t\t<use\n\t\t\t\t\txlink:href=\"#_ImageCatalyst1\"\n\t\t\t\t\tx=\"2.102\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"123.803px\"\n\t\t\t\t\theight=\"128px\"\n\t\t\t\t\ttransform=\"matrix(0.99841,0,0,1,0,0)\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</g>\n\t\t<g transform=\"matrix(1.14367,0,0,1.14367,-11.8482,-9.37487)\">\n\t\t\t<path\n\t\t\t\td=\"M48.349,46.587C52.573,42.417 58.375,39.841 64.774,39.841C77.681,39.841 88.159,50.319 88.159,63.226C88.159,76.132 77.681,86.61 64.774,86.61C51.868,86.61 41.39,76.132 41.39,63.226C41.39,58.303 42.914,53.734 45.516,49.964\"\n\t\t\t\tstyle=\"fill:none;stroke:rgb(125,129,134);stroke-opacity:0.75;stroke-width:0.87px;\"\n\t\t\t/>\n\t\t</g>\n\t\t<g transform=\"matrix(1.14367,0,0,1.14367,-11.8482,-9.37487)\">\n\t\t\t<g transform=\"matrix(1.51228,0,0,1.51228,52.5281,5.03589)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M34.246,14.195C32.915,12.864 25.757,18.944 21.513,18.944C17.268,18.944 10.22,12.864 8.779,14.195C7.339,15.526 14.807,22.914 12.868,26.928C8.9,35.14 -10.377,57.377 -15.026,63.467C-8.936,58.818 13.301,39.541 21.513,35.574C25.527,33.634 32.915,41.102 34.246,39.662C35.577,38.221 29.497,31.173 29.497,26.928C29.497,22.684 35.577,15.526 34.246,14.195Z\"\n\t\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:0.58px;\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<g transform=\"matrix(6.12323e-17,-1,1,6.12323e-17,-15.2923,185.711)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M97.754,88.041L92.041,88.041L76.892,78.041L86.892,93.754L86.892,98.903L97.754,98.903L97.754,88.041Z\"\n\t\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:0.87px;\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<g transform=\"matrix(6.12323e-17,-1,1,6.12323e-17,-56.3179,145.506)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M97.754,88.041L92.041,88.041L76.892,78.041L86.892,93.754L86.892,98.903L97.754,98.903L97.754,88.041Z\"\n\t\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:0.87px;\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</g>\n\t\t<defs>\n\t\t\t<image\n\t\t\t\tid=\"_ImageCatalyst1\"\n\t\t\t\twidth=\"124px\"\n\t\t\t\theight=\"128px\"\n\t\t\t\txlink:href=\"data:image/png;base64,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\"\n\t\t\t/>\n\t\t</defs>\n\t</g>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Claymore.svelte",
    "content": "<svg\n\tviewBox=\"0 0 128 128\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"\n>\n\t<g transform=\"matrix(1.05467,0,0,1.05467,-3.23384,2.85124)\">\n\t\t<g transform=\"matrix(0.948159,-0,-0,0.948159,3.06619,-2.70343)\">\n\t\t\t<use\n\t\t\t\txlink:href=\"#_ImageClaymore1\"\n\t\t\t\tx=\"13.668\"\n\t\t\t\ty=\"15.996\"\n\t\t\t\twidth=\"100.736px\"\n\t\t\t\theight=\"112.128px\"\n\t\t\t\ttransform=\"matrix(0.997389,0,0,0.992283,0,0)\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(1.05467,0,0,1.05467,-3.23384,2.85124)\">\n\t\t<g opacity=\"0.75\">\n\t\t\t<path\n\t\t\t\td=\"M45.856,32.338C50.013,29.817 54.708,28.091 59.725,27.374\"\n\t\t\t\tstyle=\"fill:none;stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M70.275,27.374C86.569,29.703 99.455,42.668 101.664,59\"\n\t\t\t\tstyle=\"fill:none;stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M101.664,69C100.152,80.182 93.635,89.785 84.447,95.476\"\n\t\t\t\tstyle=\"fill:none;stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M54.406,99.459C39.14,94.897 28,80.739 28,64C28,57.543 29.658,51.47 32.571,46.183\"\n\t\t\t\tstyle=\"fill:none;stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.745768,-0.745768,0.745768,0.745768,-20.5657,49.2825)\">\n\t\t<path\n\t\t\td=\"M19,64L19,58C19,58 87.41,61.748 91.781,61.988C91.925,61.996 92.065,62.037 92.191,62.107C93.642,62.923 102.964,68.167 106.575,70.198C106.864,70.361 107.044,70.668 107.044,71C107.044,71.332 106.864,71.639 106.575,71.802C102.964,73.833 93.642,79.077 92.191,79.893C92.065,79.963 91.925,80.004 91.781,80.012C87.41,80.252 19,84 19,84L19,78L26,71L19,64Z\"\n\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t/>\n\t\t<g transform=\"matrix(0.707107,0.707107,-0.707107,0.707107,42.75,-19.5097)\">\n\t\t\t<path\n\t\t\t\td=\"M42.651,78.319L93.875,29.882L98.118,29.882L98.118,34.125L49.681,85.349L49.681,86.804L60.288,97.411L57.459,100.239L53.217,100.239L53.217,97.411L43.317,87.511L29.882,100.946L29.882,106.603L17.861,110.139L21.397,98.118L27.054,98.118L40.489,84.683L30.589,74.783L27.761,74.783L27.761,70.541L30.589,67.712L41.196,78.319L42.651,78.319Z\"\n\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:0.95px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<defs>\n\t\t<image\n\t\t\tid=\"_ImageClaymore1\"\n\t\t\twidth=\"101px\"\n\t\t\theight=\"113px\"\n\t\t\txlink:href=\"data:image/png;base64,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\"\n\t\t/>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Cryo.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0,10)\">\n\t\t<circle cx=\"200\" cy=\"200\" r=\"200\" style=\"fill:url(#_RadialCryo);\" />\n\t</g>\n\t<path\n\t\td=\"M199.472,229.418C199.6,232.009 202.185,274.232 235.394,318.921L235.882,318.692C240.929,316.336 246.335,314.425 251.995,313.293C251.996,313.292 251.997,313.291 251.998,313.291L252,313.292L251.995,313.293C251.489,313.577 217.449,359.788 199.423,405.219L199,406.292C199,406.292 181,358.292 146,313.292L146.073,313.299C146.831,313.374 153.406,314.114 163.025,318.602L163.422,318.063C197.094,272.252 199.466,229.292 199.466,229.292L199.472,229.418ZM199.091,268.62L199,269.292C194.101,305.222 183.199,323.148 179.366,328.514C185.591,333.196 192.266,339.311 199,347.292L199.103,347.17C200.058,346.043 207.532,337.289 219.036,328.818C215.416,323.848 204.179,305.93 199.183,269.292L199.091,268.62ZM314.684,216.483C314.677,217.064 337.677,269.649 368.008,307.975L368.726,308.878C368.726,308.878 345.896,305.08 313.79,304.958L312.666,304.955C297.631,304.938 280.625,305.735 263.008,308.097L261.685,308.277C261.669,308.306 265.521,302.68 274.797,296.189C251.974,243.693 215.672,219.975 215.672,219.975L215.784,220.033C217.757,221.045 245.706,234.982 288.332,235.001L288.936,235C295.997,234.981 303.454,234.579 311.258,233.674C311.719,227.951 312.775,222.127 314.684,216.483C314.683,216.48 314.684,216.479 314.685,216.479L314.684,216.483ZM84.071,216.081C84.385,216.775 87.032,222.839 87.954,233.414C95.95,234.325 103.587,234.721 110.812,234.729L111.412,234.729C155.202,234.646 183.519,220.317 183.519,220.317L183.413,220.385C181.234,221.792 145.96,245.142 123.862,296.247C128.587,299.508 133.103,303.334 137.037,307.809C137.038,307.81 137.039,307.811 137.04,307.811L137.04,307.813L137.037,307.809C136.718,307.62 113.402,304.959 84.005,304.899L82.913,304.898C66.502,304.901 48.276,305.726 31.141,308.243L30,308.414C30,308.414 62.569,268.825 84.04,216.014L84.071,216.081ZM149.273,239.657L148.645,239.914C122.42,250.635 103.881,252.688 93.897,252.769L93.309,252.772C90.994,252.773 89.173,252.669 87.858,252.551L87.54,252.521C86.598,260.253 84.64,269.092 81.095,278.914C81.204,278.943 93.151,280.919 107.112,287.029L107.234,286.756C109.92,280.824 119.961,262.365 148.737,240.072L149.273,239.657ZM249.544,239.963L250.08,240.378C278.747,262.586 288.821,280.99 291.551,286.993L292.227,286.708C299.259,283.774 307.672,281.162 317.63,279.378C317.601,279.271 313.471,268.286 311.731,253.497L311.65,252.789C310.408,252.921 308.546,253.059 306.08,253.076L305.501,253.078C295.664,253.071 276.914,251.152 250.171,240.22L249.544,239.963ZM203.297,208.258L240,197.414L261,210.414L240,223.414L202.588,212.36L231.258,239.605L230.5,264.292L208.742,252.605L199.5,214.229L190.258,252.605L168.5,264.292L167.742,239.605L195.64,213.093L158.726,224L137.726,211L158.726,198L196.956,209.295L167.467,181.273L168.226,156.586L189.984,168.273L199.413,207.426L208.742,168.687L230.5,157L231.258,181.687L203.297,208.258ZM368.632,113.115C366.72,115.464 335.99,153.611 315.19,204.164L314.685,205.399C314.702,205.428 311.756,199.279 310.772,188C302.997,187.114 295.562,186.715 288.517,186.686L287.914,186.685C245.389,186.638 217.307,200.063 215.319,201.041L215.206,201.097C215.206,201.097 252.054,177.917 274.863,125.167C270.138,121.906 265.622,118.08 261.689,113.604C261.686,113.603 261.685,113.602 261.685,113.601L261.689,113.604C262.011,113.796 285.902,116.521 315.812,116.516L316.909,116.514C333.031,116.475 350.83,115.632 367.585,113.17L368.726,113L368.632,113.115ZM30.147,112.024C32.165,112.349 54.865,115.888 86.06,115.923L87.191,115.922C102.322,115.898 119.393,115.042 137.04,112.601L136.998,112.66C136.554,113.279 132.625,118.604 123.929,124.689C146.04,175.547 180.802,199.395 182.949,200.834L183.054,200.903C183.054,200.903 154.878,186.031 110.996,185.878L110.394,185.877C103.154,185.874 95.495,186.273 87.468,187.204C87.006,192.926 85.951,198.75 84.042,204.395C84.042,204.396 84.042,204.397 84.042,204.398L84.04,204.399L84.042,204.395C84.049,203.809 60.686,150.399 30,112L30.147,112.024ZM200.053,15.139C201.131,17.969 218.802,63.655 252.183,106.945L253,108C253.032,108 246.445,107.493 236.454,102.911L235.975,102.689C202.987,147.267 199.714,189.296 199.542,191.874L199.534,192C199.534,192 197.897,148.838 164.006,102.911L163.606,102.371C158.419,104.832 152.847,106.83 147.005,107.999L147.002,108C147.001,108.001 147,108 147,108L147.005,107.999C147.515,107.712 182.088,60.775 200,15L200.053,15.139ZM291.614,134.385C289.119,140.006 279.221,158.696 249.989,181.342L249.452,181.757L250.08,181.5C276.829,170.565 295.582,168.647 305.417,168.642L305.985,168.644C308.217,168.659 309.955,168.773 311.186,168.893L311.277,168.164C312.251,160.608 314.196,152.016 317.63,142.5C317.523,142.471 305.944,140.556 292.266,134.668L291.614,134.385ZM107.174,133.885C100.007,136.935 91.374,139.659 81.095,141.5C81.125,141.609 85.387,152.943 87.076,168.088L87.374,168.058C88.711,167.926 90.667,167.798 93.225,167.8L93.826,167.803C103.818,167.887 122.349,169.945 148.554,180.658L149.182,180.915L148.645,180.5C120.426,158.638 110.224,140.463 107.308,134.175L107.174,133.885ZM200,74C199.92,74.08 192.236,83.438 179.964,92.474C183.585,97.444 194.821,115.361 199.817,152L199.909,152.672L200,152C204.9,116.07 215.801,98.144 219.634,92.777C213.507,88.169 206.942,82.171 200.316,74.373L200,74Z\"\n\t\tstyle=\"fill:rgb(197,251,253);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialCryo\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,200)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(129,207,220);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(129,206,219);stop-opacity:0.74\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(128,205,218);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Dendro.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0.5,10.915)\">\n\t\t<circle style=\"fill:url(#_RadialDendro)\" cx=\"200\" cy=\"200\" r=\"200\" />\n\t</g>\n\t<path\n\t\td=\"M235.79 83.68c-4.46,5.09 -8.45,10.79 -11.98,17.11 -6.75,3.9 -13.02,8.46 -18.82,13.69 -15,-7.22 -25.26,-18.62 -30.79,-34.21 2.99,-24.23 13.26,-44.76 30.79,-61.58 18.54,17.7 28.8,39.37 30.79,65.01zm-215.54 280.55c-2.28,2.28 -2.28,2.28 0,0zm-17.11 -20.53c0.45,2.53 -0.12,4.81 -1.71,6.84 -2.37,-3.2 -1.8,-5.48 1.71,-6.84zm249.76 -198.44c36.58,-1.62 54.26,15.49 53.03,51.32 -4.71,7.71 -9.84,15.12 -15.4,22.24 10.32,1.73 18.3,6.86 23.95,15.4 -0.57,1.14 -1.14,2.28 -1.71,3.42 -9.01,-5.68 -18.7,-7.39 -29.08,-5.13 -19.49,6.6 -37.17,16.3 -53.03,29.08 -2.28,-2.28 -2.28,-4.56 0,-6.84 15.11,-12.82 27.66,-27.64 37.63,-44.48 6.5,-28.06 -4.34,-45.16 -32.5,-51.32 5.18,-5.41 10.88,-9.97 17.11,-13.69zm-119.75 -0c11.67,-0.15 23.07,1.57 34.21,5.13 2.93,2.36 5.21,5.21 6.84,8.55 -34.91,10.94 -43.47,32.61 -25.66,65.01 10.26,10.26 20.53,20.53 30.79,30.79 2.28,2.28 2.28,4.56 0,6.84 -21.14,-18.86 -45.66,-28.55 -73.56,-29.08 -11.8,6.09 -12.94,3.81 -3.42,-6.84 5.43,-2.95 11.13,-5.23 17.11,-6.84 -25.56,-30.14 -21,-54.66 13.69,-73.56zm0 -44.48c26.09,-4.91 47.19,3.08 63.3,23.95 2.66,8.23 -0.19,13.94 -8.55,17.11 -33.16,-28.08 -65.67,-26.94 -97.51,3.42 -25.64,55.38 -12.52,99.28 39.34,131.72 30.38,8.89 55.47,25.43 75.27,49.61 7.36,-9.07 15.34,-17.62 23.95,-25.66 24.6,-11.72 48.55,-24.27 71.85,-37.63 39.47,-39.75 42.89,-81.94 10.26,-126.59 -31.38,-22 -61.04,-20.29 -88.95,5.13 -8.37,-3.17 -11.22,-8.87 -8.55,-17.11 12.37,-15 27.77,-24.12 46.19,-27.37 26.43,0.44 49.24,9.56 68.43,27.37 6.03,-32.71 25.42,-44.12 58.16,-34.21 -3.3,15.1 -10.14,28.21 -20.53,39.35 -10.26,1.14 -20.53,2.28 -30.79,3.42 17.23,23.85 24.64,50.65 22.24,80.4 15.08,-10.13 28.2,-7.84 39.34,6.84 -14.7,17.57 -28.95,17.57 -42.77,0 -5.74,28.56 -20,51.94 -42.77,70.14 -21.94,13.92 -44.75,26.46 -68.43,37.63 -16.34,15.01 -28.88,32.68 -37.63,53.03 -8.75,-20.35 -21.3,-38.03 -37.63,-53.03 -34.04,-14.43 -64.26,-34.39 -90.67,-59.87 -9.49,-14.76 -16.33,-30.73 -20.53,-47.9 -13.98,17.5 -28.23,17.5 -42.77,0 11.15,-14.69 24.26,-16.97 39.35,-6.84 -2.41,-29.75 5.01,-56.55 22.24,-80.4 -10.26,-1.14 -20.53,-2.28 -30.79,-3.42 -34.95,-40.59 -26.97,-52.56 23.95,-35.92 7.07,9.09 11.64,19.35 13.69,30.79 14.32,-13.9 31.42,-21.88 51.32,-23.95zm263.44 -37.63c4.56,2.28 4.56,2.28 0,0m-17.1 -20.53c4.56,2.28 4.56,2.28 0,0m-13.69 -13.69c4.56,2.28 4.56,2.28 0,0z\"\n\t\tstyle=\"fill:rgb(180, 218,68)\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tid=\"_RadialDendro\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,200)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color: rgb(209 245 105);stop-opacity: 1;\" />\n\t\t\t<stop offset=\"0\" style=\"stop-color: rgb(209 245 105);stop-opacity: .73;\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color: rgb(209 245 105);stop-opacity: 0;\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Electro.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0.5,10.915)\">\n\t\t<circle cx=\"200\" cy=\"200\" r=\"200\" style=\"fill:url(#_RadialElectro);\" />\n\t</g>\n\t<path\n\t\td=\"M194.787,192.333C188.262,188.035 181.657,181.753 176.358,172.574C174.261,168.942 172.763,165.383 171.774,161.936C171.27,159.158 171,156.182 171,153C171,141.784 174.066,133.949 178.481,128.479C180.861,125.649 183.561,123.381 186.303,121.799C194.691,116.956 201.706,117.239 209.796,115.988L210,116C210,116 209.931,115.995 209.797,115.988C210.059,115.947 210.323,115.905 210.587,115.861C210.639,115.831 158.035,68.837 95.681,104.837C68.834,120.337 50.317,140.265 50.317,140.265C50.317,140.265 48.21,112.615 81.341,60C47.981,79.261 -32.672,188.524 35.679,306.911C35.679,306.911 19.588,203.04 80.21,168.04C140.831,133.04 179.662,190.296 179.662,190.296C179.662,190.296 187.318,204.66 188.697,221.705C188.721,230.311 186.816,240.478 180.701,251.069C177.506,256.604 173.76,260.851 169.745,264.014C168.781,264.66 167.776,265.285 166.726,265.892C161.405,268.964 156.503,270.732 152.019,271.523C144.304,272.509 136.988,270.865 131.756,267.844C123.514,263.086 120.221,257.001 115.244,250.738L115.183,250.617C115.183,250.617 115.203,250.657 115.242,250.735C114.99,250.418 114.733,250.1 114.472,249.782C114.42,249.752 100.024,318.806 162.378,354.806C189.225,370.306 215.742,376.378 215.742,376.378C215.742,376.378 192.849,392.028 130.718,389.643C164.078,408.904 299.029,424.119 367.38,305.732C367.38,305.732 285.471,371.603 224.849,336.603C164.227,301.603 194.397,239.347 194.397,239.347C194.397,239.347 202.025,227.112 214.656,217.57C222.394,212.435 233.1,208 247,208C252.203,208 256.849,208.743 260.96,210.042C262.729,210.806 264.521,211.706 266.333,212.751C286.892,224.621 287.466,240.815 284.535,252.017C283.477,255.584 281.983,258.795 280.527,262.218C279.828,263.528 279.267,264.425 279.017,264.812L278.875,265.026C278.875,265.026 278.926,264.953 279.017,264.812L280.167,263.07C279.769,264.024 279.376,264.996 279,266C279,266.06 346,244 346,172C346,141 338,115 338,115C338,115 363,127 392,182C392,143.479 337.702,19 201,19C201,19 299,57 299,127C299,197 230,202 230,202C220.742,202 211.172,201.362 194.787,192.333Z\"\n\t\tstyle=\"fill:rgb(222,186,255);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialElectro\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,199.085)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(194,121,224);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(195,121,225);stop-opacity:0.73\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(196,122,227);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Geo.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0,10)\">\n\t\t<circle cx=\"200\" cy=\"200\" r=\"200\" style=\"fill:url(#_RadialGeo);\" />\n\t</g>\n\t<path\n\t\td=\"M200.197,412.606C200.197,412.606 81.644,332.209 10.517,210.212C10.409,210.027 30.803,174.081 51.742,155.411C51.687,155.411 85.883,266.425 200.72,393.589C200.562,393.589 281.709,306.03 286.765,259.194C285.983,259.194 200.72,331.358 200.72,331.358C200.72,331.358 145.359,276.973 121.128,225.819C121.128,225.819 141.114,200.187 189.195,166.001C189.195,166.001 201.104,175.926 205.074,184.969L158.758,230.182C158.758,230.182 169.552,259.697 201.699,285.658C201.987,285.37 254.123,256.933 298.579,203.862C299.268,203.862 321.323,238.668 330.972,285.536C330.628,285.536 276.707,358.322 200.197,412.606ZM200.523,8.008C200.523,8.008 319.076,88.405 390.203,210.402C390.31,210.587 369.916,246.532 348.978,265.202C349.033,265.202 314.837,154.188 200,27.024C200.158,27.024 119.011,114.583 113.955,161.419C114.737,161.419 200,89.256 200,89.256C200,89.256 255.361,143.64 279.592,194.794C279.592,194.794 259.606,220.426 211.525,254.612C211.525,254.612 199.615,244.687 195.645,235.645L241.962,190.431C241.962,190.431 231.168,160.916 199.021,134.955C198.732,135.244 146.596,163.68 102.141,216.751C101.452,216.751 79.397,181.945 69.747,135.077C70.092,135.077 124.012,62.291 200.523,8.008Z\"\n\t\tstyle=\"fill:rgb(243,214,97);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialGeo\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,200)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(207,137,19);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(206,137,19);stop-opacity:0.73\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(205,136,19);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Hydro.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0,10)\">\n\t\t<circle cx=\"200\" cy=\"200\" r=\"200\" style=\"fill:url(#_RadialHydro);\" />\n\t</g>\n\t<path\n\t\td=\"M44.747,121.48C50.257,112.511 101.866,33 200,33C304,33 377,117 377,210C377,303 302,387 200,387C124.277,387 95,343 95,343C95,343 141,371 200,371C259,371 296,318 296,274C296,230 254.64,181 200,181C184.467,181 169.115,188 162.5,188C148.978,188 138,177.022 138,163.5C138,153.346 144.19,144.627 153,140.913L153.063,140.886C153.264,140.802 171.051,132 202,132C260.878,132 324,183.305 324,253C324,338.409 246,369 246,369C246,369 343,337 343,238C343,139 262,90 200,90C133.257,90 92.818,138.996 85.764,148.267C85.414,148.781 79.037,159 65.5,159C51.978,159 41,148.022 41,134.5C41,130.059 42.184,125.893 44.253,122.3L44.747,121.48ZM213.035,289.278C211.408,282.792 206.389,272 191,272C173.411,272 158,288 158,308C158,328 177,350 205,350C233,350 254,327 254,327C254,327 238,358 200,358C162,358 136,330 136,295C136,260 165.951,231.525 199.475,231.525C233,231.525 259,259 259,286L258.915,286.015C258.971,286.669 259,287.331 259,288C259,300.694 248.694,311 236,311C225.402,311 216.468,303.816 213.807,294.056L213.807,294.056C213.389,292.521 213.125,290.923 213.035,289.278ZM79,274C88.383,274 96,281.617 96,291C96,300.383 88.383,308 79,308C69.617,308 62,300.383 62,291C62,281.617 69.617,274 79,274ZM46.5,189C60.022,189 71,199.978 71,213.5C71,227.022 60.022,238 46.5,238C32.978,238 22,227.022 22,213.5C22,199.978 32.978,189 46.5,189Z\"\n\t\tstyle=\"fill:rgb(7,229,254);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialHydro\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,200)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(8,158,222);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(8,158,223);stop-opacity:0.73\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(8,159,224);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Polearm.svelte",
    "content": "<svg\n\tviewBox=\"0 0 128 128\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"\n>\n\t<g transform=\"matrix(0.689873,-0.689873,0.689873,0.689873,-23.6139,57.1013)\">\n\t\t<g transform=\"matrix(0.724771,0.724771,-0.724771,0.724771,58.5,-24.2706)\">\n\t\t\t<use xlink:href=\"#_ImagePolearm1\" x=\"9\" y=\"9\" width=\"110px\" height=\"110px\" />\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.851562,0,0,0.851562,11.7741,13.7254)\">\n\t\t<g transform=\"matrix(1.14569,0,0,1.14569,-9.32429,-9.32429)\">\n\t\t\t<path\n\t\t\t\td=\"M47,47.898L47,42L35,42L35,54L41.789,54L67,79.211L67,86L79,86L79,74L73.102,74L47,47.898Z\"\n\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:1.02px;\"\n\t\t\t/>\n\t\t</g>\n\t\t<g transform=\"matrix(0.810127,-0.810127,0.810127,0.810127,-50.468,59.0381)\">\n\t\t\t<path\n\t\t\t\td=\"M6,66L23,66L24,65L51,67L53,65L59,65L63,61L68,66L81,66L85,62L77,54L135,69L77,84L85,76L81,72L68,72L63,77L59,73L53,73L51,71L24,73L23,72L6,72L3,69L6,66Z\"\n\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:1.02px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<defs>\n\t\t<image\n\t\t\tid=\"_ImagePolearm1\"\n\t\t\twidth=\"110px\"\n\t\t\theight=\"110px\"\n\t\t\txlink:href=\"data:image/png;base64,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\"\n\t\t/>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Pyro.svelte",
    "content": "<svg\n\tviewBox=\"0 0 400 420\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"\n>\n\t<g transform=\"matrix(1,0,0,1,0,11)\">\n\t\t<circle cx=\"199.5\" cy=\"199.5\" r=\"199.5\" style=\"fill:url(#_RadialPyro);\" />\n\t</g>\n\t<path\n\t\td=\"M196,22C196,22 231,59 231,83C231,107 189,116 189,153C189,172.638 212,186 212,186C212,186 198,174 198,158C198,142 210,122 240,103C240.207,103.207 232,128.445 232,144C232,184.962 271,214 271,214C271,196.725 249,189.293 249,164C249,138.707 269,121 269,121C269,121 271,155 296,177C321,199 355,229 355,264C355,299 316,324 281,344C234.697,368.135 203,399 203,399C203,399 151,358 121,342C91,326 45,303 45,271C45,239 70,207 95,175C120,143 128,124 128,124C128,124 116,171 203,198C203.138,198.138 118,200 118,272C118,302.646 137,317 137,317C137,317 82,293 82,254C82,222.237 103,203 103,203C103,203 65,222 65,258C65,294 91,308 132,329C173,350 203,372 203,372C203,372 263,328 295,315C327,302 342,275 342,262C342,231.08 306,210.5 306,210.5C306,210.5 317,235 317,256C317,277 293,338 209,338C179.256,338 155,325 145,313C135,301 137,291 137,291C137,291 138,263 169,263C177.724,263 184,266 184,266C184,266 164,275 164,298C164,321 189,330 209,330C229,330 281,319 281,270C281,221 231,203 209,194C187,185 146,171 146,132C146,93 196,72 196,22Z\"\n\t\tstyle=\"fill:rgb(253,169,113);\"\n\t/>\n\t<path\n\t\td=\"M154,252C154,252 188,232 212,256C236,280 217,304 216,305C215,306 256,295 256,266C256,237 230,218 200,218C170,218 154,246 154,252Z\"\n\t\tstyle=\"fill:rgb(253,169,113);\"\n\t/>\n\t<defs>\n\t\t<radialGradient\n\t\t\tid=\"_RadialPyro\"\n\t\t\tcx=\"0\"\n\t\t\tcy=\"0\"\n\t\t\tr=\"1\"\n\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\tgradientTransform=\"matrix(200,0,0,200,200,199)\"\n\t\t>\n\t\t\t<stop offset=\"0\" style=\"stop-color:rgb(212,84,22);stop-opacity:1\" />\n\t\t\t<stop offset=\"0.48\" style=\"stop-color:rgb(213,84,22);stop-opacity:0.73\" />\n\t\t\t<stop offset=\"1\" style=\"stop-color:rgb(214,85,22);stop-opacity:0\" />\n\t\t</radialGradient>\n\t</defs>\n</svg>\n"
  },
  {
    "path": "src/lib/components/svgs/Sword.svelte",
    "content": "<svg\n\tviewBox=\"0 0 128 128\"\n\tversion=\"1.1\"\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txml:space=\"preserve\"\n\txmlns:serif=\"http://www.serif.com/\"\n\tstyle=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"\n>\n\t<g transform=\"matrix(0.865166,0,0,0.865166,8.62938,9.92713)\">\n\t\t<g opacity=\"0.75\">\n\t\t\t<path\n\t\t\t\td=\"M95.5,94L95.5,91.104L106.5,80.104L106.5,105L61.952,105L50.952,94L95.5,94\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M32.5,91.104L32.5,94L35.396,94L46.396,105L21.5,105L21.5,60.452L32.5,49.452L32.5,91.104\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M106.5,20L106.5,64.548L95.5,75.548L95.5,31L92.604,31L81.604,20L106.5,20Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M32.5,31L32.5,33.896L21.5,44.896L21.5,20L66.048,20L77.048,31L32.5,31Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M32.5,91.104L32.5,75.548L64,107.048L66.048,105L81.604,105L64,122.604L32.5,91.104Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M92.604,94L77.048,94L108.548,62.5L106.5,60.452L106.5,44.896L124.104,62.5L92.604,94Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M64,17.952L61.952,20L46.396,20L64,2.396L95.5,33.896L95.5,49.452L64,17.952Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M19.452,62.5L21.5,64.548L21.5,80.104L3.896,62.5L35.396,31L50.952,31L19.452,62.5Z\"\n\t\t\t\tstyle=\"fill:rgb(201,207,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.611765,-0.611765,0.611765,0.611765,-12.1886,31.6507)\">\n\t\t<g opacity=\"0.75\">\n\t\t\t<g transform=\"matrix(1,0,0,1,0,40)\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M28,116L33.454,110.546L33.454,91L30.433,87.978L20,87.978L17.498,90.481L9.021,82.004L11.018,80.007L30,80.007L36,69.031L42,80.007L60.982,80.007L62.809,81.834L54.332,90.311L52,87.978L41.567,87.978L38.546,91L38.546,110.546L44,116L36,127L28,116Z\"\n\t\t\t\t\tstyle=\"fill:rgb(199,205,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<path\n\t\t\t\td=\"M26.161,120.007L19,114C19,114 19,114 19,114C23.614,109.386 26.08,103.047 25.796,96.528C25.186,82.497 24.165,59 24.165,59C24.165,59 23,34 36,15L36.076,15.111C48.995,34.1 47.835,59 47.835,59C47.835,59 46.814,82.497 46.204,96.528C45.92,103.047 48.386,109.386 53,114C53,114 53,114 53,114L45.839,120.007L26.161,120.007Z\"\n\t\t\t\tstyle=\"fill:rgb(199,205,210);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n\t<g transform=\"matrix(0.611765,0.611765,-0.611765,0.611765,96.557,-12.3964)\">\n\t\t<path\n\t\t\td=\"M26.161,120.007L19,114C19,114 19,114 19.001,113.999C23.637,109.363 26.241,103.075 26.241,96.519L26.241,90.752C26.241,90.752 23,34 36,15L36.076,15.111C46.013,29.717 46.392,76.075 46.038,96.699C45.909,103.172 48.423,109.419 53.002,113.997C53,114 53,114 53,114L45.839,120.007L26.161,120.007Z\"\n\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t/>\n\t\t<g transform=\"matrix(1,0,0,1,0,40)\">\n\t\t\t<path\n\t\t\t\td=\"M28,116L33.454,110.546L33.454,91L30.433,87.978L20,87.978L17.328,90.65L8.851,82.174L11.018,80.007L30,80.007L36,69.031L42,80.007L60.982,80.007L62.979,82.004L54.502,90.481L52,87.978L41.567,87.978L38.546,91L38.546,110.546L44,116L36,127L28,116Z\"\n\t\t\t\tstyle=\"fill:rgb(255,253,255);stroke:rgb(125,129,134);stroke-width:1.16px;\"\n\t\t\t/>\n\t\t</g>\n\t</g>\n</svg>\n"
  },
  {
    "path": "src/lib/data/banners/beginner.json",
    "content": "{\n\t\"beginner\": {\n\t\t\"featured\": {\n\t\t\t\"bannerName\": \"beginner\",\n\t\t\t\"character\": \"noelle\",\n\t\t\t\"vision\": \"geo\"\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.0.json",
    "content": "{\n\t\"patch\": 1.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-1\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57.5, \"b\": 5.8 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiangling\", \"fischl\", \"barbara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-1\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"amos-bow\" }, { \"name\": \"aquila-favonia\" }],\n\t\t\t\t\t\"rateup\": [\"the-flute\", \"the-stringless\", \"favonius-lance\", \"the-bell\", \"the-widsith\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 76 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sparkling-steps-1\",\n\t\t\t\t\t\t\t\"character\": \"klee\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 60 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"sucrose\", \"xingqiu\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-2\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"lost-prayer-to-the-sacred-winds\" },\n\t\t\t\t\t\t{ \"name\": \"wolf_s-gravestone\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-bow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 78, \"w\": 20 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.1.json",
    "content": "{\n\t\"patch\": 1.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"farewell-of-snezhnaya-1\",\n\t\t\t\t\t\t\t\"character\": \"tartaglia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 44.5, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"beidou\", \"ningguang\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-3\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"skyward-harp\" }, { \"name\": \"memory-of-dust\" }],\n\t\t\t\t\t\"rateup\": [\"rust\", \"favonius-lance\", \"rainslasher\", \"the-flute\", \"eye-of-perception\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 76 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-1\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 52 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"razor\", \"xinyan\", \"chongyun\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-4\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"vortex-vanquisher\" }, { \"name\": \"the-unforged\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"lion_s-roar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41.5, \"t\": 75 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.2.json",
    "content": "{\n\t\"patch\": 1.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"secretum-secretorum-1\",\n\t\t\t\t\t\t\t\"character\": \"albedo\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 56.5, \"b\": 5.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"sucrose\", \"fischl\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-5\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"summit-shaper\" }, { \"name\": \"skyward-atlas\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 46, \"t\": 76 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 18.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 1,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"adrift-in-the-harbor-1\",\n\t\t\t\t\t\t\t\"character\": \"ganyu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 59.5, \"b\": 12 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"beidou\", \"xinyan\", \"xingqiu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-6\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"amos-bow\" }, { \"name\": \"skyward-pride\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 46, \"t\": 77 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.3.json",
    "content": "{\n\t\"patch\": 1.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"invitation-to-mundane-life-1\",\n\t\t\t\t\t\t\t\"character\": \"xiao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57.5, \"b\": 5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xinyan\", \"beidou\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-7\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"primordial-jade-winged-spear\" },\n\t\t\t\t\t\t{ \"name\": \"primordial-jade-cutter\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44.5, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 73.5, \"b\": 16 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"dance-of-lantern-1\",\n\t\t\t\t\t\t\t\"character\": \"keqing\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57.5, \"b\": 4.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"bennett\", \"ningguang\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-8\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"wolf_s-gravestone\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 35 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ \"name\": \"staff-of-homa\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 45, \"t\": 77 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 14 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 3,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moment-of-bloom-1\",\n\t\t\t\t\t\t\t\"character\": \"hu-tao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57.5, \"b\": 4.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiangling\", \"chongyun\", \"xingqiu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-8\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"wolf_s-gravestone\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 35 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ \"name\": \"staff-of-homa\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 45, \"t\": 77 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 14 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.4.json",
    "content": "{\n\t\"patch\": 1.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-2\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 6 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"razor\", \"sucrose\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-9\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"elegy-for-the-end\" }, { \"name\": \"skyward-blade\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"the-alley-flash\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 40, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"farewell-of-snezhnaya-2\",\n\t\t\t\t\t\t\t\"character\": \"tartaglia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57.5, \"b\": 6 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"fischl\", \"rosaria\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-10\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"skyward-harp\" },\n\t\t\t\t\t\t{ \"name\": \"lost-prayer-to-the-sacred-winds\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 16 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.5.json",
    "content": "{\n\t\"patch\": 1.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-2\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"noelle\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-11\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"summit-shaper\" }, { \"name\": \"memory-of-dust\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"the-flute\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 43, \"t\": 71 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"born-of-ocean-swell-1\",\n\t\t\t\t\t\t\t\"character\": \"eula\"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"beidou\", \"xinyan\", \"xingqiu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-12\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"song-of-broken-pines\" }, { \"name\": \"aquila-favonia\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 39.5, \"t\": 71 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 71, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/1.6.json",
    "content": "{\n\t\"patch\": 1.6,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sparkling-steps-2\",\n\t\t\t\t\t\t\t\"character\": \"klee\"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"fischl\", \"barbara\", \"sucrose\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-13\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"lost-prayer-to-the-sacred-winds\" }, { \"name\": \"skyward-pride\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"lion_s-roar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 71.5, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"leaves-in-the-wind-1\",\n\t\t\t\t\t\t\t\"character\": \"kaedehara-kazuha\",\n\t\t\t\t\t\t\t\"textOffset\": { \"w\": 25 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"rosaria\", \"bennett\", \"razor\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-14\",\n\t\t\t\t\t\"fatepointsystem\": false,\n\t\t\t\t\t\"featured\": [{ \"name\": \"freedom-sworn\" }, { \"name\": \"skyward-atlas\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"the-alley-flash\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 71 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.0.json",
    "content": "{\n\t\"patch\": 2.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-heron_s-court-1\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayaka\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"w\": 28 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"chongyun\", \"ningguang\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-15\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"mistsplitter-reforged\" }, { \"name\": \"skyward-spine\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79, \"b\": 16 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tapestry-of-golden-flames-1\",\n\t\t\t\t\t\t\t\"character\": \"yoimiya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"sayu\", \"xinyan\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-16\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"thundering-pulse\" }, { \"name\": \"skyward-blade\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 43, \"t\": 66 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.1.json",
    "content": "{\n\t\"patch\": 2.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-1\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 61, \"b\": 13 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiangling\", \"sucrose\", \"kujou-sara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-17\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"engulfing-lightning\" }, { \"name\": \"the-unforged\" }],\n\t\t\t\t\t\"rateup\": [\"the-bell\", \"sacrificial-bow\", \"favonius-lance\", \"the-widsith\", \"lion_s-roar\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 39.5, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"drifting-luminescence-1\",\n\t\t\t\t\t\t\t\"character\": \"sangonomiya-kokomi\",\n\t\t\t\t\t\t\t\"textOffset\": { \"w\": 23, \"l\": 51 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"rosaria\", \"xingqiu\", \"beidou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-18\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"primordial-jade-cutter\", \"buttonPosition\": { \"l\": 25 } },\n\t\t\t\t\t\t{ \"name\": \"everlasting-moonglow\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"the-flute\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42, \"w\": 30, \"t\": 66 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.2.json",
    "content": "{\n\t\"patch\": 2.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"farewell-of-snezhnaya-3\",\n\t\t\t\t\t\t\t\"character\": \"tartaglia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"chongyun\", \"ningguang\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-19\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"polar-star\" }, { \"name\": \"memory-of-dust\" }],\n\t\t\t\t\t\"rateup\": [\"favonius-lance\", \"rust\", \"eye-of-perception\", \"akuoumaru\", \"favonius-sword\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.2, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moment-of-bloom-2\",\n\t\t\t\t\t\t\t\"character\": \"hu-tao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 56 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"thoma\", \"diona\", \"sayu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-20\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"elegy-for-the-end\" }, { \"name\": \"staff-of-homa\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"mouun_s-moon\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"sacrificial-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 38.5, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.3.json",
    "content": "{\n\t\"patch\": 2.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"secretum-secretorum-2\",\n\t\t\t\t\t\t\t\"character\": \"albedo\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55.5, \"b\": 9 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"born-of-ocean-swell-2\",\n\t\t\t\t\t\t\t\"character\": \"eula\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"noelle\", \"rosaria\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-21\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"freedom-sworn\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"song-of-broken-pines\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 60 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"t\": 68, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 71, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"oni_s-royale-1\",\n\t\t\t\t\t\t\t\"character\": \"arataki-itto\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 9.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"xiangling\", \"gorou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-22\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"skyward-harp\" }, { \"name\": \"redhorn-stonethresher\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"the-bell\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"t\": 67, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"b\": 19, \"l\": 71 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.4.json",
    "content": "{\n\t\"patch\": 2.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-transcendent-one-returns-1\",\n\t\t\t\t\t\t\t\"character\": \"shenhe\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"invitation-to-mundane-life-2\",\n\t\t\t\t\t\t\t\"character\": \"xiao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 12.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yun-jin\", \"ningguang\", \"chongyun\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-23\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"calamity-queller\" }, { \"name\": \"primordial-jade-winged-spear\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"the-flute\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41.5, \"t\": 68.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-3\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 12 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"adrift-in-the-harbor-2\",\n\t\t\t\t\t\t\t\"character\": \"ganyu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 12 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xingqiu\", \"yanfei\", \"beidou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-24\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"vortex-vanquisher\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"amos-bow\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 70 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41.5, \"t\": 68, \"w\": 27 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.5.json",
    "content": "{\n\t\"patch\": 2.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"everbloom-violet-1\",\n\t\t\t\t\t\t\t\"character\": \"yae-miko\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 61, \"b\": 12 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"thoma\", \"diona\", \"fischl\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-25\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"kagura_s-verity\" }, { \"name\": \"primordial-jade-cutter\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"sacrificial-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 31, \"l\": 35, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"b\": 23 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-2\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 61.5, \"b\": 13 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"drifting-luminescence-2\",\n\t\t\t\t\t\t\t\"character\": \"sangonomiya-kokomi\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 8, \"w\": 23 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"kujou-sara\", \"xinyan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-26\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"engulfing-lightning\" }, { \"name\": \"everlasting-moonglow\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"akuoumaru\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"mouun_s-moon\",\n\t\t\t\t\t\t\"sacrificial-fragments\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 34, \"l\": 35.5, \"t\": 67.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74.5, \"b\": 23 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.6.json",
    "content": "{\n\t\"patch\": 2.6,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"azure-excursion-1\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayato\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-3\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 53.5, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"sucrose\", \"xiangling\", \"yun-jin\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-27\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"elegy-for-the-end\" }, { \"name\": \"haran-geppaku-futsu\" }],\n\t\t\t\t\t\"rateup\": [\"the-flute\", \"rust\", \"dragon_s-bane\", \"the-widsith\", \"sacrificial-greatsword\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 33, \"l\": 39.5, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-heron_s-court-2\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayaka\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 44, \"b\": 10, \"w\": 32 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"razor\", \"rosaria\", \"sayu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-28\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"mistsplitter-reforged\" }, { \"name\": \"the-unforged\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"the-bell\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 32, \"l\": 39, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.7.json",
    "content": "{\n\t\"patch\": 2.7,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"discerner-of-enigmas-1\",\n\t\t\t\t\t\t\t\"character\": \"yelan\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 49, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"invitation-to-mundane-life-3\",\n\t\t\t\t\t\t\t\"character\": \"xiao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 49, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"barbara\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-29\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"aqua-simulacra\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"primordial-jade-winged-spear\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 60 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"oni_s-royale-2\",\n\t\t\t\t\t\t\t\"character\": \"arataki-itto\",\n\t\t\t\t\t\t\t\"textOffset\": { \"w\": 30, \"l\": 49, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"kuki-shinobu\", \"chongyun\", \"gorou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-30\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"redhorn-stonethresher\" },\n\t\t\t\t\t\t{ \"name\": \"memory-of-dust\", \"buttonPosition\": { \"l\": 35 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"lion_s-roar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 28, \"l\": 41.5, \"t\": 67.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/2.8.json",
    "content": "{\n\t\"patch\": 2.8,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"leaves-in-the-wind-2\",\n\t\t\t\t\t\t\t\"character\": \"kaedehara-kazuha\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sparkling-steps-3\",\n\t\t\t\t\t\t\t\"character\": \"klee\"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"shikanoin-heizou\", \"thoma\", \"ningguang\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-31\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"freedom-sworn\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"lost-prayer-to-the-sacred-winds\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 65 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"rainslasher\"\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tapestry-of-golden-flames-2\",\n\t\t\t\t\t\t\t\"character\": \"yoimiya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"xinyan\", \"yun-jin\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-32\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"thundering-pulse\" },\n\t\t\t\t\t\t{ \"name\": \"summit-shaper\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 35, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 70, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.0.json",
    "content": "{\n\t\"patch\": 3.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"viridescent-vigil-1\",\n\t\t\t\t\t\t\t\"character\": \"tighnari\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-4\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 13 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"collei\", \"fischl\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-33\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"hunter_s-path\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"vortex-vanquisher\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 60 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-lance\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42, \"t\": 68, \"w\": 32 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 20, \"w\": 15 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 2,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"drifting-luminescence-3\",\n\t\t\t\t\t\t\t\"character\": \"sangonomiya-kokomi\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 8 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"adrift-in-the-harbor-3\",\n\t\t\t\t\t\t\t\"character\": \"ganyu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 57, \"b\": 12.8 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"dori\", \"xingqiu\", \"sucrose\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-34\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"amos-bow\" }, { \"name\": \"everlasting-moonglow\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44, \"t\": 71, \"w\": 28 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 19, \"w\": 15 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.1.json",
    "content": "{\n\t\"patch\": 3.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twilight-arbiter-1\",\n\t\t\t\t\t\t\t\"character\": \"cyno\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 10 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-4\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"candace\", \"kuki-shinobu\", \"sayu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-35\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"elegy-for-the-end\" }, { \"name\": \"staff-of-the-scarlet-sands\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"makhaira-aquamarine\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-warbow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 66, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 73.5, \"b\": 17, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twirling-lotus-1\",\n\t\t\t\t\t\t\t\"character\": \"nilou\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 10 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"secretum-secretorum-3\",\n\t\t\t\t\t\t\t\"character\": \"albedo\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"beidou\", \"barbara\", \"xiangling\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-36\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"key-of-khaj-nisut\" }, { \"name\": \"primordial-jade-cutter\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"xiphos-moonlight\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"wandering-evenstar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41, \"t\": 66 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 73.5, \"b\": 17, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.2.json",
    "content": "{\n\t\"patch\": 3.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-moongrass-enlightenment-1\",\n\t\t\t\t\t\t\t\"character\": \"nahida\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48, \"b\": 8.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tapestry-of-golden-flames-3\",\n\t\t\t\t\t\t\t\"character\": \"yoimiya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"bennett\", \"razor\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-37\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"a-thousand-floating-dreams\" }, { \"name\": \"thundering-pulse\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 62 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"everbloom-violet-2\",\n\t\t\t\t\t\t\t\"character\": \"yae-miko\",\n\t\t\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\t\t\"l\": 46.6,\n\t\t\t\t\t\t\t\t\"b\": 13\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"farewell-of-snezhnaya-4\",\n\t\t\t\t\t\t\t\"character\": \"tartaglia\",\n\t\t\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\t\t\"l\": 47,\n\t\t\t\t\t\t\t\t\"b\": 9\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"layla\", \"thoma\", \"shikanoin-heizou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-38\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"kagura_s-verity\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 64 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ \"name\": \"polar-star\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-codex\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 70.5, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.3.json",
    "content": "{\n\t\"patch\": 3.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"from-ashes-reborn-1\",\n\t\t\t\t\t\t\t\"character\": \"wanderer\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 58.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"oni_s-royale-3\",\n\t\t\t\t\t\t\t\"character\": \"arataki-itto\",\n\t\t\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\t\t\"w\": 30,\n\t\t\t\t\t\t\t\t\"l\": 56,\n\t\t\t\t\t\t\t\t\"b\": 10\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"faruzan\", \"gorou\", \"yanfei\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-39\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"tulaytullah_s-remembrance\" },\n\t\t\t\t\t\t{ \"name\": \"redhorn-stonethresher\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"sacrificial-sword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 65, \"w\": 30.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"w\": 18, \"b\": 26 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-3\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 47, \"b\": 8.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"azure-excursion-2\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayato\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 47, \"b\": 8.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"rosaria\", \"sayu\", \"kujou-sara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-40\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"engulfing-lightning\" }, { \"name\": \"haran-geppaku-futsu\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"akuoumaru\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"mouun_s-moon\",\n\t\t\t\t\t\t\"sacrificial-fragments\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"w\": 34, \"l\": 35.5, \"t\": 67.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/3.4.json",
    "content": "{\n\t\"patch\": 3.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"caution-in-confidence-1\",\n\t\t\t\t\t\t\t\"character\": \"alhaitham\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"invitation-to-mundane-life-4\",\n\t\t\t\t\t\t\t\"character\": \"xiao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yaoyao\", \"xinyan\", \"yun-jin\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-41\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"light-of-foliar-incision\" },\n\t\t\t\t\t\t{ \"name\": \"primordial-jade-winged-spear\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"lithic-spear\", \"the-widsith\", \"the-flute\", \"rainslasher\", \"sacrificial-bow\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 38.5, \"t\": 62, \"w\": 30.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72.5, \"b\": 22.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moment-of-bloom-3\",\n\t\t\t\t\t\t\t\"character\": \"hu-tao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"discerner-of-enigmas-2\",\n\t\t\t\t\t\t\t\"character\": \"yelan\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"xingqiu\", \"ningguang\", \"beidou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-42\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"staff-of-homa\" }, { \"name\": \"aqua-simulacra\" }],\n\t\t\t\t\t\"rateup\": [\"lithic-blade\", \"rust\", \"favonius-sword\", \"favonius-codex\", \"dragon_s-bane\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 38.5, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72.5, \"b\": 22.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/3.5.json",
    "content": "{\n\t\"patch\": 3.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"auric-blaze-1\",\n\t\t\t\t\t\t\t\"character\": \"dehya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twilight-arbiter-2\",\n\t\t\t\t\t\t\t\"character\": \"cyno\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"collei\", \"bennett\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-43\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"beacon-of-the-reed-sea\" },\n\t\t\t\t\t\t{ \"name\": \"staff-of-the-scarlet-sands\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 34.5, \"t\": 67, \"w\": 30.5 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72.5, \"b\": 24 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 3,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-transcendent-one-returns-2\",\n\t\t\t\t\t\t\t\"character\": \"shenhe\",\n\t\t\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\t\t\"t\": 67,\n\t\t\t\t\t\t\t\t\"l\": 50.5\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-heron_s-court-3\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayaka\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"diona\", \"sucrose\", \"mika\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-44\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"calamity-queller\" }, { \"name\": \"mistsplitter-reforged\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"favonius-lance\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 38.5, \"t\": 67, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72.5, \"b\": 22.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.6.json",
    "content": "{\n\t\"patch\": 3.6,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-moongrass-enlightenment-2\",\n\t\t\t\t\t\t\t\"character\": \"nahida\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twirling-lotus-2\",\n\t\t\t\t\t\t\t\"character\": \"nilou\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"dori\", \"kuki-shinobu\", \"layla\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-45\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"key-of-khaj-nisut\" }, { \"name\": \"a-thousand-floating-dreams\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"xiphos-moonlight\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"sacrificial-fragments\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 52.5, \"t\": 71, \"w\": 23 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74.5, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"immaculate-pulse-1\",\n\t\t\t\t\t\t\t\"character\": \"baizhu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 9 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"adrift-in-the-harbor-4\",\n\t\t\t\t\t\t\t\"character\": \"ganyu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"kaveh\", \"candace\", \"fischl\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-46\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"amos-bow\" }, { \"name\": \"jadefall-splendor\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"makhaira-aquamarine\",\n\t\t\t\t\t\t\"wandering-evenstar\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"sacrificial-bow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 50, \"t\": 73 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.7.json",
    "content": "{\n\t\"patch\": 3.7,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tapestry-of-golden-flames-4\",\n\t\t\t\t\t\t\t\"character\": \"yoimiya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"everbloom-violet-3\",\n\t\t\t\t\t\t\t\"character\": \"yae-miko\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.6, \"b\": 8 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"kirara\", \"yun-jin\", \"chongyun\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-47\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"thundering-pulse\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"kagura_s-verity\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 64 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"akuoumaru\", \"the-flute\", \"dragon_s-bane\", \"rust\", \"the-widsith\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 52.5, \"t\": 71, \"w\": 23 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74.5, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"caution-in-confidence-2\",\n\t\t\t\t\t\t\t\"character\": \"alhaitham\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"leaves-in-the-wind-3\",\n\t\t\t\t\t\t\t\"character\": \"kaedehara-kazuha\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 46, \"b\": 12 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yaoyao\", \"shikanoin-heizou\", \"xiangling\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-48\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"light-of-foliar-incision\" },\n\t\t\t\t\t\t{ \"name\": \"freedom-sworn\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"mouun_s-moon\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 52, \"t\": 72, \"w\": 27 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 80, \"b\": 18.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/3.8.json",
    "content": "{\n\t\"patch\": 3.8,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"born-of-ocean-swell-3\",\n\t\t\t\t\t\t\t\"character\": \"eula\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sparkling-steps-4\",\n\t\t\t\t\t\t\t\"character\": \"klee\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 11.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"mika\", \"thoma\", \"razor\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-49\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"song-of-broken-pines\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"lost-prayer-to-the-sacred-winds\",\n\t\t\t\t\t\t\t\"buttonPosition\": { \"l\": 70, \"t\": 65 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"rainslasher\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49, \"t\": 71.5, \"w\": 23 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79, \"b\": 20.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"drifting-luminescence-4\",\n\t\t\t\t\t\t\t\"character\": \"sangonomiya-kokomi\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"from-ashes-reborn-2\",\n\t\t\t\t\t\t\t\"character\": \"wanderer\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 11.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"rosaria\", \"faruzan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-50\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"everlasting-moonglow\" }, { \"name\": \"tulaytullah_s-remembrance\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"lion_s-roar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 46, \"t\": 71.5, \"w\": 25 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79, \"b\": 20.5 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/4.0.json",
    "content": "{\n\t\"patch\": 4.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"conjuring-chiaroscuro-1\",\n\t\t\t\t\t\t\t\"character\": \"lyney\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"discerner-of-enigmas-3\",\n\t\t\t\t\t\t\t\"character\": \"yelan\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"lynette\", \"barbara\", \"bennett\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-51\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"the-first-great-magic\" },\n\t\t\t\t\t\t{ \"name\": \"aqua-simulacra\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 70, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-5\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"farewell-of-snezhnaya-5\",\n\t\t\t\t\t\t\t\"character\": \"tartaglia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"freminet\", \"sayu\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-52\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"vortex-vanquisher\", \"buttonPosition\": { \"l\": 30 } },\n\t\t\t\t\t\t{ \"name\": \"polar-star\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"the-flute\", \"rust\", \"dragon_s-bane\", \"the-widsith\", \"sacrificial-greatsword\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/4.1.json",
    "content": "{\n\t\"patch\": 4.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"decree-of-the-deeps-1\",\n\t\t\t\t\t\t\t\"character\": \"neuvillette\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moment-of-bloom-4\",\n\t\t\t\t\t\t\t\"character\": \"hu-tao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.7 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xingqiu\", \"diona\", \"fischl\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-53\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"tome-of-the-eternal-flow\" },\n\t\t\t\t\t\t{ \"name\": \"staff-of-homa\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-dockhands-assistant\",\n\t\t\t\t\t\t\"portable-power-saw\",\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-codex\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 71, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tempestuous-destiny-1\",\n\t\t\t\t\t\t\t\"character\": \"wriothesley\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-5\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"dori\", \"thoma\", \"chongyun\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-54\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"cashflow-supervision\" },\n\t\t\t\t\t\t{ \"name\": \"elegy-for-the-end\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"prospector-drill\",\n\t\t\t\t\t\t\"range-gauge\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41.5, \"t\": 66, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 26 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/4.2.json",
    "content": "{\n\t\"patch\": 4.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"chanson-of-many-waters-1\",\n\t\t\t\t\t\t\t\"character\": \"furina\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.75, \"b\": 9 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"immaculate-pulse-2\",\n\t\t\t\t\t\t\t\"character\": \"baizhu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.75, \"b\": 9 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"charlotte\", \"beidou\", \"collei\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-55\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"splendor-of-tranquil-waters\" }, { \"name\": \"jadefall-splendor\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 70, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77.5, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twilight-arbiter-3\",\n\t\t\t\t\t\t\t\"character\": \"cyno\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"azure-excursion-3\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayato\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiangling\", \"kuki-shinobu\", \"kirara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-56\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"staff-of-the-scarlet-sands\", \"buttonPosition\": { \"l\": 30 } },\n\t\t\t\t\t\t{ \"name\": \"haran-geppaku-futsu\" }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 73, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 80.5, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/4.3.json",
    "content": "{\n\t\"patch\": 4.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"in-the-name-of-the-rosula-1\",\n\t\t\t\t\t\t\t\"character\": \"navia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-heron_s-court-4\",\n\t\t\t\t\t\t\t\"character\": \"kamisato-ayaka\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 10 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"candace\", \"rosaria\", \"sucrose\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-57\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"verdict\" },\n\t\t\t\t\t\t{ \"name\": \"mistsplitter-reforged\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"akuoumaru\", \"mouun_s-moon\", \"the-flute\", \"favonius-codex\", \"dragon_s-bane\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 70, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-4\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tapestry-of-golden-flames-5\",\n\t\t\t\t\t\t\t\"character\": \"yoimiya\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"chevreuse\", \"kujou-sara\", \"bennett\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-58\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"engulfing-lightning\", \"buttonPosition\": { \"l\": 60 } },\n\t\t\t\t\t\t{ \"name\": \"thundering-pulse\", \"buttonPosition\": { \"l\": 40 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 46, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/4.4.json",
    "content": "{\n\t\"patch\": 4.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-crane-soars-skyward-1\",\n\t\t\t\t\t\t\t\"character\": \"xianyun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-moongrass-enlightenment-3\",\n\t\t\t\t\t\t\t\"character\": \"nahida\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 10 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"gaming\", \"faruzan\", \"noelle\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-59\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"cranes-echoing-call\" },\n\t\t\t\t\t\t{ \"name\": \"a-thousand-floating-dreams\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"sacrificial-bow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 68, \"w\": 28 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 23 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"invitation-to-mundane-life-5\",\n\t\t\t\t\t\t\t\"character\": \"xiao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"everbloom-violet-4\",\n\t\t\t\t\t\t\t\"character\": \"yae-miko\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 48, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xinyan\", \"ningguang\", \"yaoyao\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-60\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"kagura_s-verity\", \"buttonPosition\": { \"l\": 35 } },\n\t\t\t\t\t\t{ \"name\": \"primordial-jade-winged-spear\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48, \"t\": 70, \"w\": 18 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 23 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/banners/events/4.5.json",
    "content": "{\n\t\"patch\": 4.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"of-silken-clouds-woven-1\",\n\t\t\t\t\t\t\t\"character\": \"chiori\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"oni_s-royale-4\",\n\t\t\t\t\t\t\t\"character\": \"arataki-itto\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yun-jin\", \"gorou\", \"dori\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-61\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"uraku-misugiri\" }, { \"name\": \"redhorn-stonethresher\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"alley-hunter\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"the-bell\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 73, \"w\": 28 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"ode-to-the-dawn-breeze-1\",\n\t\t\t\t\t\"region\": \"mondstadt\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\"eula\", \"mona\", \"albedo\", \"klee\", \"diluc\", \"jean\"],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"skyward-blade\",\n\t\t\t\t\t\t\t\"aquila-favonia\",\n\t\t\t\t\t\t\t\"beacon-of-the-reed-sea\",\n\t\t\t\t\t\t\t\"song-of-broken-pines\",\n\t\t\t\t\t\t\t\"wolf_s-gravestone\",\n\t\t\t\t\t\t\t\"skyward-pride\",\n\t\t\t\t\t\t\t\"skyward-spine\",\n\t\t\t\t\t\t\t\"lost-prayer-to-the-sacred-winds\",\n\t\t\t\t\t\t\t\"skyward-atlas\",\n\t\t\t\t\t\t\t\"hunter_s-path\",\n\t\t\t\t\t\t\t\"skyward-harp\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\"rust\", \"lion_s-roar\", \"rainslasher\", \"eye-of-perception\", \"dragon_s-bane\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"decree-of-the-deeps-2\",\n\t\t\t\t\t\t\t\"character\": \"neuvillette\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"leaves-in-the-wind-4\",\n\t\t\t\t\t\t\t\"character\": \"kaedehara-kazuha\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yanfei\", \"xingqiu\", \"barbara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-62\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"tome-of-the-eternal-flow\" },\n\t\t\t\t\t\t{ \"name\": \"freedom-sworn\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"wine-and-song\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"mitternachts-waltz\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44, \"t\": 73, \"w\": 28 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 19 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/4.6.json",
    "content": "{\n\t\"patch\": 4.6,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-hearths-ashen-shadow-1\",\n\t\t\t\t\t\t\t\"character\": \"arlecchino\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 12.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"conjuring-chiaroscuro-2\",\n\t\t\t\t\t\t\t\"character\": \"lyney\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 12.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiangling\", \"freminet\", \"lynette\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-63\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"crimson_moon_s-semblance\" },\n\t\t\t\t\t\t{ \"name\": \"the-first-great-magic\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-dockhands-assistant\",\n\t\t\t\t\t\t\"portable-power-saw\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 45, \"t\": 70, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"from-ashes-reborn-3\",\n\t\t\t\t\t\t\t\"character\": \"wanderer\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 13 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"immaculate-pulse-3\",\n\t\t\t\t\t\t\t\"character\": \"baizhu\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 55, \"b\": 13 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"beidou\", \"faruzan\", \"layla\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-64\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [{ \"name\": \"tulaytullah_s-remembrance\" }, { \"name\": \"jadefall-splendor\" }],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"prospector-drill\",\n\t\t\t\t\t\t\"range-gauge\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"rainslasher\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 45, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/4.7.json",
    "content": "{\n\t\"patch\": 4.7,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"illuminating-lightning-1\",\n\t\t\t\t\t\t\t\"character\": \"clorinde\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"caution-in-confidence-3\",\n\t\t\t\t\t\t\t\"character\": \"alhaitham\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"thoma\", \"sethos\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-65\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"absolution\" },\n\t\t\t\t\t\t{ \"name\": \"light-of-foliar-incision\", \"buttonPosition\": { \"l\": 50 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 73, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"romaritime-meluserenity-1\",\n\t\t\t\t\t\t\t\"character\": \"sigewinne\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"chanson-of-many-waters-2\",\n\t\t\t\t\t\t\t\"character\": \"furina\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"noelle\", \"rosaria\", \"gaming\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-66\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"silvershower-heartstrings\", \"buttonPosition\": { \"l\": 40 } },\n\t\t\t\t\t\t{ \"name\": \"splendor-of-tranquil-waters\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-lance\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49, \"t\": 66 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 24 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/4.8.json",
    "content": "{\n\t\"patch\": 4.8,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"in-the-name-of-the-rosula-2\",\n\t\t\t\t\t\t\t\"character\": \"navia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"twirling-lotus-3\",\n\t\t\t\t\t\t\t\"character\": \"nilou\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"ningguang\", \"kaveh\", \"kirara\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-67\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"verdict\" },\n\t\t\t\t\t\t{ \"name\": \"key-of-khaj-nisut\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xiphos-moonlight\", \"rust\", \"dragon_s-bane\", \"the-bell\", \"eye-of-perception\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47, \"t\": 73 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 18, \"w\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ambrosial-essence-1\",\n\t\t\t\t\t\t\t\"character\": \"emilie\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"discerner-of-enigmas-4\",\n\t\t\t\t\t\t\t\"character\": \"yelan\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.75 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"razor\", \"xiangling\", \"yanfei\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-68\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"lumidouce-elegy\" },\n\t\t\t\t\t\t{ \"name\": \"aqua-simulacra\", \"buttonPosition\": { \"l\": 75 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"makhaira-aquamarine\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"wandering-evenstar\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 62 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 28, \"w\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.0.json",
    "content": "{\n\t\"patch\": 5.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sharktacular-surfari-1\",\n\t\t\t\t\t\t\t\"character\": \"mualani\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 49, \"b\": 14 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"leaves-in-the-wind-5\",\n\t\t\t\t\t\t\t\"character\": \"kaedehara-kazuha\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 14 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"kachina\", \"bennett\", \"xinyan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-69\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"surfs-up\" },\n\t\t\t\t\t\t{ \"name\": \"freedom-sworn\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49.5, \"t\": 71 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79.5, \"b\": 18, \"w\": 17 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"seeker-of-flame-wrought-secrets-1\",\n\t\t\t\t\t\t\t\"character\": \"kinich\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 13 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-5\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 47, \"b\": 13 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"chevreuse\", \"kujou-sara\", \"thoma\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-70\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"fang-of-the-mountain-king\" },\n\t\t\t\t\t\t{ \"name\": \"engulfing-lightning\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"rainslasher\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 21 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.1.json",
    "content": "{\n\t\"patch\": 5.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"forgefires-blessing-1\",\n\t\t\t\t\t\t\t\"character\": \"xilonen\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"of-silken-clouds-woven-2\",\n\t\t\t\t\t\t\t\"character\": \"chiori\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"collei\", \"dori\", \"candace\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-71\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"peak-patrol-song\" },\n\t\t\t\t\t\t{ \"name\": \"uraku-misugiri\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"sturdy-bone\",\n\t\t\t\t\t\t\"mountain-bracing-bolt\",\n\t\t\t\t\t\t\"favonius-codex\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 20, \"w\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-moongrass-enlightenment-4\",\n\t\t\t\t\t\t\t\"character\": \"nahida\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moment-of-bloom-5\",\n\t\t\t\t\t\t\t\"character\": \"hu-tao\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 8.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"kuki-shinobu\", \"xingqiu\", \"sethos\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-72\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"a-thousand-floating-dreams\", \"buttonPosition\": { \"l\": 35 } },\n\t\t\t\t\t\t{ \"name\": \"staff-of-homa\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"fruitful-hook\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"eye-of-perception\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47.5, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 22, \"w\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.2.json",
    "content": "{\n\t\"patch\": 5.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"piercing-shots-crimson-wake-1\",\n\t\t\t\t\t\t\t\"character\": \"chasca\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 52, \"b\": 8.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"conjuring-chiaroscuro-3\",\n\t\t\t\t\t\t\t\"character\": \"lyney\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 52, \"b\": 8.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"sucrose\", \"ororon\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-73\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"astral-vultures-crimson-plumage\" },\n\t\t\t\t\t\t{ \"name\": \"the-first-great-magic\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"waveriding-whirl\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"flower-wreathed-feathers\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-lance\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49.5, \"t\": 63 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 25 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"decree-of-the-deeps-3\",\n\t\t\t\t\t\t\t\"character\": \"neuvillette\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 52, \"b\": 8.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-6\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 52, \"b\": 8.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"yaoyao\", \"fischl\", \"shikanoin-heizou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-74\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"tome-of-the-eternal-flow\" },\n\t\t\t\t\t\t{ \"name\": \"vortex-vanquisher\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49.5, \"t\": 63 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 23 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.3.json",
    "content": "{\n\t\"patch\": 5.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ancient-flame-ablaze-1\",\n\t\t\t\t\t\t\t\"character\": \"mavuika\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"starry-nights-whispers-1\",\n\t\t\t\t\t\t\t\"character\": \"citlali\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"kachina\", \"diona\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-75\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"a-thousand-blazing-suns\", \"buttonPosition\": { \"l\": 30 } },\n\t\t\t\t\t\t{ \"name\": \"starcallers-watch\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-blade\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"favonius-lance\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-hearths-ashen-shadow-2\",\n\t\t\t\t\t\t\t\"character\": \"arlecchino\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"illuminating-lightning-2\",\n\t\t\t\t\t\t\t\"character\": \"clorinde\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"rosaria\", \"chevreuse\", \"lan-yan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-76\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"crimson_moon_s-semblance\" },\n\t\t\t\t\t\t{ \"name\": \"absolution\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lithic-spear\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"sacrificial-bow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 45.5, \"t\": 68 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77.5, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"remembrance-of-jade-and-stone-1\",\n\t\t\t\t\t\"region\": \"liyue\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\"baizhu\", \"shenhe\", \"keqing\", \"ganyu\", \"xiao\", \"tartaglia\", \"qiqi\"],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"primordial-jade-cutter\",\n\t\t\t\t\t\t\t\"summit-shaper\",\n\t\t\t\t\t\t\t\"the-unforged\",\n\t\t\t\t\t\t\t\"calamity-queller\",\n\t\t\t\t\t\t\t\"primordial-jade-winged-spear\",\n\t\t\t\t\t\t\t\"jadefall-splendor\",\n\t\t\t\t\t\t\t\"memory-of-dust\",\n\t\t\t\t\t\t\t\"polar-star\",\n\t\t\t\t\t\t\t\"amos-bow\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\"rust\", \"lion_s-roar\", \"rainslasher\", \"eye-of-perception\", \"dragon_s-bane\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.4.json",
    "content": "{\n\t\"patch\": 5.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"dawns-drifting-reverie-1\",\n\t\t\t\t\t\t\t\"character\": \"yumemizuki-mizuki\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"romaritime-meluserenity-2\",\n\t\t\t\t\t\t\t\"character\": \"sigewinne\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"sayu\", \"xiangling\", \"gorou\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-77\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"sunny-morning-sleep-in\" },\n\t\t\t\t\t\t{ \"name\": \"silvershower-heartstrings\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"akuoumaru\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"wavebreaker_s-fin\",\n\t\t\t\t\t\t\"mouun_s-moon\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 72 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78, \"b\": 18 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 4,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"chanson-of-many-waters-3\",\n\t\t\t\t\t\t\t\"character\": \"furina\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 51, \"b\": 11 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"tempestuous-destiny-2\",\n\t\t\t\t\t\t\t\"character\": \"wriothesley\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 11 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"mika\", \"chongyun\", \"charlotte\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-78\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"splendor-of-tranquil-waters\" },\n\t\t\t\t\t\t{ \"name\": \"cashflow-supervision\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47.5, \"t\": 65 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.5.json",
    "content": "{\n\t\"patch\": 5.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"cornucopia-of-contention-1\",\n\t\t\t\t\t\t\t\"character\": \"varesa\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 46.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-crane-soars-skyward-2\",\n\t\t\t\t\t\t\t\"character\": \"xianyun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 46.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"iansan\", \"gaming\", \"chevreuse\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-79\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"vivid-notions\" },\n\t\t\t\t\t\t{ \"name\": \"cranes-echoing-call\", \"buttonPosition\": { \"l\": 70, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sturdy-bone\",\n\t\t\t\t\t\t\"mountain-bracing-bolt\",\n\t\t\t\t\t\t\"fruitful-hook\",\n\t\t\t\t\t\t\"waveriding-whirl\",\n\t\t\t\t\t\t\"flower-wreathed-feathers\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 50, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 21 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"forgefires-blessing-2\",\n\t\t\t\t\t\t\t\"character\": \"xilonen\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-6\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"beidou\", \"yanfei\", \"faruzan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-80\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"peak-patrol-song\" },\n\t\t\t\t\t\t{ \"name\": \"elegy-for-the-end\", \"buttonPosition\": { \"l\": 70, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"favonius-warbow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 73 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75, \"b\": 21 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.6.json",
    "content": "{\n\t\"patch\": 5.6,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"la-chanson-cerise-1\",\n\t\t\t\t\t\t\t\"character\": \"escoffier\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"in-the-name-of-the-rosula-3\",\n\t\t\t\t\t\t\t\"character\": \"navia\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"layla\", \"ororon\", \"ifa\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-81\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"symphonist-of-scents\" },\n\t\t\t\t\t\t{ \"name\": \"verdict\", \"buttonPosition\": { \"l\": 70, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"prospector-drill\",\n\t\t\t\t\t\t\"portable-power-saw\",\n\t\t\t\t\t\t\"range-gauge\",\n\t\t\t\t\t\t\"the-dockhands-assistant\",\n\t\t\t\t\t\t\"the-widsith\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47.5, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77.5, \"b\": 18, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"seeker-of-flame-wrought-secrets-2\",\n\t\t\t\t\t\t\t\"character\": \"kinich\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"reign-of-serenity-6\",\n\t\t\t\t\t\t\t\"character\": \"raiden-shogun\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"lynette\", \"kujou-sara\", \"thoma\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-82\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"fang-of-the-mountain-king\" },\n\t\t\t\t\t\t{ \"name\": \"engulfing-lightning\", \"buttonPosition\": { \"l\": 62.5, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 43.5, \"t\": 70, \"w\": 29 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 78.5, \"b\": 21 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"thunder-rends-the-plains-on-high-1\",\n\t\t\t\t\t\"region\": \"inazuma\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"kamisato-ayaka\",\n\t\t\t\t\t\t\t\"kamisato-ayato\",\n\t\t\t\t\t\t\t\"yoimiya\",\n\t\t\t\t\t\t\t\"chiori\",\n\t\t\t\t\t\t\t\"yae-miko\",\n\t\t\t\t\t\t\t\"arataki-itto\",\n\t\t\t\t\t\t\t\"sangonomiya-kokomi\",\n\t\t\t\t\t\t\t\"kaedehara-kazuha\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"uraku-misugiri\",\n\t\t\t\t\t\t\t\"haran-geppaku-futsu\",\n\t\t\t\t\t\t\t\"mistsplitter-reforged\",\n\t\t\t\t\t\t\t\"freedom-sworn\",\n\t\t\t\t\t\t\t\"redhorn-stonethresher\",\n\t\t\t\t\t\t\t\"kagura_s-verity\",\n\t\t\t\t\t\t\t\"everlasting-moonglow\",\n\t\t\t\t\t\t\t\"thundering-pulse\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\"akuoumaru\", \"wavebreaker_s-fin\", \"mouun_s-moon\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.7.json",
    "content": "{\n\t\"patch\": 5.7,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"void-stars-advent-1\",\n\t\t\t\t\t\t\t\"character\": \"skirk\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-transcendent-one-returns-3\",\n\t\t\t\t\t\t\t\"character\": \"shenhe\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"diona\", \"dahlia\", \"candace\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-83\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"azurelight\" },\n\t\t\t\t\t\t{ \"name\": \"calamity-queller\", \"buttonPosition\": { \"l\": 60, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"xiphos-moonlight\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"makhaira-aquamarine\",\n\t\t\t\t\t\t\"wandering-evenstar\",\n\t\t\t\t\t\t\"sacrificial-bow\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 47.5, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79.5, \"b\": 18, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ancient-flame-ablaze-2\",\n\t\t\t\t\t\t\t\"character\": \"mavuika\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ambrosial-essence-2\",\n\t\t\t\t\t\t\t\"character\": \"emilie\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"iansan\", \"xiangling\", \"yaoyao\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-84\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"a-thousand-blazing-suns\" },\n\t\t\t\t\t\t{ \"name\": \"lumidouce-elegy\", \"buttonPosition\": { \"l\": 60, \"t\": 30 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"the-flute\", \"rust\", \"dragon_s-bane\", \"rainslasher\", \"sacrificial-fragments\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 79.5, \"b\": 22 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/5.8.json",
    "content": "{\n\t\"patch\": 5.8,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"astral-actuation-1\",\n\t\t\t\t\t\t\t\"character\": \"ineffa\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"starry-nights-whispers-2\",\n\t\t\t\t\t\t\t\"character\": \"citlali\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"xingqiu\", \"fischl\", \"sethos\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-85\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"fractured-halo\", \"buttonPosition\": { \"l\": 20, \"t\": 30 } },\n\t\t\t\t\t\t{ \"name\": \"starcallers-watch\", \"buttonPosition\": { \"l\": 70, \"t\": 40 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"mountain-bracing-bolt\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"sturdy-bone\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 49.5, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"sharktacular-surfari-2\",\n\t\t\t\t\t\t\t\"character\": \"mualani\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"piercing-shots-crimson-wake-2\",\n\t\t\t\t\t\t\t\"character\": \"chasca\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"ororon\", \"ifa\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-86\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"surfs-up\", \"buttonPosition\": { \"l\": 30, \"t\": 40 } },\n\t\t\t\t\t\t{ \"name\": \"astral-vultures-crimson-plumage\", \"buttonPosition\": { \"l\": 70, \"t\": 10 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"waveriding-whirl\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"flower-wreathed-feathers\",\n\t\t\t\t\t\t\"fruitful-hook\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 51, \"t\": 65 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.0.json",
    "content": "{\n\t\"patch\": 6.0,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moonsong-of-the-groves-1\",\n\t\t\t\t\t\t\t\"character\": \"lauma\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-moongrass-enlightenment-5\",\n\t\t\t\t\t\t\t\"character\": \"nahida\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"barbara\", \"kuki-shinobu\", \"kaveh\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-87\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"nightweavers-looking-glass\" },\n\t\t\t\t\t\t{ \"name\": \"a-thousand-floating-dreams\", \"buttonPosition\": { \"l\": 70, \"t\": 40 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44.5, \"t\": 64 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"roving-chalice-of-dewgrass-1\",\n\t\t\t\t\t\"region\": \"sumeru\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\"dehya\", \"alhaitham\", \"wanderer\", \"cyno\", \"nilou\", \"tighnari\"],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"light-of-foliar-incision\",\n\t\t\t\t\t\t\t\"key-of-khaj-nisut\",\n\t\t\t\t\t\t\t\"beacon-of-the-reed-sea\",\n\t\t\t\t\t\t\t\"staff-of-the-scarlet-sands\",\n\t\t\t\t\t\t\t\"tulaytullah_s-remembrance\",\n\t\t\t\t\t\t\t\"hunter_s-path\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\n\t\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\t\"favonius-warbow\"\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-lone-light-knocks-at-night-1\",\n\t\t\t\t\t\t\t\"character\": \"flins\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"discerner-of-enigmas-5\",\n\t\t\t\t\t\t\t\"character\": \"yelan\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"dori\", \"sucrose\", \"aino\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-88\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"bloodsoaked-ruins\" },\n\t\t\t\t\t\t{ \"name\": \"aqua-simulacra\", \"buttonPosition\": { \"l\": 75 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 43.5, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77, \"b\": 25 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.1.json",
    "content": "{\n\t\"patch\": 6.1,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"temptation-of-the-crimson-sands-1\",\n\t\t\t\t\t\t\t\"character\": \"nefer\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"chanson-of-many-waters-4\",\n\t\t\t\t\t\t\t\"character\": \"furina\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"collei\", \"xingqiu\", \"yaoyao\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-89\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"reliquary-of-truth\" },\n\t\t\t\t\t\t{ \"name\": \"splendor-of-tranquil-waters\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"dawning-frost\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\"sacrificers-staff\",\n\t\t\t\t\t\t\"moonweavers-dawn\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 36.5, \"t\": 64, \"w\": 35 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 23, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-hearths-ashen-shadow-3\",\n\t\t\t\t\t\t\t\"character\": \"arlecchino\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"gentry-of-hermitage-7\",\n\t\t\t\t\t\t\t\"character\": \"zhongli\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"rosaria\", \"yun-jin\", \"lan-yan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-90\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"crimson_moon_s-semblance\" },\n\t\t\t\t\t\t{ \"name\": \"vortex-vanquisher\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-dockhands-assistant\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"portable-power-saw\",\n\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\"range-gauge\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 36.5, \"t\": 64, \"w\": 35 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 72.5, \"b\": 23, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.2.json",
    "content": "{\n\t\"patch\": 6.2,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"rubedo-of-white-stone-born-1\",\n\t\t\t\t\t\t\t\"character\": \"durin\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ballad-in-goblets-7\",\n\t\t\t\t\t\t\t\"character\": \"venti\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"jahoda\", \"faruzan\", \"bennett\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-91\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"the-daybreak-chronicles\" },\n\t\t\t\t\t\t{ \"name\": \"athame-artis\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"the-alley-flash\",\n\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\"prospector-drill\",\n\t\t\t\t\t\t\"wine-and-song\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 67, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 23, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"cornucopia-of-contention-2\",\n\t\t\t\t\t\t\t\"character\": \"varesa\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"forgefires-blessing-3\",\n\t\t\t\t\t\t\t\"character\": \"xilonen\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"gaming\", \"chevreuse\", \"iansan\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-92\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"vivid-notions\" },\n\t\t\t\t\t\t{ \"name\": \"peak-patrol-song\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"fruitful-hook\",\n\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"alley-hunter\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 48.5, \"t\": 67 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 23, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.3.json",
    "content": "{\n\t\"patch\": 6.3,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"somnias-a-luna-1\",\n\t\t\t\t\t\t\t\"character\": \"columbina\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"astral-actuation-2\",\n\t\t\t\t\t\t\t\"character\": \"ineffa\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"fischl\", \"sethos\", \"ifa\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-93\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"nocturnes-curtain-call\" },\n\t\t\t\t\t\t{ \"name\": \"fractured-halo\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"waveriding-whirl\",\n\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\"mitternachts-waltz\",\n\t\t\t\t\t\t\"mountain-bracing-bolt\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 70, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"harmonious-abundance-1\",\n\t\t\t\t\t\t\t\"character\": \"zibai\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"decree-of-the-deeps-4\",\n\t\t\t\t\t\t\t\"character\": \"neuvillette\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 46, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"gorou\", \"aino\", \"illuga\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-94\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"lightbearing-moonshard\" },\n\t\t\t\t\t\t{ \"name\": \"tome-of-the-eternal-flow\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"xiphos-moonlight\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"dragon_s-bane\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 41.5, \"t\": 70, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 74.5, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.4.json",
    "content": "{\n\t\"patch\": 6.4,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-northerly-winds-song-of-triumph-1\",\n\t\t\t\t\t\t\t\"character\": \"varka\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"the-lone-light-knocks-at-night-2\",\n\t\t\t\t\t\t\t\"character\": \"flins\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"bennett\", \"xiangling\", \"sucrose\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-95\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"gest-of-the-mighty-wolf\" },\n\t\t\t\t\t\t{ \"name\": \"bloodsoaked-ruins\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"sacrificers-staff\",\n\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\"sacrificial-fragments\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 70, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 75.5, \"b\": 20, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"ode-to-the-dawn-breeze-1\",\n\t\t\t\t\t\"region\": \"mondstadt\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\"eula\", \"mona\", \"albedo\", \"klee\", \"diluc\", \"jean\"],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"skyward-blade\",\n\t\t\t\t\t\t\t\"aquila-favonia\",\n\t\t\t\t\t\t\t\"song-of-broken-pines\",\n\t\t\t\t\t\t\t\"wolf_s-gravestone\",\n\t\t\t\t\t\t\t\"skyward-pride\",\n\t\t\t\t\t\t\t\"skyward-spine\",\n\t\t\t\t\t\t\t\"lost-prayer-to-the-sacred-winds\",\n\t\t\t\t\t\t\t\"skyward-atlas\",\n\t\t\t\t\t\t\t\"elegy-for-the-end\",\n\t\t\t\t\t\t\t\"skyward-harp\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\"rust\", \"lion_s-roar\", \"rainslasher\", \"eye-of-perception\", \"dragon_s-bane\"]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"void-stars-advent-2\",\n\t\t\t\t\t\t\t\"character\": \"skirk\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"la-chanson-cerise-2\",\n\t\t\t\t\t\t\t\"character\": \"escoffier\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"charlotte\", \"candace\", \"dahlia\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-96\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"symphonist-of-scents\" },\n\t\t\t\t\t\t{ \"name\": \"azurelight\", \"buttonPosition\": { \"l\": 65 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"the-flute\", \"rust\", \"favonius-lance\", \"the-bell\", \"favonius-codex\"],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44, \"t\": 70 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5, \"b\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/events/6.5.json",
    "content": "{\n\t\"patch\": 6.5,\n\t\"data\": [\n\t\t{\n\t\t\t\"phase\": 1,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"ya-hoho-compendium-1\",\n\t\t\t\t\t\t\t\"character\": \"linnea\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"piercing-shots-crimson-wake-3\",\n\t\t\t\t\t\t\t\"character\": \"chasca\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"noelle\", \"aino\", \"illuga\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-97\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"golden-frostbound-oath\" },\n\t\t\t\t\t\t{ \"name\": \"astral-vultures-crimson-plumage\", \"buttonPosition\": { \"l\": 70 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"flower-wreathed-feathers\",\n\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\"sacrificial-greatsword\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 42.5, \"t\": 67, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 77.5, \"b\": 16, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"phase\": 2,\n\t\t\t\"banners\": {\n\t\t\t\t\"standardVersion\": 5,\n\t\t\t\t\"events\": {\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"moonsong-of-the-groves-2\",\n\t\t\t\t\t\t\t\"character\": \"lauma\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"bannerName\": \"temptation-of-the-crimson-sands-2\",\n\t\t\t\t\t\t\t\"character\": \"nefer\",\n\t\t\t\t\t\t\t\"textOffset\": { \"l\": 50.5, \"b\": 10.5 }\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\"jahoda\", \"kirara\", \"xingqiu\"]\n\t\t\t\t},\n\t\t\t\t\"weapons\": {\n\t\t\t\t\t\"bannerName\": \"epitome-invocation-98\",\n\t\t\t\t\t\"fatepointsystem\": true,\n\t\t\t\t\t\"featured\": [\n\t\t\t\t\t\t{ \"name\": \"nightweavers-looking-glass\" },\n\t\t\t\t\t\t{ \"name\": \"reliquary-of-truth\", \"buttonPosition\": { \"l\": 60 } }\n\t\t\t\t\t],\n\t\t\t\t\t\"rateup\": [\n\t\t\t\t\t\t\"dawning-frost\",\n\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\"favonius-warbow\",\n\t\t\t\t\t\t\"rainslasher\"\n\t\t\t\t\t],\n\t\t\t\t\t\"textOffset\": {\n\t\t\t\t\t\t\"featured\": { \"l\": 44.5, \"t\": 67, \"w\": 30 },\n\t\t\t\t\t\t\"rateup\": { \"l\": 76.5, \"b\": 22, \"w\": 20 }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"chronicled\": {\n\t\t\t\t\t\"bannerName\": \"dewlit-tranquility-1\",\n\t\t\t\t\t\"region\": \"fontaine\",\n\t\t\t\t\t\"characters\": {\n\t\t\t\t\t\t\"5star\": [\"emilie\", \"clorinde\", \"sigewinne\", \"navia\", \"lyney\"],\n\t\t\t\t\t\t\"4star\": []\n\t\t\t\t\t},\n\t\t\t\t\t\"weapons\": {\n\t\t\t\t\t\t\"5star\": [\n\t\t\t\t\t\t\t\"absolution\",\n\t\t\t\t\t\t\t\"verdict\",\n\t\t\t\t\t\t\t\"lumidouce-elegy\",\n\t\t\t\t\t\t\t\"silvershower-heartstrings\",\n\t\t\t\t\t\t\t\"the-first-great-magic\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"4star\": [\n\t\t\t\t\t\t\t\"the-dockhand-assistant\",\n\t\t\t\t\t\t\t\"lion_s-roar\",\n\t\t\t\t\t\t\t\"sacrificial-sword\",\n\t\t\t\t\t\t\t\"the-flute\",\n\t\t\t\t\t\t\t\"favonius-sword\",\n\t\t\t\t\t\t\t\"portable-power-saw\",\n\t\t\t\t\t\t\t\"rainslasher\",\n\t\t\t\t\t\t\t\"sacrificial-greatsword\",\n\t\t\t\t\t\t\t\"the-bell\",\n\t\t\t\t\t\t\t\"favonius-greatsword\",\n\t\t\t\t\t\t\t\"prospector-drill\",\n\t\t\t\t\t\t\t\"favonius-lance\",\n\t\t\t\t\t\t\t\"dragon_s-bane\",\n\t\t\t\t\t\t\t\"eye-of-perception\",\n\t\t\t\t\t\t\t\"sacrificial-fragments\",\n\t\t\t\t\t\t\t\"the-widsith\",\n\t\t\t\t\t\t\t\"favonius-codex\",\n\t\t\t\t\t\t\t\"range-gauge\",\n\t\t\t\t\t\t\t\"rust\",\n\t\t\t\t\t\t\t\"sacrificial-bow\",\n\t\t\t\t\t\t\t\"the-stringless\",\n\t\t\t\t\t\t\t\"favonius-warbow\"\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/banners/standard.json",
    "content": "{\n\t\"standard\": [\n\t\t{\n\t\t\t\"version\": 1,\n\t\t\t\"characters\": [\"qiqi\", \"keqing\", \"diluc\", \"mona\", \"jean\"],\n\t\t\t\"featured\": {\n\t\t\t\t\"bannerName\": \"wanderlust-invocation-1\",\n\t\t\t\t\"character\": \"jean\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"version\": 2,\n\t\t\t\"characters\": [\"qiqi\", \"keqing\", \"diluc\", \"mona\", \"jean\"],\n\t\t\t\"featured\": {\n\t\t\t\t\"bannerName\": \"wanderlust-invocation-2\",\n\t\t\t\t\"character\": \"qiqi\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"version\": 3,\n\t\t\t\"characters\": [\"qiqi\", \"keqing\", \"diluc\", \"mona\", \"jean\", \"tighnari\"],\n\t\t\t\"featured\": {\n\t\t\t\t\"bannerName\": \"wanderlust-invocation-2\",\n\t\t\t\t\"character\": \"qiqi\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"version\": 4,\n\t\t\t\"characters\": [\"qiqi\", \"keqing\", \"diluc\", \"mona\", \"jean\", \"tighnari\", \"dehya\"],\n\t\t\t\"featured\": {\n\t\t\t\t\"bannerName\": \"wanderlust-invocation-2\",\n\t\t\t\t\"character\": \"qiqi\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"version\": 5,\n\t\t\t\"characters\": [\n\t\t\t\t\"qiqi\",\n\t\t\t\t\"keqing\",\n\t\t\t\t\"diluc\",\n\t\t\t\t\"mona\",\n\t\t\t\t\"jean\",\n\t\t\t\t\"tighnari\",\n\t\t\t\t\"dehya\",\n\t\t\t\t\"yumemizuki-mizuki\"\n\t\t\t],\n\t\t\t\"featured\": {\n\t\t\t\t\"bannerName\": \"wanderlust-invocation-2\",\n\t\t\t\t\"character\": \"qiqi\"\n\t\t\t}\n\t\t}\n\t]\n}\n\n"
  },
  {
    "path": "src/lib/data/characters.json",
    "content": "{\n\t\"onlyStandard\": [\"amber\", \"kaeya\", \"lisa\"],\n\t\"data\": [\n\t\t{\n\t\t\t\"itemID\": 10000130,\n\t\t\t\"name\": \"linnea\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -4.520491803278689, \"y\": 1.3469945355191255, \"scale\": 1.45 },\n\t\t\t\t\"wishCard\": { \"x\": -97.89781972014318, \"y\": 53.489749430523915, \"scale\": 9.76 },\n\t\t\t\t\"button\": { \"w\": 125, \"t\": 34.5, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000128,\n\t\t\t\"name\": \"varka\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.083333333333333, \"y\": 0.1297814207650273, \"scale\": 1.74 },\n\t\t\t\t\"wishCard\": { \"x\": -56.49528148389196, \"y\": 76.86104783599089, \"scale\": 14.94 },\n\t\t\t\t\"button\": { \"w\": 125, \"t\": 34.5, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000127,\n\t\t\t\"name\": \"illuga\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"release\": \"6.4-2\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 5.28551912568306, \"y\": -1.8114754098360657, \"scale\": 2.12 },\n\t\t\t\t\"wishCard\": { \"x\": -7.448747152619589, \"y\": 37.83143507972665, \"scale\": 14.15 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000126,\n\t\t\t\"name\": \"zibai\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.07377049180327869, \"y\": 1.8743169398907105, \"scale\": 2.15 },\n\t\t\t\t\"wishCard\": { \"x\": 5.681744223885454, \"y\": 68.3371298405467, \"scale\": 15.72 },\n\t\t\t\t\"button\": { \"w\": 110, \"t\": 37.5, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000125,\n\t\t\t\"name\": \"columbina\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 5.28551912568306, \"y\": -1.8114754098360657, \"scale\": 2.12 },\n\t\t\t\t\"wishCard\": { \"x\": -7.448747152619589, \"y\": 37.83143507972665, \"scale\": 14.15 },\n\t\t\t\t\"button\": { \"w\": 110, \"t\": 37.5, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000123,\n\t\t\t\"name\": \"durin\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.8563685636856366, \"y\": 1.28319783197832, \"scale\": 1.72 },\n\t\t\t\t\"wishCard\": { \"x\": -41.12544340535311, \"y\": 64.91873589164786, \"scale\": 14.02 },\n\t\t\t\t\"button\": { \"w\": 90, \"t\": 35, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000124,\n\t\t\t\"name\": \"jahoda\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"6.2-1\",\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.262872628726287, \"y\": -0.7506775067750677, \"scale\": 1.16 },\n\t\t\t\t\"wishCard\": { \"x\": 40.525636891325384, \"y\": 51.686230248307, \"scale\": 7.45 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000122,\n\t\t\t\"name\": \"nefer\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.4634146341463414, \"y\": -2.752032520325203, \"scale\": 1.56 },\n\t\t\t\t\"wishCard\": { \"x\": 10.515962592712029, \"y\": 60.35665914221219, \"scale\": 11.98 },\n\t\t\t\t\"button\": { \"w\": 125, \"t\": 30, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000121,\n\t\t\t\"name\": \"aino\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"6.0-2\",\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0, \"y\": 0, \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": 7.1106094808126405, \"y\": 31.435665914221218, \"scale\": 5.75 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000120,\n\t\t\t\"name\": \"flins\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 10.117886178861788, \"y\": -0.9119241192411925, \"scale\": 1.64 },\n\t\t\t\t\"wishCard\": { \"x\": 93.82134795227347, \"y\": 77.48984198645597, \"scale\": 12.4 },\n\t\t\t\t\"button\": { \"w\": 125, \"t\": 20, \"l\": 75 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000119,\n\t\t\t\"name\": \"lauma\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.2032520325203255, \"y\": 1.9254742547425474, \"scale\": 1.6 },\n\t\t\t\t\"wishCard\": { \"x\": 1.8381167365366011, \"y\": 69.26185101580134, \"scale\": 12.02 },\n\t\t\t\t\"button\": { \"w\": 135, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000116,\n\t\t\t\"name\": \"ineffa\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"nodkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.2588075880758807, \"y\": 1.3116531165311651, \"scale\": 1.3 },\n\t\t\t\t\"wishCard\": { \"x\": -25.84972589487262, \"y\": 61.64785553047405, \"scale\": 9.36 },\n\t\t\t\t\"button\": { \"w\": 135, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000115,\n\t\t\t\"name\": \"dahlia\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.7-1\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.548780487804878, \"y\": 3.5027100271002714, \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": -12.828119961302805, \"y\": 69.18735891647856, \"scale\": 7.23 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000114,\n\t\t\t\"name\": \"skirk\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"abyss\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 12.990514905149054, \"y\": -1.3672086720867207, \"scale\": 1.96 },\n\t\t\t\t\"wishCard\": { \"x\": 135.565946468881, \"y\": 63.5079006772009, \"scale\": 13.73 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 112, \"t\": 32 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000113,\n\t\t\t\"name\": \"ifa\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.6-1\",\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.5867208672086721, \"y\": -3.6910569105691056, \"scale\": 1.27 },\n\t\t\t\t\"wishCard\": { \"x\": -91.25765881973558, \"y\": 50.59367945823927, \"scale\": 11.02 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000112,\n\t\t\t\"name\": \"escoffier\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 5.464769647696476, \"y\": 3.560975609756098, \"scale\": 1.43 },\n\t\t\t\t\"wishCard\": { \"x\": -21.47694292163818, \"y\": 52.67268623024831, \"scale\": 10.12 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 130, \"t\": 32 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000110,\n\t\t\t\"name\": \"iansan\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.5-1\",\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 4.855013550135501, \"y\": 5.098915989159892, \"scale\": 1.18 },\n\t\t\t\t\"wishCard\": { \"x\": 41.89938729442116, \"y\": 32.02257336343116, \"scale\": 7.3 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000111,\n\t\t\t\"name\": \"varesa\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 6.746612466124661, \"y\": -0.5284552845528455, \"scale\": 1.61 },\n\t\t\t\t\"wishCard\": { \"x\": 28.819735569171236, \"y\": 49.846501128668166, \"scale\": 10.12 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 120, \"t\": 32 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000109,\n\t\t\t\"name\": \"yumemizuki-mizuki\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.8346883468834689, \"y\": 1.0284552845528454, \"scale\": 1.25 },\n\t\t\t\t\"wishCard\": { \"x\": -28.2005804579168, \"y\": 53.783295711060944, \"scale\": 8.79 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 105, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000108,\n\t\t\t\"name\": \"lan-yan\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.3-2\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.2168021680216803, \"y\": 1.8685636856368562, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": 23.41180264430829, \"y\": 61.07900677200902, \"scale\": 7.54 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000107,\n\t\t\t\"name\": \"citlali\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.5501355013550135, \"y\": 4.318428184281843, \"scale\": 1.51 },\n\t\t\t\t\"wishCard\": { \"x\": -14.646888100612706, \"y\": 53.32505643340858, \"scale\": 10.5 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 105, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000106,\n\t\t\t\"name\": \"mavuika\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 7.662601626016259, \"y\": -5.4593495934959355, \"scale\": 1.97 },\n\t\t\t\t\"wishCard\": { \"x\": 89.31312479845211, \"y\": 40.893905191873586, \"scale\": 15.44 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 130, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000104,\n\t\t\t\"name\": \"chasca\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.5081300813008129, \"y\": 7.1436314363143625, \"scale\": 1.8 },\n\t\t\t\t\"wishCard\": { \"x\": 11.357626572073526, \"y\": 59.379232505643344, \"scale\": 13.08 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 130, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000105,\n\t\t\t\"name\": \"ororon\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.2-1\",\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.6282245827010624, \"y\": 1.0440060698027314, \"scale\": 1.27 },\n\t\t\t\t\"wishCard\": { \"x\": -38.149190710767066, \"y\": 80.44334975369458, \"scale\": 11.45 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000103,\n\t\t\t\"name\": \"xilonen\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.45528455284552843, \"y\": -0.09891598915989158, \"scale\": 1.57 },\n\t\t\t\t\"wishCard\": { \"x\": -15.98194130925508, \"y\": 65.66591422121896, \"scale\": 11.45 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 115, \"t\": 25 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000101,\n\t\t\t\"name\": \"kinich\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.49189189189189186, \"y\": -0.5472972972972973, \"scale\": 1.44 },\n\t\t\t\t\"wishCard\": { \"x\": 54.05998065140278, \"y\": 33.25507900677201, \"scale\": 9.55 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 115, \"t\": 37 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000102,\n\t\t\t\"name\": \"mualani\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.6693766937669374, \"y\": 3.781842818428184, \"scale\": 1.57 },\n\t\t\t\t\"wishCard\": { \"x\": -56.16326530612245, \"y\": 61.77857142857144, \"scale\": 11.13 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 115, \"t\": 37 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000100,\n\t\t\t\"name\": \"kachina\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"5.0-1\",\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.5203252032520325, \"y\": 0.5040650406504066, \"scale\": 1.1 },\n\t\t\t\t\"wishCard\": { \"x\": -20.722347629796843, \"y\": 51.65237020316027, \"scale\": 7.88 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000099,\n\t\t\t\"name\": \"emilie\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.12195121951219512, \"y\": -3.384823848238482, \"scale\": 1.38 },\n\t\t\t\t\"wishCard\": { \"x\": -5.291841341502741, \"y\": 55.98194130925508, \"scale\": 10.38 },\n\t\t\t\t\"button\": { \"l\": 45, \"w\": 86, \"t\": 36 },\n\t\t\t\t\"banner\": { \"w\": 165, \"t\": 65, \"l\": 55 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000095,\n\t\t\t\"name\": \"sigewinne\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -4.485175202156334, \"y\": -12.950134770889488, \"scale\": 1.42 },\n\t\t\t\t\"wishCard\": { \"x\": -31.30979133226324, \"y\": 24.140515222482435, \"scale\": 10.17 },\n\t\t\t\t\"button\": { \"l\": 52, \"w\": 115, \"t\": 37 },\n\t\t\t\t\"banner\": { \"w\": 185, \"t\": 35, \"l\": 48 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000097,\n\t\t\t\"name\": \"sethos\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.7-1\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.3598382749326146, \"y\": -1.446091644204852, \"scale\": 1.32 },\n\t\t\t\t\"wishCard\": { \"x\": 33.621187800963085, \"y\": 54.912359550561796, \"scale\": 10.37 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000098,\n\t\t\t\"name\": \"clorinde\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.42140921409214094, \"y\": 0.39701897018970195, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -57.94904869396969, \"y\": 54.09706546275396, \"scale\": 9.55 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 125, \"t\": 35 },\n\t\t\t\t\"banner\": { \"w\": 160, \"t\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10000096,\n\t\t\t\"name\": \"arlecchino\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.778461538461538, \"y\": -9.604615384615386, \"scale\": 2 },\n\t\t\t\t\"wishCard\": { \"x\": 42.50357142857143, \"y\": 54, \"scale\": 15.72 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 105, \"t\": 25 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 168,\n\t\t\t\"name\": \"chiori\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.7650602409638554, \"y\": 0.5783132530120482, \"scale\": 1.44 },\n\t\t\t\t\"wishCard\": { \"x\": 2.451973454418442, \"y\": 69.08068459657703, \"scale\": 10.95 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 105, \"t\": 25 },\n\t\t\t\t\"banner\": { \"w\": 165, \"t\": 68, \"l\": 53 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 166,\n\t\t\t\"name\": \"gaming\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.4-1\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.1118598382749325, \"y\": 2.095687331536388, \"scale\": 1.32 },\n\t\t\t\t\"wishCard\": { \"x\": 39.35256861365236, \"y\": 54.08866995073891, \"scale\": 11.51 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 165,\n\t\t\t\"name\": \"xianyun\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.095687331536388, \"y\": 2.7439353099730455, \"scale\": 1.64 },\n\t\t\t\t\"wishCard\": { \"x\": -52.757624398073844, \"y\": 77.34831460674158, \"scale\": 14.35 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 125, \"t\": 25 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 164,\n\t\t\t\"name\": \"chevreuse\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.3-2\",\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.49195710455764075, \"y\": -10.837801608579088, \"scale\": 1.09 },\n\t\t\t\t\"wishCard\": { \"x\": 7.69894534995206, \"y\": 21.16331096196868, \"scale\": 7.91 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 162,\n\t\t\t\"name\": \"navia\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -5.14436090225564, \"y\": -0.968421052631579, \"scale\": 1.48 },\n\t\t\t\t\"wishCard\": { \"x\": -82.53611556982344, \"y\": 68.28539325842696, \"scale\": 10.9 },\n\t\t\t\t\"button\": { \"l\": 55, \"w\": 110, \"t\": 35 },\n\t\t\t\t\"banner\": { \"w\": 190, \"t\": 78, \"l\": 43 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 160,\n\t\t\t\"name\": \"furina\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.4444444444444446, \"y\": -11.197368421052632, \"scale\": 2.08 },\n\t\t\t\t\"wishCard\": { \"x\": -69.38581608415338, \"y\": 31.947743467933492, \"scale\": 13.73 },\n\t\t\t\t\"button\": { \"l\": 55, \"w\": 115, \"t\": 27.5 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 159,\n\t\t\t\"name\": \"charlotte\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.2-1\",\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.1495956873315364, \"y\": -3.9474393530997305, \"scale\": 1.1 },\n\t\t\t\t\"wishCard\": { \"x\": -2.2293858160841533, \"y\": 39.605700712589076, \"scale\": 7.9 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 71,\n\t\t\t\"name\": \"wriothesley\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.888888888888889, \"y\": 2.038011695906433, \"scale\": 1.56 },\n\t\t\t\t\"wishCard\": { \"x\": -62.076688157448245, \"y\": 80.78859857482186, \"scale\": 12.43 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 120, \"t\": 25 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 70,\n\t\t\t\"name\": \"neuvillette\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.5891812865497075, \"y\": -1.637426900584795, \"scale\": 1.45 },\n\t\t\t\t\"wishCard\": { \"x\": -12.846963013233797, \"y\": 71.27553444180522, \"scale\": 12.02 },\n\t\t\t\t\"button\": { \"l\": 54, \"w\": 105, \"t\": 20 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 69,\n\t\t\t\"name\": \"freminet\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.0-2\",\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -4.552631578947368, \"y\": 3.0877192982456143, \"scale\": 1.5 },\n\t\t\t\t\"wishCard\": { \"x\": -106.73566338649474, \"y\": 54.09738717339667, \"scale\": 9.56 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 68,\n\t\t\t\"name\": \"lynette\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"4.0-1\",\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.1023391812865497, \"y\": 0.10964912280701754, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 2.646759416355616, \"y\": 47.96199524940617, \"scale\": 8.03 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 67,\n\t\t\t\"name\": \"lyney\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.8581871345029242, \"y\": 2.621345029239766, \"scale\": 1.76 },\n\t\t\t\t\"wishCard\": { \"x\": -37.45164574143197, \"y\": 65, \"scale\": 12.4 },\n\t\t\t\t\"button\": { \"l\": 55, \"w\": 105, \"t\": 20 },\n\t\t\t\t\"banner\": { \"w\": 200, \"t\": 74, \"l\": 53 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 66,\n\t\t\t\"name\": \"kirara\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.7-1\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.5701754385964912, \"y\": 10.7953216374269, \"scale\": 1.52 },\n\t\t\t\t\"wishCard\": { \"x\": 52.96572785883949, \"y\": 87.36579572446556, \"scale\": 10.5 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 65,\n\t\t\t\"name\": \"baizhu\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.381578947368421, \"y\": 9.837719298245615, \"scale\": 1.51 },\n\t\t\t\t\"wishCard\": { \"x\": 64.92704445198507, \"y\": 75.93824228028502, \"scale\": 11.26 },\n\t\t\t\t\"button\": { \"l\": 50, \"w\": 105, \"t\": 35 },\n\t\t\t\t\"banner\": { \"w\": 185, \"t\": 83, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 64,\n\t\t\t\"name\": \"kaveh\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.6-2\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.618421052631579, \"y\": -1.752923976608187, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -5.039022734984731, \"y\": 84.58669833729216, \"scale\": 10.12 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 63,\n\t\t\t\"name\": \"mika\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.5-2\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.638888888888889, \"y\": -1.6944444444444442, \"scale\": 1.09 },\n\t\t\t\t\"wishCard\": { \"x\": 37.90973871733967, \"y\": 52.26128266033254, \"scale\": 7.23 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 62,\n\t\t\t\"name\": \"dehya\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.3304093567251463, \"y\": -0.3494152046783626, \"scale\": 1.72 },\n\t\t\t\t\"wishCard\": { \"x\": -10.831353919239906, \"y\": 74.64133016627078, \"scale\": 13.16 },\n\t\t\t\t\"button\": { \"w\": 130, \"t\": 24, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 206, \"t\": 80 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 61,\n\t\t\t\"name\": \"alhaitham\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.09502923976608187, \"y\": -1.4181286549707601, \"scale\": 1.28 },\n\t\t\t\t\"wishCard\": { \"x\": -6.65761791652528, \"y\": 77.5059382422803, \"scale\": 9.98 },\n\t\t\t\t\"button\": { \"w\": 130, \"t\": 24, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 161, \"t\": 82, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 60,\n\t\t\t\"name\": \"yaoyao\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.4-1\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.118421052631579, \"y\": -2.416666666666667, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": -21.072276891754328, \"y\": 34.06175771971496, \"scale\": 5.94 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 59,\n\t\t\t\"name\": \"wanderer\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.8084795321637426, \"y\": -0.9035087719298245, \"scale\": 1.33 },\n\t\t\t\t\"wishCard\": { \"x\": -10.851713607058025, \"y\": 57.80522565320665, \"scale\": 9.34 },\n\t\t\t\t\"button\": { \"w\": 120, \"t\": 27 },\n\t\t\t\t\"banner\": { \"w\": 152, \"t\": 70, \"l\": 52 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 58,\n\t\t\t\"name\": \"faruzan\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.3-1\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.7763157894736842, \"y\": -3.3362573099415203, \"scale\": 1.32 },\n\t\t\t\t\"wishCard\": { \"x\": 29.27723108245674, \"y\": 52.073634204275535, \"scale\": 7.97 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 57,\n\t\t\t\"name\": \"layla\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.2-2\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.103801169590643, \"y\": -2.5350877192982457, \"scale\": 1.19 },\n\t\t\t\t\"wishCard\": { \"x\": 2.9216152019002375, \"y\": 42.89786223277909, \"scale\": 6.7 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 56,\n\t\t\t\"name\": \"nahida\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.7383040935672515, \"y\": -1.6695906432748537, \"scale\": 1.53 },\n\t\t\t\t\"wishCard\": { \"x\": 41.136749236511704, \"y\": 35.771971496437054, \"scale\": 9.94 },\n\t\t\t\t\"button\": { \"w\": 130, \"t\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 55,\n\t\t\t\"name\": \"nilou\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.320175438596491, \"y\": -1.6754385964912282, \"scale\": 1.44 },\n\t\t\t\t\"wishCard\": { \"x\": -18.50695622667119, \"y\": 59.363420427553436, \"scale\": 9.74 },\n\t\t\t\t\"button\": { \"w\": 145, \"t\": 35, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 165, \"t\": 69, \"l\": 51 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 54,\n\t\t\t\"name\": \"cyno\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.491228070175439, \"y\": -9.956140350877192, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": -0.01017984390906006, \"y\": 42.16627078384798, \"scale\": 9.55 },\n\t\t\t\t\"button\": { \"w\": 160, \"t\": 35, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 165, \"t\": 57, \"l\": 56 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 53,\n\t\t\t\"name\": \"candace\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.1-1\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.3814016172506738, \"y\": -1.04177897574124, \"scale\": 1.44 },\n\t\t\t\t\"wishCard\": { \"x\": -21.004815409309792, \"y\": 46.05842696629214, \"scale\": 9.3 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 52,\n\t\t\t\"name\": \"dori\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.0-2\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": -27.02748557855446, \"y\": 49.93586698337292, \"scale\": 7.46 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 51,\n\t\t\t\"name\": \"tighnari\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.5555555555555556, \"y\": -1.3362573099415207, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": 1.170682049541907, \"y\": 61.194774346793345, \"scale\": 7.84 },\n\t\t\t\t\"button\": { \"w\": 95, \"t\": 35, \"l\": 30 },\n\t\t\t\t\"banner\": { \"w\": 146, \"t\": 80, \"l\": 56 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 50,\n\t\t\t\"name\": \"collei\",\n\t\t\t\"vision\": \"dendro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"3.0-1\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.31725146198830406, \"y\": -4.959064327485381, \"scale\": 1.31 },\n\t\t\t\t\"wishCard\": { \"x\": 66.53545978961655, \"y\": 38.87648456057007, \"scale\": 8.42 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 49,\n\t\t\t\"name\": \"shikanoin-heizou\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.8-1\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.675438596491228, \"y\": -1.1140350877192984, \"scale\": 1.21 },\n\t\t\t\t\"wishCard\": { \"x\": -2.3006447234475735, \"y\": 44.09263657957245, \"scale\": 7.27 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 48,\n\t\t\t\"name\": \"kuki-shinobu\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.7-2\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.5526315789473684, \"y\": -0.12719298245614036, \"scale\": 1.28 },\n\t\t\t\t\"wishCard\": { \"x\": -29.491007804547, \"y\": 48.66270783847981, \"scale\": 8.03 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 47,\n\t\t\t\"name\": \"yelan\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.43713450292397665, \"y\": -5.400584795321637, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": 22.212419409569055, \"y\": 59.54394299287411, \"scale\": 9.19 },\n\t\t\t\t\"button\": { \"w\": 100, \"t\": 32, \"l\": 50 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 46,\n\t\t\t\"name\": \"kamisato-ayato\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 5.092105263157895, \"y\": 0.9590643274853801, \"scale\": 1.41 },\n\t\t\t\t\"wishCard\": { \"x\": 35.41567695961995, \"y\": 74.40380047505938, \"scale\": 10.5 },\n\t\t\t\t\"button\": { \"w\": 140, \"t\": 35, \"l\": 50 },\n\t\t\t\t\"banner\": { \"w\": 158, \"t\": 78, \"l\": 62 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 45,\n\t\t\t\"name\": \"yae-miko\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.988304093567251, \"y\": -1.3157894736842104, \"scale\": 1.21 },\n\t\t\t\t\"wishCard\": { \"x\": -33.15575161180862, \"y\": 62.634204275534444, \"scale\": 8.44 },\n\t\t\t\t\"button\": { \"w\": 170, \"t\": 24, \"l\": 50 },\n\t\t\t\t\"banner\": { \"w\": 135, \"t\": 74 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 44,\n\t\t\t\"name\": \"shenhe\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -6.16812865497076, \"y\": -4.779239766081871, \"scale\": 1.44 },\n\t\t\t\t\"wishCard\": { \"x\": -62.544960977265006, \"y\": 58.826603325415675, \"scale\": 9.93 },\n\t\t\t\t\"button\": { \"w\": 170, \"t\": 20, \"l\": 30 },\n\t\t\t\t\"banner\": { \"w\": 165, \"l\": 45, \"t\": 70 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 43,\n\t\t\t\"name\": \"yun-jin\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.4-1\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.3669590643274853, \"y\": -1.6871345029239766, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": 9.100780454699695, \"y\": 49.19239904988124, \"scale\": 6.53 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 42,\n\t\t\t\"name\": \"arataki-itto\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.3187134502923974, \"y\": -1.5526315789473684, \"scale\": 1.38 },\n\t\t\t\t\"wishCard\": { \"x\": 29.98982015609094, \"y\": 66.81710213776722, \"scale\": 9.98 },\n\t\t\t\t\"button\": { \"w\": 180, \"t\": 20, \"l\": 60 },\n\t\t\t\t\"banner\": { \"w\": 155, \"t\": 70, \"l\": 58 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 41,\n\t\t\t\"name\": \"gorou\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.3-2\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.1052631578947367, \"y\": -0.9312865497076023, \"scale\": 1.28 },\n\t\t\t\t\"wishCard\": { \"x\": 35.54801493043773, \"y\": 49.82422802850356, \"scale\": 8.36 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 40,\n\t\t\t\"name\": \"thoma\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.2-2\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.2514619883040936, \"y\": 0.8391812865497077, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 40.6277570410587, \"y\": 58.20902612826604, \"scale\": 8.41 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 39,\n\t\t\t\"name\": \"sangonomiya-kokomi\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.7222222222222223, \"y\": 2.41812865497076, \"scale\": 1.21 },\n\t\t\t\t\"wishCard\": { \"x\": 20.746521886664404, \"y\": 53.70071258907364, \"scale\": 7.460000000000001 },\n\t\t\t\t\"button\": { \"w\": 180, \"t\": 25, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 125, \"t\": 66, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 38,\n\t\t\t\"name\": \"raiden-shogun\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.3406432748538015, \"y\": -2.334795321637427, \"scale\": 1.29 },\n\t\t\t\t\"wishCard\": { \"x\": 13.172718018323717, \"y\": 54.24228028503564, \"scale\": 8.77 },\n\t\t\t\t\"button\": { \"w\": 160, \"t\": 5 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 37,\n\t\t\t\"name\": \"kujou-sara\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.1-1\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 4.29093567251462, \"y\": -0.3421052631578947, \"scale\": 1.31 },\n\t\t\t\t\"wishCard\": { \"x\": 28.22870715982355, \"y\": 73.31591448931117, \"scale\": 9.45 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 36,\n\t\t\t\"name\": \"yoimiya\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.887426900584795, \"y\": -5.245614035087719, \"scale\": 1.5 },\n\t\t\t\t\"wishCard\": { \"x\": -14.211062097047847, \"y\": 40.53681710213777, \"scale\": 8.27 },\n\t\t\t\t\"button\": { \"w\": 150, \"t\": 20, \"l\": 40 },\n\t\t\t\t\"banner\": { \"w\": 150, \"t\": 55, \"l\": 53 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 35,\n\t\t\t\"name\": \"sayu\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"2.0-2\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.3596491228070176, \"y\": -6.853801169590644, \"scale\": 1.5 },\n\t\t\t\t\"wishCard\": { \"x\": -71.29962673905668, \"y\": 42.02612826603326, \"scale\": 8.87 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 34,\n\t\t\t\"name\": \"kamisato-ayaka\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.8669590643274854, \"y\": -3.818713450292398, \"scale\": 1.61 },\n\t\t\t\t\"wishCard\": { \"x\": 14.292500848320325, \"y\": 51.496437054631826, \"scale\": 12.67 },\n\t\t\t\t\"button\": { \"w\": 82, \"t\": 32 },\n\t\t\t\t\"banner\": { \"w\": 200, \"t\": 59, \"l\": 57 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 33,\n\t\t\t\"name\": \"kaedehara-kazuha\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.4853801169590644, \"y\": 2.1505847953216377, \"scale\": 1.33 },\n\t\t\t\t\"wishCard\": { \"x\": 21.418391584662366, \"y\": 70.61520190023754, \"scale\": 9.52 },\n\t\t\t\t\"button\": { \"w\": 110, \"t\": 32 },\n\t\t\t\t\"banner\": { \"w\": 152, \"t\": 74, \"l\": 57 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 32,\n\t\t\t\"name\": \"eula\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 3.56140350877193, \"y\": -1.8128654970760234, \"scale\": 1.34 },\n\t\t\t\t\"wishCard\": { \"x\": 6.118086189345096, \"y\": 64.99287410926365, \"scale\": 9.74 },\n\t\t\t\t\"button\": { \"w\": 140, \"t\": 32 },\n\t\t\t\t\"banner\": { \"w\": 170, \"t\": 80, \"l\": 55 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 31,\n\t\t\t\"name\": \"yanfei\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.5-1\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 7.014619883040934, \"y\": -0.15789473684210528, \"scale\": 1.46 },\n\t\t\t\t\"wishCard\": { \"x\": 169.04648795385137, \"y\": 59.320665083135395, \"scale\": 8.9 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 30,\n\t\t\t\"name\": \"rosaria\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.4-2\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.608187134502924, \"y\": -5.552631578947368, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": 11.309806582965727, \"y\": 64.11163895486936, \"scale\": 8.95 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 29,\n\t\t\t\"name\": \"hu-tao\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.0453216374269, \"y\": 2.6067251461988303, \"scale\": 1.64 },\n\t\t\t\t\"wishCard\": { \"x\": -139.93213437393962, \"y\": 55.42992874109264, \"scale\": 11.75 },\n\t\t\t\t\"button\": { \"w\": 160, \"t\": 22 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 28,\n\t\t\t\"name\": \"xiao\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.4035087719298246, \"y\": -17.27777777777778, \"scale\": 1.56 },\n\t\t\t\t\"wishCard\": { \"x\": 14.475738038683408, \"y\": 17.52256532066508, \"scale\": 9.55 },\n\t\t\t\t\"button\": { \"w\": 120, \"t\": 30, \"l\": 50 },\n\t\t\t\t\"banner\": { \"w\": 163, \"l\": 56, \"t\": 32 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 27,\n\t\t\t\"name\": \"ganyu\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.703216374269006, \"y\": -2.995614035087719, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 14.577536477774009, \"y\": 54.7790973871734, \"scale\": 8.03 },\n\t\t\t\t\"button\": { \"w\": 200, \"t\": 25 },\n\t\t\t\t\"banner\": { \"w\": 158, \"t\": 71, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 26,\n\t\t\t\"name\": \"albedo\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.35233918128654973, \"y\": -3.8289473684210527, \"scale\": 1.59 },\n\t\t\t\t\"wishCard\": { \"x\": -44.16016287750254, \"y\": 57.07600950118764, \"scale\": 11.09 },\n\t\t\t\t\"button\": { \"w\": 170, \"t\": 28, \"l\": 50 },\n\t\t\t\t\"banner\": { \"w\": 180, \"t\": 70 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 25,\n\t\t\t\"name\": \"zhongli\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 4.168128654970761, \"y\": -8.782163742690058, \"scale\": 1.61 },\n\t\t\t\t\"wishCard\": { \"x\": 41.58466236851035, \"y\": 43.56294536817102, \"scale\": 8.92 },\n\t\t\t\t\"button\": { \"w\": 120, \"t\": 25, \"l\": 70 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 24,\n\t\t\t\"name\": \"xinyan\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.1-2\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.2017543859649122, \"y\": -3.8976608187134505, \"scale\": 1.6 },\n\t\t\t\t\"wishCard\": { \"x\": -8.245673566338649, \"y\": 48.96912114014252, \"scale\": 11.1 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 23,\n\t\t\t\"name\": \"tartaglia\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"snezhnaya\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 9.15204678362573, \"y\": -13.576023391812866, \"scale\": 1.73 },\n\t\t\t\t\"wishCard\": { \"x\": 67.8486596538853, \"y\": 43.60095011876485, \"scale\": 13.21 },\n\t\t\t\t\"button\": { \"w\": 160, \"t\": 22 },\n\t\t\t\t\"banner\": { \"w\": 220, \"t\": 55, \"l\": 68 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 22,\n\t\t\t\"name\": \"diona\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.1-1\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": 53.44418052256532, \"y\": 39.942992874109265, \"scale\": 5.48 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 21,\n\t\t\t\"name\": \"klee\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": -3.37970817780794, \"y\": 20.831353919239906, \"scale\": 5.18 },\n\t\t\t\t\"button\": { \"w\": 110, \"t\": 32 },\n\t\t\t\t\"banner\": { \"t\": 40, \"l\": 55 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 20,\n\t\t\t\"name\": \"venti\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.776315789473684, \"y\": -3.442982456140351, \"scale\": 1.35 },\n\t\t\t\t\"wishCard\": { \"x\": 33.0335934848999, \"y\": 43.27553444180523, \"scale\": 7.8 },\n\t\t\t\t\"button\": { \"w\": 180, \"t\": 30, \"l\": 50 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 19,\n\t\t\t\"name\": \"keqing\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -7.773391812865498, \"y\": -3.5029239766081877, \"scale\": 1.4 },\n\t\t\t\t\"wishCard\": { \"x\": -52.00882253138786, \"y\": 55.12351543942992, \"scale\": 8.41 },\n\t\t\t\t\"button\": { \"w\": 150, \"t\": 22, \"l\": 50 },\n\t\t\t\t\"banner\": { \"w\": 145, \"t\": 65, \"l\": 45 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 18,\n\t\t\t\"name\": \"mona\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.1023391812865497, \"y\": -0.4473684210526315, \"scale\": 1.6 },\n\t\t\t\t\"wishCard\": { \"x\": 10.902612826603326, \"y\": 52.65320665083135, \"scale\": 10.88 },\n\t\t\t\t\"banner\": { \"w\": 185, \"t\": 70, \"l\": 55 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 17,\n\t\t\t\"name\": \"qiqi\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.7865497076023393, \"y\": -6.584795321637427, \"scale\": 1.31 },\n\t\t\t\t\"wishCard\": { \"x\": 0.1526976586359009, \"y\": 32.69121140142518, \"scale\": 7.84 },\n\t\t\t\t\"button\": { \"w\": 100, \"t\": 30 },\n\t\t\t\t\"banner\": { \"w\": 135, \"l\": 54 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 16,\n\t\t\t\"name\": \"diluc\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -7.963450292397662, \"y\": -22.713450292397663, \"scale\": 1.93 },\n\t\t\t\t\"wishCard\": { \"x\": -75.45300305395317, \"y\": 17.840855106888363, \"scale\": 11.36 },\n\t\t\t\t\"banner\": { \"w\": 200, \"l\": 42, \"t\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 15,\n\t\t\t\"name\": \"jean\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.7412280701754383, \"y\": -3.0804093567251463, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 32.412623006447234, \"y\": 61.74109263657957, \"scale\": 9.17 },\n\t\t\t\t\"button\": { \"w\": 90, \"t\": 35, \"l\": 55 },\n\t\t\t\t\"banner\": { \"w\": 140, \"l\": 60, \"t\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14,\n\t\t\t\"name\": \"sucrose\",\n\t\t\t\"vision\": \"anemo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.9181286549707602, \"y\": -4.638888888888889, \"scale\": 1.19 },\n\t\t\t\t\"wishCard\": { \"x\": -4.886325076348829, \"y\": 55.403800475059384, \"scale\": 8 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13,\n\t\t\t\"name\": \"chongyun\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -9.397660818713451, \"y\": -2.641812865497076, \"scale\": 1.33 },\n\t\t\t\t\"wishCard\": { \"x\": -58.33050559891415, \"y\": 52.65320665083135, \"scale\": 8.6 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 12,\n\t\t\t\"name\": \"noelle\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.2266081871345031, \"y\": -2.2002923976608186, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": -40.84153376314896, \"y\": 56.8978622327791, \"scale\": 7.08 },\n\t\t\t\t\"button\": { \"w\": 100, \"t\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11,\n\t\t\t\"name\": \"bennett\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.196765498652291, \"y\": -6.913746630727763, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": -73.58908507223114, \"y\": 34.95505617977528, \"scale\": 7.19 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 10,\n\t\t\t\"name\": \"fischl\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.10818713450292397, \"y\": -13.786549707602338, \"scale\": 1.3 },\n\t\t\t\t\"wishCard\": { \"x\": -41.808618934509674, \"y\": 31.313539192399055, \"scale\": 7.32 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 9,\n\t\t\t\"name\": \"ningguang\",\n\t\t\t\"vision\": \"geo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -4.739766081871346, \"y\": -3.9356725146198834, \"scale\": 1.56 },\n\t\t\t\t\"wishCard\": { \"x\": -83.59687818120123, \"y\": 60.17577197149644, \"scale\": 10.49 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 8,\n\t\t\t\"name\": \"xingqiu\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.10526315789473684, \"y\": -3.628654970760234, \"scale\": 1.09 },\n\t\t\t\t\"wishCard\": { \"x\": -17.051238547675602, \"y\": 65.82660332541568, \"scale\": 7.65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 7,\n\t\t\t\"name\": \"beidou\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.570080862533693, \"y\": 8.859838274932613, \"scale\": 1.49 },\n\t\t\t\t\"wishCard\": { \"x\": -22.468699839486355, \"y\": 76.61123595505617, \"scale\": 10.08 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 6,\n\t\t\t\"name\": \"xiangling\",\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.4415204678362574, \"y\": -2.9517543859649122, \"scale\": 1.5 },\n\t\t\t\t\"wishCard\": { \"x\": 60.73294876145232, \"y\": 59.62470308788599, \"scale\": 9.16 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 5,\n\t\t\t\"name\": \"razor\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -3.8377192982456143, \"y\": -14.513157894736842, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -75.56498133695284, \"y\": 29.57007125890736, \"scale\": 8.22 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 4,\n\t\t\t\"name\": \"barbara\",\n\t\t\t\"vision\": \"hydro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.9663072776280326, \"y\": -0.6037735849056605, \"scale\": 1.3 },\n\t\t\t\t\"wishCard\": { \"x\": -0.8042076688157448, \"y\": 52.12351543942992, \"scale\": 7.75 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 3,\n\t\t\t\"name\": \"lisa\",\n\t\t\t\"vision\": \"electro\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": 7.695961995249406, \"y\": 68.85748218527316, \"scale\": 7.29 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 2,\n\t\t\t\"name\": \"kaeya\",\n\t\t\t\"vision\": \"cryo\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.8786549707602338, \"y\": -0.3508771929824561, \"scale\": 1.28 },\n\t\t\t\t\"wishCard\": { \"x\": -33.07431286053614, \"y\": 76.2541567695962, \"scale\": 9.2 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 1,\n\t\t\t\"name\": \"amber\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"vision\": \"pyro\",\n\t\t\t\"release\": \"1.0-0\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.62, \"y\": -5.56, \"scale\": 1.46 },\n\t\t\t\t\"wishCard\": { \"x\": 66, \"y\": 37.80674157303371, \"scale\": 7.71 }\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/country.json",
    "content": "{\n\t\"localeName\": {\n\t\t\"zh-CN\": \"简体中文 (CHS)\",\n\t\t\"zh-TW\": \"繁體中文 (CHT)\",\n\t\t\"de-DE\": \"Deutsch (DE)\",\n\t\t\"en-US\": \"English (EN)\",\n\t\t\"fr-FR\": \"Français (FR)\",\n\t\t\"id-ID\": \"Indonesia (ID)\",\n\t\t\"it-IT\": \"Italiano (IT)\",\n\t\t\"ja-JP\": \"日本語 (JA)\",\n\t\t\"ko-KR\": \"한국어 (KR)\",\n\t\t\"pt-BR\": \"Português (PT)\",\n\t\t\"ru-RU\": \"Русский (RU)\",\n\t\t\"th-TH\": \"ภาษาไทย (TH)\",\n\t\t\"vi-VN\": \"Tiếng Việt (VI)\"\n\t},\n\t\"flags\": {\n\t\t\"de-DE\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzOTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzQTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjM3MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM4MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aBEH3AAAAChJREFUeNpiYBgFo2CAAOMNmhnNxDBq9KjReBPf/3OjATJqNB4AEGAA+2UCvgLMJf0AAAAASUVORK5CYII=\",\n\t\t\"en-US\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYyMDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYyMTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EXnauAAABW1JREFUeNrEVm1QVGUUfu7dXZBYvuRj1yATNT5FxCClTNLUFNBJrfxRZjOKkVLqGA2okGGDhA44ToqT1pigA9qAhkho4kiCqRhgCKwBg5IiLCDs8rEid0/vvVfWGD/K/nR27u7Ofc85z/Oe9znnXi52S4Eh49sy9DS1AE6OgJsdYDYDhOFWr8fi+Ej8kByBuoDX0FOtA6dUwVrrignNlxG1vQT7Yg8B492Gx3HsUvBAmxHoNEAdFoyYqDAoUzeF2322djbS0k9h53el6NXdAEY6Aa6PIfBvTQTkGaBeBOxmgCFYFz0Dy5z0GJe7FbzxdAlc1CokJ4SjoSoRsQkLoXawAXTNLKhHZss9JaAY085idbdgN9EbcQfWo2JTIJLOpoCbOw0VR8+BvzUrDFe8X4Th5Blo7K2RmjQfjZWJiE9aBHtnW5lAe69IH9wTCMhrDLCD+epuwiHIFwmHGGCcH5LPpYCfHYrKY2VwPJyHoNYGoKXwNAlvRVItK2qVTzAZi0toyNqNAxT7eT6px2xkBQ+nsI+OSPdrJ4TRJWipXPkc/e4xWbq3OKGI+USSOmwPxX1fQ01nLhB9+AHVs7y/uXpSR3auJa+JXYB/Gi1LKaXiXTlUExRKvzDHinGB1L430+LYqjfS8k8yacmmEyQMCg8BCwN3KSqthN5dtZ+u7s4iYekS+kPMM8qL2nPyLHkq6jto6apDBJuPCVOXHSSvyH0UnVVPOrbYf7Gc6uYtpLqIt6kzt4AeZdV+IrCGyhUeVOkeRGbpw6zpGvVGR1PtjHl0p/DnYTFX20y08ouT5D13D730/kHiSNo2s/4+GE1m2DmpLec2qO8Ap1KxtlGAFwWj4iEYTagJjcTdaw1SOyldRsL31+Ow0joDBna+Ls6WeBIEUL9J+t9nuge1rTVgYyNromb8VBqSI+MNQSBwCgXTCSe3khhMw3vK3Nsnt9p9VfG2z7Af5q9UyqoW/QeFYZ2oUDA/jsdQfyp7G5ufukWVjg7si5dzMJB7f7Y8RO6fjMf/ZEqbMR4PGpGxFszDmXPi9JGalKTyihuTSi08KLXKYxT+3uTc0NSCnJNYHM+OjruPIflYxMUSm7qMsGJCkhZUSnDW1g8YiGAsl8BEUsvEZRoSlysTV1k+E5eLRMZsloFEwrza1hJ+19gHazsrca/yjhfFF+B2UycCfLWIWfkqArQjLM791XW4uXUbnNlIdYpbC3j6QGEjKYXxNMsCEzU1ij0YrKyGnV33ybPQ7z8gbg2jN3wKvb8f0nOv43xeKVw1avB5KbkYYerFmzPHW0CNpRdRHTwDTQG+eL6tAb0+gVifcRkrvipmIjdLupIQWekUolJZ0dZ8XYaYuBx0G+X2cZg1BXYhITCeKcWlCf4whM7E67fK4f6CB37MY3OyubXH0uTGkjK6Mmka1bBUg/PfoJajJyg9V0djlxxmx7GQQpdnP3ZkLogvZD7zyNk7kRKTC6mzX7Dk7TpeRJWeE6VpZn7vHbp+oph4Dzdb9F24jOrJ03F9+svwfXYE3PILsSc6A1Myu7Bu0Q405rNBCi3cNXaPValGfKBgDDpuG5C04TDGTtyML7efgmGA4BAxB4GNVXA5Voiqs9Uwhc8ELwI2TQ2G32hbaAqKsGvFboRkGRATsQ03fjoPeLkC7k6S+J7Uq/IaO3M3e8B7NLraepAQmw3PgM1gFUD3gBmOC+Zi0o2r0OQXQemjscKd3HxkWPkjPfMSGrLT2FhTyYBSrqd8ExAJsOknvclo7NHZasCWjUew+8AFrF3xCtasmQ2HyDlQ7lr9jXFnVjkac1IZIJO6l9t/A3wUAbpPQGuPjpZuqQI79p7D6qhp+EuAAQB9e+n65ZcRTgAAAABJRU5ErkJggg==\",\n\t\t\"fr-FR\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxODE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDQjc4RjdFMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTE2MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTE3MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NYcTvAAAADBJREFUeNpiZFCYz4Ab/L+fgEf2q7YTHlkmBpqBUaNHjR41etToUaNHjaad0QABBgAMOgSHJZqdhAAAAABJRU5ErkJggg==\",\n\t\t\"id-ID\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkxMDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkxMTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBFMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBGMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D76wCAAAAG9JREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERi0etZhmgOXP+w8DYzGbtOQ/KPsfHUP5H+Of9x/fAxkCQPyXThYzA/EHFmYBPmYkAXoB5tHsNGrxqMXUK7mgTR5eOjd9PgMEGACLNBM7Kx9mIgAAAABJRU5ErkJggg==\",\n\t\t\"it-IT\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyMDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMyMTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFGMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oQE2+QAAAJNJREFUeNpiZJjk9pSBgUEKiD8zYAM/PjHy8Ir9fZK47D8/OzcLUOQ/A3bA+O/nz79Xnf0Yftx7wMwiJIhLHS8QP2OBMhiQaGzgH5RmYsAP/kMxIXW8hBSgG0oNNUT5gGZg1OJRi0ctHrV41OJRi4e2xYxUUgMGLNAmDy/Opg/EsL/QSh5v0weqDgSY8agD2wUQYAAUKyFbP8LJRAAAAABJRU5ErkJggg==\",\n\t\t\"ja-JP\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2QjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2QzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTY5MTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sXSjEQAAAbhJREFUeNrklt8rg1EYx79n3k2WrWGY363EkgtJSVntgguJi5UbbuTSrf/CHTeukDulUVJKCRciGVIYiYvNhqZmm9H2eo/nfWlcbW9sk5zT89TpfTqf59c552Wc8xsAlSQR5GYYSPyMwOGPRS5H5O+BeUKUNZhWmxtwYHqBxIWn00vicugbrbAMO1E1OpgdsBR9wYFjCF73IuQYtSghzZDAAwlHVVMPWrfmIZiNmQXvdfbBt72CIjTQSiO78vGFKTqEc1haHOg43FAF1qix8k7Nwp+E4gtUqbYiJjTi9mgT1+OTqnKtCny3sAyBImNpzHVkdb+0mhnw6/MTYsfXtKmZ4pJS9TnVvRgvF36IsejPwVyenCdrmf6cJdXPwEJBIfTNdYgjmMZc7vAQ8ustEPSGzNS4zNkLUUkzT4Fl5Fwcpf3dqhKj+jjttHXh1r1OnW1T0v/pBFNmCB6Ybe3oPNlVE476cywGw9i3D8DvWUM+de97s0G5QOKky2vtaNt2QVddmvkrk0sSfBNzCMy4EDu7oqaToG+wooKuzJqxETAhL/uPhPgYlT2BYDLiGyPyP9/jX/n1eRNgAFs4yk+Ai07FAAAAAElFTkSuQmCC\",\n\t\t\"pt-BR\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRDhGOEMxMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRDhGOEMxMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzBGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TFbakQAABKdJREFUeNq8ll1sU2UYx3+n7en6uZVa1oGDwtYxnCw0EhiCxjgjH14oiV6Ampj4GRONRpQ4ZZEYvTAhwSxGjRFilO2GDy8gZuEGTAS2xUHmBvuAuVG70U0o++ranq6tz2mHc8YB48KTnL7pec/7/p////k/z3kV6h4ZAJz8v9e4SX4Wz3uZkoGEFWQgL343wE6Djj4vwJTEOpHPA64/qXIPw6Qj90yfmwdjw529N72pDjJlYufybloD52gKnOfDkk55ZpQ55+x3b8dBcjx2yxzrTJJmiFtYt2CIH9adY0VJCq5PY3ggeEXhueY1/HK9SKRPgFnujHJLxnMD64D6YmFpMCX4pOQSNRuvQKeRfYeqaOv2kpa4K/3DvPd0CwQ09p1ZQs3lMhJJG1gnwJCeK4A5gLPmsWSZbiocoK60i/LKGCe/9/HMru1Eki5MJNG3TGLGbR6j/tMjbHmpm76OPN7qXcmxcDGoU6JA7L/Ax41sXVaje3OGpeQr6qTAEqOu7AKf+3vw+KY4edBF9c7XUdIKRWoILX0VG2N4raPEkk72n6ii2tdD4OEIO8xDlNjHOT1ewGS0AEzJHHv+DkCbYayDxkWitIEdi4LsW96F1y4Ri2K4TRxsq+NseDXL3EFsihOTptLRc4X2kyEutPZzjWKqK4Y40XAAY1L2kvgjk0Z29pfz3eDSHKg1epP9DGNFSmKVbYKvy9rZXdKPQ0mTEJWMLujtdPPlkScYutjDxeYQkXCUPNWE11/A5h2VrKpeQrhjkKZujSfX9LO4YpK4mM9pzrCtSMrOHuGikBrWLGRydaSZssOUSrGq0bT6LPYFZB0bE2UMEpySD6FwHocOt4mBY7icZnpbhvkx+SsWye8Kv5fHX72f3Q1bqf8mTGjwOGt0frI2Jua2agi3CJtdzfhbH6JPwHXpc8DGKa6mjGzqWEvtkl62FEawSlrisghpTIWuKL4FThxWG+lUFNVqodCejyqsB4IR9u5qJFDp5/nabWzwecgMhciI2lapQomNU0EXe4KlhISgjqVfhpummjKmODPiYetvVbzSeR/jkmuL9AvxD+WrR6RsBgjd8OB2W9CSKWFkkFvBas9j+T0uLrRbOFa7n4X2ThTJr742LuBvdpXzaNt6fr5RSFI32HSHm+lcmenkSwP49o9Syls30jDozXrCKMO7LzQyGosRDOfjcJjErfHsnZ9vImNeKkG4eefln6BA9BUdj4YXslL2+KJ/hbDWcnv/45pdTjqKHpGAT4gZjg4V0x6zUpUeIfDYCGvdA9QfLyU46mE8qnJtTCUkKtnUNF99cICnXuxhsE/lte4Kai9XMJoSne0T0yxn1bJ2684lchNziIMn2VvWwxsPSu7OW/i4YT0dl4qkYyqU+8LUbG/CsSHG/pZFvN21komEHWzC0JCaZ+f6dwCaCJLIo9ozSP36cxRJUyI83asXwY2r8OzZAI3D94qsydyn8q579Rx9WzoHe3yX+cjfl5367Hcf7/eXSe+UMrHpsqZvBzoP4FlfKjV7CNjoDaHK/1Pig+zXSPrAHQDOOoHc+bFH39gkdaiOcfq6N2cYneXNuXmcQP4SYAD5sNLFPECeSAAAAABJRU5ErkJggg==\",\n\t\t\"ru-RU\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGQjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGQzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0Y5MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZBMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9CATwAAAEhJREFUeNpi/P///1MGBgYpIP7MQB/AC8TPWKAMBiSaLpYzMQwQGLWYboCRgeH//9GgHrV41GKqZCdgXhrNTqMWj1pMFQAQYAD5egotBoZoiQAAAABJRU5ErkJggg==\",\n\t\t\"th-TH\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1NjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzUzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MpuROAAAADdJREFUeNpivMcrykAbwMRAMzA0jWb8////aIAgBwiDSu1ogIwaPZpliAYs9/nERgOEPkYDBBgAYAkIxbRv61QAAAAASUVORK5CYII=\",\n\t\t\"vi-VN\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3ODRDOUJGRDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGRTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4NEM5QkZCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc4NEM5QkZDMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MKjEOwAAAg1JREFUeNrMVTtrFVEQnvPae3fvPryPRLmInQn2WkhMIYggGEHs0gqC2FhraSE2grW9VgF/hZWPQmMqCZFAQhTxZu8jZ3fPjLPXRiSsm5iAU83Oznz7zTdzzop37Tk4HpNwbFYXWkjATKAVojYZXTPPTYSZRXbyHSkbdHSsBWRj2b1lZ5YtO/x4dNAlXUgu5+2rVgBB8S+C8BcLKHZLHOZYkGh2XDDnZIj+aTfa1Ebgr1c6phIDa7OmDKRPyaXcn3deH7m2s5TJHkJI7GggDvpnkRNki8geiDWK4ocIL9j+wzGMIVvXqoO4JZlp/97k5LL1zjhIcPtJkL4xzH3aXT3Wokmc/uVpsH47IgPeYianrWBWFngLOYS4cTfaeNxiTO7vIGNEkAE1Ytx65b+f76YvmqLLIRAK2BmueBzcfOmbCFWL9hW6ckOwVCtoF+lA735gj9QsqlPITrpm0m+6lThhgPBwy8drloq4k8/csBDT6K0ZvTYQY++ajXpFMdxX4dp7nRcyvpJ5F+3gub96Pfl4M/n+LDDn7Yklm7m/nJ0qaG5WAbUX851H4eqdhIGkorX7yfaDqL2QG4mUVx7hiku1hA5JJ5R+MiZwKiglwj2wIxWdy3EoioHgwR7meuIyHInJV+nxxJi/mwYb0NRu77NSAQkNFXLr6jGyCOV6wW8QVKr4Z/A//RUcwn4KMAD6MNV+pBmzeAAAAABJRU5ErkJggg==\",\n\t\t\"zh-CN\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDRDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU0NTBEQ0NBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU0NTBEQ0NCMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+63sBgQAAAXhJREFUeNrslL1OwzAQx322k+ZDpaFSVSQqOsCChGBl5wkY4AGYeQF2NkYQAxI7ElM3nqE7TAgJtkKaUtQPkto+zgUxwZCgMvUmW5Z+/t0/OcPDesRmU/x7BZKZIZgB0IIh0wmv7KbR3rtOgJnCaGCYQfYkvA3lbarsUdCW6OAhhKhioRIODuZFkyFDxZxlbfqwsJ9yn43b0mlo1eXxWWB6UD8aIsfkIhCRIYl8aApBRLhy1Xe3NLXRvNbxqZ/eC8siqkAQrEAmFi0qOLhxxZKp7wxp+9oqvbVK7pq9xqmb55OQZL1VhcqmlA9ty0OiDC5c1ExWDQRoezdsEvPa4Qgcllz6RQIhF6dhRm3ZPfdxAsF25jZt/5MO1zHnAfWFDAsF8umS3kpBvsDSO8nLqHu8ejAWIXaOQ16xPdHXzo+eihPu638sW0dKhpfsOXFllJtrhX+bRhoc9QJoQNaMTaNgID8VaYrFKdL8edBn+IbM0XP0P6M/BBgAWIia6c9dDfMAAAAASUVORK5CYII=\",\n\t\t\"zh-TW\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5NDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODkyMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODkzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLbMqgAAAZxJREFUeNrsVstKAlEY/maawNtgmQtvRC0ENy7Etbhz68KH6SV8gV5CFy7b5EJxUZCIuBBMvJTS4G2svMyl32nCaValhhB+8HH+c85wvv92hsMA110APqIIDQxR/jShEFndPiKquu0ADwFdXNE4wy/BE5843cB6lGG3c1DVOTyeEwjCBIpyjOlUMjixNXju+3wV7RzRqBvBoBudjohE4hy1Wh/5/CoxNkPU28EkPEMg4EIk4kMqdYlw2IVyeYBslkO7vUCjIdA3ll0Lq1rEoZALyeQFYjGvthqPe8FShuv1EQkP9LpvD9YsLEmKRiNkWcVyqe6yxsaTWK2xGo0xcrkWisU+NRhQKPSQyTTRbI5pX9K7e+c1tqDVGqFS6WE+l5BOP8Dvd6Ba7VOqv+q7s+aywyxeul+gdPcIj9eJm9sXSvXKP6chWgfxTb8FGwpbMTRdKAZLUdaOfK4PqZUYbdVGoqoe7TsWsGK0VfSMAPvE8BP5EVRyhCWXTskFZjNxkTvDK/YBFnvCQfgg/P+EOf3Jw6+fPn8OTetDgAEAPv6K9CaVVcEAAAAASUVORK5CYII=\",\n\t\t\"ko-KR\": \"iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4QjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTc1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTc2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kIg3fgAAA81JREFUeNrEVl1IW2cYfvJjMPGvIbhhJZ2tZaWFlqZgKEOHGtGZqtALcVR703mhRGk7dTBEhsz/UmVsYOl2IXOghYpFWmnNxYyKOkMXfy4EZTil/katTZqaH0/efefYZbgYPN5sL7wJ3/ne873f87x/R0JEywBOMnXiv5EopisS5tjxfhEkbrcbYWFhkMlkxzrZ7/fD6/UiPDw8lIlTGmpnfHwcRUVFsFqt8Hg8op3ytlNTUygsLITZbA5tyCOmQyQ/P5+0Wi3l5ORQY2Mjra2t0VGys7NDra2tlJmZSXFxcVRWVhbK1HEo1c3Nzejp6YFer8fExAQUCgVGRkYOXpjj2A8gkR8MQ1paGra2tpCcnCxQnZiYCJPJdDTVPE1dXV1Qq9VYWVmBUqlEW1tbYP/tyG+Yz72JmUQ90yTMffY5nL/+cymGGIwlcOxiQ0NDwnpsbCyI6SDHKpUKeXl5iIyMFOJsMBiQlJQk7G3c/xGTKVex8fQXeBb/hGdpCZsvHmEqPQWr334n2Oh0OgHlwMAAEhISUFBQgJiYGHEx9vl81NfXR4wiYhkqPNt8YaFhZm6VxJJNc55eqs/R7+qPaTEmgRYRTaNsb7PnaeCM8vJy6u7uZhHhxMf437LLdOJGKaK7HoA0F+AnDuF+DvFeJ2ZUsXgrV+LimhXSDCPizc/EJL9TLsZqgenjPzjUs3+77x3CaN/p16dScU+bwgImx3VZPO7bJoEtO6CJPfJMqRjHWq8fP39wGVUaA6I4D+Tkx+2PDLh39hogU/Apjt7TmXjwoY4V8htR9S4KcZRCiuQzGjycuYrn5/TgSIrlKNZl3TsA52XOWUm92sDrTxj6k2dFOQ6JmM/KioqKwPrW9UvAOweWSIPl6DiGjLV2v2/fqYt1ttdvkHojNWBfVVWF3t5e8Z1rYWGBmpqaiJUUsdKilpaWwN5XP1kIahMh/i5B9w3hClPtl4QTpWT63hyw6+joIFZClJubS/X19TQ/Px+U1UGIt7e30dnZCalUisrKSvT392N6enq/o33xKfqe3cEV4yXI1SrITqhwMeMCHj+5jR/KMgSb2dlZzM3Noa6uDg6HA+3t7VhfXw8CfGg5VVdXw2azobi4GA0NDUL3Gh4ePvCiy+3j2UKkUnHgeXp6Oux2O2pra8GQClOqpqYmqJxCDgl+OPB0ZWVlEXuRVldXRQ0JnlrmXAhTSUlJyCER0rHFYiGj0UiDg4O0u7tLYoXNcBodHaXs7Gyh+x1rOv0tDAEiIiKEj4HjyN7eHlwu1+E9+j3Vkv/r0+cvAQYAGzcZMFujiqgAAAAASUVORK5CYII=\"\n\t}\n}\n"
  },
  {
    "path": "src/lib/data/outfits.json",
    "content": "{\n\t\"outfits\": [\n\t\t{\n\t\t\t\"name\": \"5-star-outrider\",\n\t\t\t\"characterName\": \"amber\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.62, \"y\": -5.56, \"scale\": 1.46 },\n\t\t\t\t\"wishCard\": { \"x\": 66, \"y\": 37.80674157303371, \"scale\": 7.71 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"favonian-fevotion\",\n\t\t\t\"characterName\": \"jean\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.7412280701754383, \"y\": -3.0804093567251463, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 32.412623006447234, \"y\": 61.74109263657957, \"scale\": 9.17 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"executor_s-thorns\",\n\t\t\t\"characterName\": \"rosaria\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.608187134502924, \"y\": -5.552631578947368, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": 11.309806582965727, \"y\": 64.11163895486936, \"scale\": 8.95 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"flowing-fate\",\n\t\t\t\"characterName\": \"mona\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -1.1023391812865497, \"y\": -0.4473684210526315, \"scale\": 1.6 },\n\t\t\t\t\"wishCard\": { \"x\": 10.902612826603326, \"y\": 52.65320665083135, \"scale\": 10.88 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 1.6,\n\t\t\t\"name\": \"summertime-sparkle\",\n\t\t\t\"characterName\": \"barbara\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.7410714285714286, \"y\": 3.386904761904762, \"scale\": 1.16 },\n\t\t\t\t\"wishCard\": { \"x\": 39.886128364389236, \"y\": 70.09178743961353, \"scale\": 8.85 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 1.6,\n\t\t\t\"name\": \"sea-breeze-dandelion\",\n\t\t\t\"characterName\": \"jean\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.37351190476190477, \"y\": 3.2901785714285716, \"scale\": 1.18 },\n\t\t\t\t\"wishCard\": { \"x\": -25.54865424430642, \"y\": 92.17874396135267, \"scale\": 9.93 },\n\t\t\t\t\"storeCard\": { \"t\": -15, \"l\": -30, \"w\": 125 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 2.4,\n\t\t\t\"name\": \"orchid_s-evening-gown\",\n\t\t\t\"characterName\": \"ningguang\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.604166666666667, \"y\": 2.2738095238095237, \"scale\": 1.04 },\n\t\t\t\t\"wishCard\": { \"x\": -18.871635610766045, \"y\": 74.78985507246377, \"scale\": 7.08 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 2.4,\n\t\t\t\"name\": \"opulent-splendor\",\n\t\t\t\"characterName\": \"keqing\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.638392857142857, \"y\": 6.901785714285714, \"scale\": 1.1 },\n\t\t\t\t\"wishCard\": { \"x\": 39.34782608695652, \"y\": 86.33574879227052, \"scale\": 7.46 },\n\t\t\t\t\"storeCard\": { \"t\": 0, \"l\": -20, \"w\": 110 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 2.8,\n\t\t\t\"name\": \"ein-immernachtstraum\",\n\t\t\t\"characterName\": \"fischl\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.5580357142857144, \"y\": 2.915178571428571, \"scale\": 1.04 },\n\t\t\t\t\"wishCard\": { \"x\": -34.648033126293996, \"y\": 74.1352657004831, \"scale\": 7.46 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 2.8,\n\t\t\t\"name\": \"red-dead-of-night\",\n\t\t\t\"characterName\": \"diluc\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"price\": 2480,\n\t\t\t\"promoPrice\": 1980,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -12.322916666666666, \"y\": -7.5773809523809526, \"scale\": 1.52 },\n\t\t\t\t\"wishCard\": { \"x\": -92.41200828157349, \"y\": 61.80434782608696, \"scale\": 11.77 },\n\t\t\t\t\"storeCard\": { \"l\": -45, \"t\": -50, \"w\": 130 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 3.4,\n\t\t\t\"name\": \"a-sobriquet-under-shade\",\n\t\t\t\"characterName\": \"lisa\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.1770833333333333, \"y\": -0.9925595238095238, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": -80.76604554865425, \"y\": 63.37198067632851, \"scale\": 8.67 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 3.4,\n\t\t\t\"name\": \"springbloom-missive\",\n\t\t\t\"characterName\": \"kamisato-ayaka\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.3333333333333335, \"y\": -4.5773809523809526, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": 29.668737060041412, \"y\": 58.376811594202906, \"scale\": 8.98 },\n\t\t\t\t\"storeCard\": { \"l\": -20, \"w\": 120, \"t\": -35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 3.8,\n\t\t\t\"name\": \"sailwind-shadow\",\n\t\t\t\"characterName\": \"kaeya\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.9940476190476191, \"y\": -3.9821428571428577, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -22.836438923395445, \"y\": 69.80193236714976, \"scale\": 9.88 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 3.8,\n\t\t\t\"name\": \"blossoming-starlight\",\n\t\t\t\"characterName\": \"klee\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 2.9925595238095237, \"y\": 10.900297619047619, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": 35.13457556935818, \"y\": 69.07729468599034, \"scale\": 9.88 },\n\t\t\t\t\"storeCard\": { \"l\": -20, \"w\": 120, \"t\": -25 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 4.4,\n\t\t\t\"name\": \"frostflower-dew\",\n\t\t\t\"characterName\": \"shenhe\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 0.683288409703504, \"y\": 2.6132075471698113, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -12.568218298555378, \"y\": 88.33483146067415, \"scale\": 10.88 },\n\t\t\t\t\"storeCard\": { \"l\": -30, \"w\": 130, \"t\": -13 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 4.4,\n\t\t\t\"name\": \"twilight-blossom\",\n\t\t\t\"characterName\": \"ganyu\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.2911051212938007, \"y\": -2.9191374663072778, \"scale\": 1.29 },\n\t\t\t\t\"wishCard\": { \"x\": -28.131621187800963, \"y\": 60.35505617977528, \"scale\": 10.12 },\n\t\t\t\t\"storeCard\": { \"l\": -30, \"w\": 125, \"t\": -30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 4.4,\n\t\t\t\"name\": \"bamboo-rain\",\n\t\t\t\"characterName\": \"xingqiu\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": 1.9204851752021566, \"y\": 1.6388140161725067, \"scale\": 1.14 },\n\t\t\t\t\"wishCard\": { \"x\": 42.722311396468704, \"y\": 66.40449438202248, \"scale\": 7.65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 4.8,\n\t\t\t\"name\": \"breeze-of-sabaa\",\n\t\t\t\"characterName\": \"nilou\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"storeCard\": { \"l\": -28, \"w\": 115, \"t\": -35 },\n\t\t\t\t\"splashArt\": { \"x\": -1.4214092140921408, \"y\": 8.271002710027101, \"scale\": 1.36 },\n\t\t\t\t\"wishCard\": { \"x\": -55.46275395033861, \"y\": 59.65914221218962, \"scale\": 8.98 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 4.8,\n\t\t\t\"name\": \"phantom-in-boots\",\n\t\t\t\"characterName\": \"kirara\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.24457308248914617, \"y\": 2.082489146164978, \"scale\": 1.48 },\n\t\t\t\t\"wishCard\": { \"x\": 35.35473515248796, \"y\": 57.37411764705882, \"scale\": 10.35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 5.3,\n\t\t\t\"name\": \"cherries-snow-laden\",\n\t\t\t\"characterName\": \"hu-tao\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"storeCard\": { \"l\": -40, \"w\": 120, \"t\": -25 },\n\t\t\t\t\"splashArt\": { \"x\": -6.350948509485095, \"y\": 2.4810298102981028, \"scale\": 1.2 },\n\t\t\t\t\"wishCard\": { \"x\": -82.59916156078685, \"y\": 57.08803611738149, \"scale\": 7.84 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 5.3,\n\t\t\t\"name\": \"new-years-cheers\",\n\t\t\t\"characterName\": \"xiangling\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -4.253387533875339, \"y\": 3.2371273712737123, \"scale\": 1 },\n\t\t\t\t\"wishCard\": { \"x\": -24.65011286681716, \"y\": 61.5801354401806, \"scale\": 6.99 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 5.8,\n\t\t\t\"name\": \"tranquil-banquet\",\n\t\t\t\"characterName\": \"yelan\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"storeCard\": { \"l\": -40, \"w\": 120, \"t\": -25 },\n\t\t\t\t\"splashArt\": { \"x\": -1.58130081300813, \"y\": 2.1043360433604335, \"scale\": 1.47 },\n\t\t\t\t\"wishCard\": { \"x\": -102.64430828764914, \"y\": 71.06772009029345, \"scale\": 12.02 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 5.8,\n\t\t\t\"name\": \"adventures-in-blazing-hue\",\n\t\t\t\"characterName\": \"bennett\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -0.5230352303523036, \"y\": -0.6490514905149052, \"scale\": 1.24 },\n\t\t\t\t\"wishCard\": { \"x\": -23.16027088036118, \"y\": 52.21896162528217, \"scale\": 8.42 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 6.3,\n\t\t\t\"name\": \"melusent-gift\",\n\t\t\t\"characterName\": \"neuvillette\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"storeCard\": { \"l\": -35, \"w\": 120, \"t\": -10 },\n\t\t\t\t\"splashArt\": { \"x\": -1.2076502732240437, \"y\": 0.5259562841530054, \"scale\": 1.61 },\n\t\t\t\t\"wishCard\": { \"x\": 3.6511552229092095, \"y\": 75.80410022779043, \"scale\": 12.94 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"release\": 6.3,\n\t\t\t\"name\": \"rainlit-bamboo-reverie\",\n\t\t\t\"characterName\": \"yaoyao\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"price\": 1680,\n\t\t\t\"promoPrice\": 1350,\n\t\t\t\"offset\": {\n\t\t\t\t\"splashArt\": { \"x\": -2.2431693989071038, \"y\": 0.778688524590164, \"scale\": 1.11 },\n\t\t\t\t\"wishCard\": { \"x\": -3.270419785226163, \"y\": 31.760820045558084, \"scale\": 6.77 }\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/paimon-bargain-characters.json",
    "content": "{\n    \"paimonBargainCharacters\": [\n\t\t{\n\t\t\t\"name\": \"amber\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 4\n\t\t},\n\t\t{\n\t\t\t\"name\": \"barbara\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"beidou\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 2\n\t\t},\n\t\t{\n\t\t\t\"name\": \"bennett\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 5\n\t\t},\n\t\t{\n\t\t\t\"name\": \"fischl\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"kaeya\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 6\n\t\t},\n\t\t{\n\t\t\t\"name\": \"lisa\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 5\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ningguang\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 3\n\t\t},\n\t\t{\n\t\t\t\"name\": \"noelle\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 2\n\t\t},\n\t\t{\n\t\t\t\"name\": \"razor\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 4\n\t\t},\n\t\t{\n\t\t\t\"name\": \"xiangling\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 1\n\t\t},\n\t\t{\n\t\t\t\"name\": \"xingqiu\",\n\t\t\t\"price\": 34,\n\t\t\t\"rarity\": 4,\n\t\t\t\"month\": 3\n\t\t}\n\t]\n}"
  },
  {
    "path": "src/lib/data/pricelist.json",
    "content": "{\n\t\"genesisBonus\": {\n\t\t\"versionReset\": [1.0, 2.1, 3.1, 4.1, 5.0, 6.0],\n\t\t\"topupBonus\": {\n\t\t\t\"300\": 30,\n\t\t\t\"980\": 110,\n\t\t\t\"1980\": 260,\n\t\t\t\"3280\": 600,\n\t\t\t\"6480\": 1600\n\t\t}\n\t},\n\t\"currencies\": [\n\t\t{\n\t\t\t\"country\": [\"br\"],\n\t\t\t\"currency\": \"BRL\",\n\t\t\t\"symbol\": \"R$\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 25.9,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 4.9,\n\t\t\t\t\t\"300\": 25.9,\n\t\t\t\t\t\"980\": 76.9,\n\t\t\t\t\t\"1980\": 154.9,\n\t\t\t\t\t\"3280\": 254.9,\n\t\t\t\t\t\"6480\": 499.9\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"cn\"],\n\t\t\t\"currency\": \"CNY\",\n\t\t\t\"symbol\": \"¥\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 30,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 6,\n\t\t\t\t\t\"300\": 30,\n\t\t\t\t\t\"980\": 98,\n\t\t\t\t\t\"1980\": 198,\n\t\t\t\t\t\"3280\": 328,\n\t\t\t\t\t\"6480\": 648\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"ad\", \"at\", \"be\", \"cy\", \"gr\", \"es\", \"fr\", \"de\", \"fi\", \"it\", \"pt\", \"nl\"],\n\t\t\t\"currency\": \"EUR\",\n\t\t\t\"symbol\": \"€\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 4.49,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 1.19,\n\t\t\t\t\t\"300\": 5.99,\n\t\t\t\t\t\"980\": 17.99,\n\t\t\t\t\t\"1980\": 35.99,\n\t\t\t\t\t\"3280\": 59.99,\n\t\t\t\t\t\"6480\": 119.99\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"uk\"],\n\t\t\t\"currency\": \"GBP\",\n\t\t\t\"symbol\": \"£\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 4.49,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 0.89,\n\t\t\t\t\t\"300\": 4.49,\n\t\t\t\t\t\"980\": 12.99,\n\t\t\t\t\t\"1980\": 25.99,\n\t\t\t\t\t\"3280\": 44.99,\n\t\t\t\t\t\"6480\": 89.99\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"id\"],\n\t\t\t\"currency\": \"IDR\",\n\t\t\t\"symbol\": \"Rp\",\n\t\t\t\"format\": \"{symbol} {nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 81000,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 16500,\n\t\t\t\t\t\"300\": 81000,\n\t\t\t\t\t\"980\": 255000,\n\t\t\t\t\t\"1980\": 489000,\n\t\t\t\t\t\"3280\": 815000,\n\t\t\t\t\t\"6480\": 1629000\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"ja\"],\n\t\t\t\"currency\": \"JPY\",\n\t\t\t\"symbol\": \"¥\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 610,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 120,\n\t\t\t\t\t\"300\": 610,\n\t\t\t\t\t\"980\": 1840,\n\t\t\t\t\t\"1980\": 3680,\n\t\t\t\t\t\"3280\": 6100,\n\t\t\t\t\t\"6480\": 12000\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"ko\"],\n\t\t\t\"currency\": \"KRW\",\n\t\t\t\"symbol\": \"₩\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 5900,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 1200,\n\t\t\t\t\t\"300\": 5900,\n\t\t\t\t\t\"980\": 19000,\n\t\t\t\t\t\"1980\": 37000,\n\t\t\t\t\t\"3280\": 65000,\n\t\t\t\t\t\"6480\": 119000\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"ph\"],\n\t\t\t\"currency\": \"PHP\",\n\t\t\t\"symbol\": \"₱\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 280,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 55,\n\t\t\t\t\t\"300\": 280,\n\t\t\t\t\t\"980\": 830,\n\t\t\t\t\t\"1980\": 1670,\n\t\t\t\t\t\"3280\": 2800,\n\t\t\t\t\t\"6480\": 5500\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"ru\"],\n\t\t\t\"currency\": \"RUB\",\n\t\t\t\"symbol\": \"₽\",\n\t\t\t\"format\": \"{nominal}{symbol}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 499,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 99,\n\t\t\t\t\t\"300\": 499,\n\t\t\t\t\t\"980\": 1390,\n\t\t\t\t\t\"1980\": 2790,\n\t\t\t\t\t\"3280\": 4690,\n\t\t\t\t\t\"6480\": 9490\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"th\"],\n\t\t\t\"currency\": \"THB\",\n\t\t\t\"symbol\": \"฿\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 179,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 35,\n\t\t\t\t\t\"300\": 179,\n\t\t\t\t\t\"980\": 549,\n\t\t\t\t\t\"1980\": 1100,\n\t\t\t\t\t\"3280\": 1800,\n\t\t\t\t\t\"6480\": 3700\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"tw\"],\n\t\t\t\"currency\": \"NTD\",\n\t\t\t\"symbol\": \"NT$\",\n\t\t\t\"format\": \"{symbol} {nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 170,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 33,\n\t\t\t\t\t\"300\": 170,\n\t\t\t\t\t\"980\": 490,\n\t\t\t\t\t\"1980\": 990,\n\t\t\t\t\t\"3280\": 1690,\n\t\t\t\t\t\"6480\": 3290\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"us\"],\n\t\t\t\"currency\": \"USD\",\n\t\t\t\"symbol\": \"US$\",\n\t\t\t\"format\": \"{symbol}{nominal}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 4.99,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 0.99,\n\t\t\t\t\t\"300\": 4.99,\n\t\t\t\t\t\"980\": 14.99,\n\t\t\t\t\t\"1980\": 29.99,\n\t\t\t\t\t\"3280\": 49.99,\n\t\t\t\t\t\"6480\": 99.99\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"country\": [\"vn\"],\n\t\t\t\"currency\": \"VND\",\n\t\t\t\"symbol\": \"đ\",\n\t\t\t\"format\": \"{nominal}{symbol}\",\n\t\t\t\"list\": {\n\t\t\t\t\"welkin\": 109000,\n\t\t\t\t\"genesis\": {\n\t\t\t\t\t\"60\": 22000,\n\t\t\t\t\t\"300\": 109000,\n\t\t\t\t\t\"980\": 329000,\n\t\t\t\t\t\"1980\": 699000,\n\t\t\t\t\t\"3280\": 1099000,\n\t\t\t\t\t\"6480\": 2199000\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/updates.json",
    "content": "{\n\t\"data\": [\n\t\t{\n\t\t\t\"date\": \"01-Sep-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Raiden Shogun and Kujou Sara </strong> Banner was here !\",\n\t\t\t\t\"<strong> Engulfing Lightning </strong> Weapon Banner has been added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"10-Sep-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"Now you can <strong>wishing on previous banner</strong> by clicking <strong>(x)</strong> button on the top right of the page\",\n\t\t\t\t\"Now you can <strong>create screenshot and link to share</strong> when wishing\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"21-Sep-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Sangonomia Kokomi </strong> is ready to pull !\",\n\t\t\t\t\"<strong> Everlasting Moonglow </strong> Weapon Banner has been added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"30-Sep-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add more previous banner, <strong> Eula, Zhongli, Tartaglia/Childe, Albedo, Ganyu, Xiao, Hu Tao, Venti </strong> is ready to pull ! <br/> Click <strong>(x)</strong> button on the top right of the page to change the banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"13-Oct-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Tartaglia </strong> is ready to pull !\",\n\t\t\t\t\"<strong> Polar Star </strong> Weapon Banner has been added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"2-Nov-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Hu Tao </strong> Character Banner has been added !\",\n\t\t\t\t\"<strong> Thoma </strong> is ready to pull !\",\n\t\t\t\t\"<strong> Staff of Homma </strong> & <strong>Elegy for The End</strong> Weapon Banner has been added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"24-Nov-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Albedo </strong> Banner was here !\",\n\t\t\t\t\"<strong> Eula </strong> Banner also here !\",\n\t\t\t\t\"<strong> Freedom Sworn & Song of Broken Pines </strong> Weapon Banner has been added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"08-Des-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong>Fixing Bugs</strong> of History.\",\n\t\t\t\t\"if you find any error, follow this steps to reset browser cache specialy only for WIsh Simulator Site . Open Inpect ELement ( CTRL + Shift i ) -> Application -> Storage -> Click on \\\"Clear Site Data\\\" Button\",\n\t\t\t\t\"Ignore the steps above if this is the first time you visit this site or if you already do reset\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"14-Des-2021\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Arrataki Itto </strong> character Banner is ready to pull\",\n\t\t\t\t\"<strong> Redhorn Stonethresher </strong> Weapon Banner has been added !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"29-Des-2021\",\n\t\t\t\"description\": [\"Implement Epitomized Path System to Weapon Banner for patch 2.0 and above\"]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"05-Jan-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"Now you can pull <strong> Shenhe </strong> and <strong>Yunjin</strong> the Best Waifu!\",\n\t\t\t\t\"<strong>Calamity Queller</strong> Weapon Banner was added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"25-Jan-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong>Gong Xi Fa Cai</strong>. Wish you luck on Lantern Rite event\",\n\t\t\t\t\"<strong> Zhongli and Ganyu Rerun Banner </strong> Already out here !\",\n\t\t\t\t\"<strong> Vortex and Amos </strong> Weapon Rerun Banner is ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"11-Feb-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"Now you can pull without worry about running out of fate, just activate the <b>Unlimited Fates Option</b> in Menu by clicking the <b>(?)</b> button on top of the page\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"16-Feb-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"Event Banner Updated, Now you can pull <strong> Yae Miko </strong> here !\",\n\t\t\t\t\"Yae Miko signature Weapon, <strong>Kagura's Verity</strong> is ready to pull too !\",\n\t\t\t\t\"Inventory Updated, Now You can show all Characters and Weapons both you already got or not\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"08-Mar-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Raiden Shogun Rerun </strong> Banner was here !\",\n\t\t\t\t\"<strong> Sangonomia Kokomi </strong> is ready to pull too!\",\n\t\t\t\t\"Weapon Banner Updated, <b> Engulfing Lightning </b> and <b>Everlasting Moonglow</b> already added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"23-Mar-2022\",\n\t\t\t\"featured\": true,\n\t\t\t\"description\": [\n\t\t\t\t\"<strong>Due to high number of visitors</strong>, Our monthly bandwidth also increased. We need to upgrade the hosting plan to keep this site alive. So <strong>We'll show some ads </strong> on this site. <br/> We're sorry to you, actually we don't want to ruin your wishing experience. If you feel annoyed with ads, feel free to use Ad blocker, we will not forbit you\",\n\t\t\t\t\"Or for other solution, you can <strong> <a href=\\\"https://ko-fi.com/post/AdFree-Wish-Simulator-Enjoy-Simulator-Without-Ads-G2G2DQ57O\\\" target=\\\"_blank\\\"> join membership here</a></strong> to get opportunity to use <strong>Simulator without ads</strong>!\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"28-Mar-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Kamisato Ayato </strong> Banner was here !\",\n\t\t\t\t\"<strong> Venti </strong> is ready to pull too!\",\n\t\t\t\t\"Weapon Banner Updated, <b> Haran Geppaku Futsu </b> and <b>Elegy for the End</b> already added\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"17-Apr-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Kamisato Ayaka Rerun </strong> Banner already out !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Mistsplitter Reforged </b> and <b>The Unforged</b> was here too!\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"20-Apr-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"We recently had to <strong>migrate our server </strong> for other reasons, so the old wishing histories isn't being tracked on the new server, We apologize for the inconvenience. We hope it doesn't happen again in the future, so you can enjoy the simulator peacefully\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"29-May-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Yelan </strong> Banner already out !\",\n\t\t\t\t\"<strong> Xiao 3rd Rerun </strong> Banner was here !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Aqua Simulacra </b> and <b>Primordial Jade Winged Spear</b> are ready to pull !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"16-Jun-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Arataki Itto Rerun </strong> Banner was here !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Redhorn Stonesthresher </b> and <b>Memory of Dust</b> are ready to pull too!\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"8-Jul-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> New!!! </strong> Now you can purchase <strong> Character's Outfit </strong> in the shop. You also can set the costume splash art as result of your wish if you want :D\",\n\t\t\t\t\"<strong> New!!! </strong> Now Blessing of the Welkin Moon is available to purchase\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"12-Jul-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong>Kazuha 2nd Rerun </strong> and <strong>Klee 3rd Rerun </strong> Banner was here !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Freedom Sworn </b> and <b>Lost Prayers to the Sacred Winds</b> are ready to pull too!\",\n\t\t\t\t\"New Outfit released! <strong>Red Dead of Night</strong> for Diluc and <strong>Ein Immernachtstraum</strong> for Fischl, purchasable on shop.\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"21-Jul-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong>Translation Features</strong> is live now, But  only <strong>EN</strong>, <b>RU</b> <strong>CN-Simplified</strong> and <strong>ID</strong> are available for now, if You want to contribute to add more translation, please go to <u><a href=\\\"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator\\\" target=\\\"_blank\\\">Github Repository </a></u>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"28-Jul-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Yoimiya 2nd Rerun </strong> Banner already out !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Thundering Pulse </b> and <b>Summit Shaper</b> are ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"22-Agu-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> WELCOME to SUMERU !!</strong>\",\n\t\t\t\t\"<strong> Tighnari </strong> Banner already out, with new 4★ Character \\\"<b>Collei</b>\\\"\",\n\t\t\t\t\"Weapon Banner Updated, <b> Hunter's Path </b> and <b>Vortex Vanquisher</b> are ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"08-Sep-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Kokomi 3rd Rerun </strong> and <strong> Ganyu 3rd Rerun </strong> Banner already out !\",\n\t\t\t\t\"Weapon Banner Updated, <b> Amos Bow </b> and <b>Everlasting Moonglow</b> are ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"26-Sep-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Cyno </strong> and <strong> Venti 4th Rerun </strong> Banners already out, with new 4★ Character \\\"<b>Candace</b>\\\"\",\n\t\t\t\t\"Weapon Banner Updated, <b> Staff of the Scarlet Sands </b> and <b>Elegy for The End</b> are ready to pull too !\",\n\t\t\t\t\"Now you can obtain Tighnari when you lose 50:50 or when you pull Standard Banner starts from version 3.1\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"11-Oct-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Nilou </strong> and <strong> Albedo 3rd Rerun </strong> Banners already out\",\n\t\t\t\t\"Weapon Banner Updated, <b> Key of Khaj-Nisut </b> and <b>Primordial Jade Cutter</b> are ready to pull too !\",\n\t\t\t\t\"New 4★ Sumeru Weapon Series: <strong>Xiphos' Moonlight</strong> and <strong>Wandering Evenstar</strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"31-Oct-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character <strong> Nahida </strong> and <strong> Yoimiya 3rd Rerun </strong> Banners already out\",\n\t\t\t\t\"Weapon Banner Updated, <b> A Thousand Floating Dreams </b> and <b>Thundering Pulse</b> are ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"15-Nov-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> Yae Miko 2nd Rerun</strong> and <strong> Tartaglia 3rd Rerun </strong> Banners are ready\",\n\t\t\t\t\"New Character <strong> Layla </strong>\",\n\t\t\t\t\"Weapon Banner Updated, <b> Kagura's Verity </b> and <b>Polar Star</b> are ready to pull too !\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"18-Nov-2022\",\n\t\t\t\"featured\": true,\n\t\t\t\"description\": [\n\t\t\t\t\"I'm happy to announce that <b> WishSimulator.App already listed on Google Play Store</b>!!! You can get it <a href=\\\"https://play.google.com/store/apps/details?id=twa.wishsimulator.app\\\" target=\\\"_blank\\\"><b>here</b> </a> <br/> But actually I still prefer to use and install directly from this web. It's literally use the same technology. I'm not sure You'll feel the difference\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"5-Dec-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Itto 3rd Rerun </strong> Banners\",\n\t\t\t\t\"Add New Character: <strong> Wanderer ( 5★ ) </strong>\",\n\t\t\t\t\"Add New Character: <strong> Faruzan ( 4★ )</strong>\",\n\t\t\t\t\"Update Weapon Banner: <b> Tulaytullah's Remembrance </b> and <b>Redhorn Stonethresher</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"23-Dec-2022\",\n\t\t\t\"description\": [\n\t\t\t\t\"<strong> 𒀭*𒀮 ๖ۣۜH𝐚𝒑𝒑ɣ ቢēⴓ ɣē𝐚ṛ 2023 𒀮*𒀭 </strong>\",\n\t\t\t\t\"Add <strong> Raiden Shogun</strong> and <strong> Ayato</strong> rerun banners\",\n\t\t\t\t\"Update Weapon Banner: <b> Engulfing Lightning </b> and <b>Haran Geppaku Futsu</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"17-Jan-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Xiao 3rd Rerun </strong> Banner\",\n\t\t\t\t\"Add New Character: <strong> Alhaitham ( 5★ )</strong>\",\n\t\t\t\t\"Add New Character: <strong> Yaoyao ( 4★ )</strong>\",\n\t\t\t\t\"Update Weapon Banner: <b> Light of Foliar Incision </b> and <b>Primordial Jade Winged-Spear</b>\",\n\t\t\t\t\"Add New Character Outfits: <b>Springbloom Missive</b> for Ayaka and <b>A Sobriquet Under Shade </b> for Lisa.\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"1-Feb-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Hu Tao 2nd rerun </strong> & <strong> Yelan 1st rerun</strong>\",\n\t\t\t\t\"Add Weapon Banner: <b> Staff of Homa </b> and <b>Aqua Simulacra</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"27-Feb-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Cyno 1st Rerun</b> Banner\",\n\t\t\t\t\"Add New Character: <b>Dehya ( 5★ )</b>\",\n\t\t\t\t\"Add New Weapon: <b> Beacon of The Reed Sea ( 5★ )</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"16-Mar-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Shenhe 1st Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Ayaka 2nd Rerun</b> Banner\",\n\t\t\t\t\"Add New Character: <b>Mika ( 4★ )</b>\",\n\t\t\t\t\"Update Weapon Banner: <b> Mistsplitter Reforged </b> and <b>Qalamity Queller</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"11-Apr-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Nahida 1st Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Nilou 1st Rerun</b> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b> Key of Khaj-Nisut </b> and <b>A Thousand Floating Dreams</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"1-May-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <b>Baizhu ( 5★ )</b>\",\n\t\t\t\t\"Add New Weapon: <b> Jadefall's Splendor ( 5★ )</b>\",\n\t\t\t\t\"Add <b>Ganyu 3rd Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"22-May-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <b>Kirara ( 4★ )</b>\",\n\t\t\t\t\"Add <b>Yoimiya 3rd Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Yae Miko 2nd Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"23-May-2023\",\n\t\t\t\"featured\": true,\n\t\t\t\"description\": [\n\t\t\t\t\"<b>LIVE NOW!!!</b> <br/>Gacha Simulator for Honkai: Star Rail 👉 <b><a href='https://hsr.wishsimulator.app' target='_blank'>HSR.WishSimulator.App </a></b> <br/> <img src='https://hsr.wishsimulator.app/meta-picture.jpg' style='width:90%; margin: .5rem 0' alt='HSR Wish Simulator' />\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"09-Jun-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Alhaitam 1st Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Kazuha 3rd Rerun</b> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b> Light in Foliar </b> and <b>Freedom-Sworn</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"04-Jul-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Eula 2nd Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Klee 3rd Rerun</b> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b> Song of Broken Pines </b> and <b>Lost Prayers to the Sacred Winds</b>\",\n\t\t\t\t\"New Character Outfits: <b>Blossoming Starlight</b> for Klee and <b>Sailwind Shadow </b> for Kaeya.\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"20-Jul-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Sangonomiya Kokomi 3rd Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Wanderer 1st Rerun</b> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b>Tulaytullah's Remembrance </b> and <b>Everlasting Moonglow</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"14-Aug-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"<b>WELCOME TO FONTAINE!</b>\",\n\t\t\t\t\"New Character: <b>Lyney ( 5★ )</b> & <b>Lynette ( 4★ )</b>\",\n\t\t\t\t\"New Weapon: <b>The First Great Magic  ( 5★ ) </b>\",\n\t\t\t\t\"Add Yelan's 2nd Rerun\",\n\t\t\t\t\"<b>New Feature:</b> Now you can <b>Customize the Probabilities</b> and Control how <b>many roll in one multi</b>\",\n\t\t\t\t\"<b>New Feature:</b> Hotkeys/Shortcut have been added, Try to press <b>[ENTER]</b> to \\\"<u>Wish</u>\\\" or \\\"<u>Confirm</u>\\\" and <b>[ESC]</b> to \\\"<u>Skip</u>\\\", \\\"<u>Cancel</u>\\\" or \\\"<u>Close</u>\\\". More Hotkeys will be added in the future\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"31-Aug-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Freminet ( 4★ )</b>\",\n\t\t\t\t\"Add <b>Zhongli</b> & <b>Tartaglia</b> <b>4rd Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"25-Sep-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Neuvillette ( 5★ )</b>\",\n\t\t\t\t\"Add <b>Hu Tao 4rd Rerun</b> Banner\",\n\t\t\t\t\"Top-Up reset Bonus\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"12-Oct-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Wriothesley ( 5★ )</b>\",\n\t\t\t\t\"Add <b>Venti 5th Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"06-Nov-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Furina ( 5★ )</b>\",\n\t\t\t\t\"New Character: <b>Charlotte ( 4★ )</b>\",\n\t\t\t\t\"New Weapon: <b>Splendor of Tranquil Waters (Sword 5★)</b>\",\n\t\t\t\t\"Add <b>Baizhu 1st Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"23-Nov-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <b>Cyno 3th Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Ayato 3th Rerun</b> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b> Haran Geppaku Futsu </b> and <b>Staff of The Scarlet Sands</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"02-Dec-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"<b>New Features:</b>\",\n\t\t\t\t\"- Custom Banner Editor, Share your Own Banner!\",\n\t\t\t\t\"- Backup & Restore, Cloud Sync will be available soon\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"18-Dec-2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Navia ( 5★ )</b>\",\n\t\t\t\t\"New Weapon: <b>Verdict (Claymore 5★)</b>\",\n\t\t\t\t\"Add <b>Ayaka's 4th Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"5-Jan-2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"New Character: <b>Chevreuse ( 4★ )</b>\",\n\t\t\t\t\"Add <b>Raiden Shogun's 4th Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Yoimiya's 5th Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"29-Jan-2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Xianyun ( 5★ )</strong>\",\n\t\t\t\t\"Add New Character: <strong> Gaming ( 4★ )</strong>\",\n\t\t\t\t\"Add <strong> Nahida 3rd Rerun </strong> Banner\",\n\t\t\t\t\"Update Weapon Banner: <b>Cranes Echoing Call </b> and <b>A Thousand Floating Dreams</b>\",\n\t\t\t\t\"Add New Character Outfits:\",\n\t\t\t\t\"- <b>Springbloom Missive</b> (Shenhe)\",\n\t\t\t\t\"- <b>A Sobriquet Under Shade </b> (Ganyu)\",\n\t\t\t\t\"- <b>Bamboo Rain</b> (Xingqiu)\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"5 Feb 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Activate <b>Xiao's 5th Rerun</b> Banner\",\n\t\t\t\t\"Activate <b>Yae Miko's 4th Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"11 Mar 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Chiori (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Uraku Misugiri (5★)</b>\",\n\t\t\t\t\"Add <strong> Arataki Itto 3rd Rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"24 Mar 2024\",\n\t\t\t\"description\": [\"Add New Banner: <b>Chronicled Wish</b>\"]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"30 Mar 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Activate <b>Neuvillette's 1st Rerun</b> Banner\",\n\t\t\t\t\"Activate <b>Kazuha's 3th Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"24 Apr 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Arlecchino (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Crimson Moon's Semblance (5★)</b>\",\n\t\t\t\t\"Add <strong> Lyney 1st rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"10 May 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Activate <b>Wanderer's 2nd Rerun</b> Banner\",\n\t\t\t\t\"Activate <b>Baizhu's 2nd Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"03 Jun 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Clorinde (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Sethos (4★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Absolution (5★)</b>\",\n\t\t\t\t\"Add <strong> Alhaitham 2nd rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"21 Jun 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Sigewinner (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Silvershower Heartstrings (5★)</b>\",\n\t\t\t\t\"Add <strong> Furina 1st rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"15 Jul 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add new Outfit: <b>\\\"Breeze of Sabaa)\\\"</b> (Nillou)\",\n\t\t\t\t\"Add new Outfit: <b>\\\"Phantom in Boots)\\\"</b> (Kirara)\",\n\t\t\t\t\"Add <b>Navia's 1st Rerun</b> Banner\",\n\t\t\t\t\"Add <b>Nilou's 2nd Rerun</b> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"01 Aug 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Emilie (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Lumidouce Elegy (5★)</b>\",\n\t\t\t\t\"Add <strong> Yelan 3rd rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"26 Aug 2023\",\n\t\t\t\"description\": [\n\t\t\t\t\"<b>WELCOME TO NATLAN!</b>\",\n\t\t\t\t\"New Character: <b>Mualani ( 5★ )</b> & <b>Kachina ( 4★ )</b>\",\n\t\t\t\t\"New Weapon: <b>Surf's Up ( 5★ ) </b>\",\n\t\t\t\t\"<b>New Mechanism:</b> Capturing Radiance - Can be triggered during 50:50 Condition\",\n\t\t\t\t\"<b>Adjustment:</b> Reduce Fatepoint needed from 2 to 1, starting from v5.0\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"12 Sep 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Kinich (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Fang of The Mountain King (5★)</b>\",\n\t\t\t\t\"Add <strong> Raiden Shogun 4th rerun </strong> Banner\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"6 Oct 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Xilonen (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Peak Patrol Song (5★)</b>\",\n\t\t\t\t\"Add New Weapons: <b>Sturdy Bone</b>, <b>Fruitful Hook</b> & <b>Mountain-Bracing Bolt</b> (4★)\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"20 Oct 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Nahida 3rd rerun (5★)</strong>\",\n\t\t\t\t\"Add <b> Hu Tao 4rd rerun (5★)</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"18 Nov 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Chasca (5★)</strong>\",\n\t\t\t\t\"Add New Weapon: <b> Astral Vulture's Crimson Plumage (5★)</b>\",\n\t\t\t\t\"Add New Weapons: <b>Sturdy Bone</b>, <b>Flower-Wreathed Feathers</b> & <b>Waveriding Whirl</b> (4★)\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"30 Dec 2024\",\n\t\t\t\"description\": [\n\t\t\t\t\"<b>HAPPY NEW YEAR!!</b>\",\n\t\t\t\t\"Add New Character: <strong> Mavuika (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Citlali (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Lan Yan (4★)</strong>\",\n\t\t\t\t\"Add New Outfit: <b> Cherries Snow-Laden (4★)</b>\",\n\t\t\t\t\"Add New Outfit: <b> New Year's Cheers (4★)</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"11 Feb 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Yumemizuki Mizuki (5★)</strong>\",\n\t\t\t\t\"Add New Outfit: <b> Silvershower Heartstrings (5★)</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"04 Mar 2025\",\n\t\t\t\"description\": [\"Add <strong> Wriothesley 1st rerun</strong>\", \"Add <b> Furina 2nd rerun</b>\"]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"24 Mar 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Varesa (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Iansan (4★)</strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"15 Apr 2025\",\n\t\t\t\"description\": [\"Add <b> Xilonen 1st rerun</b>\", \"Add <strong> Venti 5th rerun</strong>\"]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"05 Apr 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Escoffier (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Ifa (4★)</strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"25 Mar 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Raiden Shogun 5th rerun Banner</strong>\",\n\t\t\t\t\"Add <strong> Kinich 1st rerun </strong>\",\n\t\t\t\t\"Add <strong> Inazuma Chronicled Banned </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"16 Jun 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Skirk (5★)</strong>\",\n\t\t\t\t\"Add New Character: <strong> Dahlia (4★)</strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"27 Jul 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Ineffa (5★)</strong>\",\n\t\t\t\t\"Add New Yelan's Outfit: <b> Tranquil Banquet (4★)</b>\",\n\t\t\t\t\"Add New Bennett's Outfit: <b> Adventures in Blazing Hue (4★)</b>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"18 Aug 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Mualani 1st rerun Banner</strong>\",\n\t\t\t\t\"Add <strong> Chasca 1st rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"30 Aug 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Lauma (5★)</strong>\",\n\t\t\t\t\"Add <strong> Nahida 4th rerun Banner</strong>\",\n\t\t\t\t\"Add <strong> Sumeru Chronicle Banner </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"28 Sep 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Flins (5★)</strong>\",\n\t\t\t\t\"Add <strong> Yelan 4th rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"20 Oct 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Nefer (5★)</strong>\",\n\t\t\t\t\"Add <strong> Navia 4th rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"08 Nov 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Zhonly 6th rerun </strong>\",\n\t\t\t\t\"Add <strong> Arlecchino 2nd rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"02 Dec 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character <strong> Durin (5★) </strong>\",\n\t\t\t\t\"Add <strong> Venti 6th rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"31 Dec 2025\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Varesa 1st rerun </strong>\",\n\t\t\t\t\"Add <strong> Xilonen 2nd rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"12 Jan 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character <strong> Columbina (5★) </strong>\",\n\t\t\t\t\"Add <strong> Ineffa 1st rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"30 Jan 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character <strong> Zibai (5★) </strong>\",\n\t\t\t\t\"Add New Character <strong> Illuga (4★) </strong>\",\n\t\t\t\t\"Add <strong> Neuvillette 3rd rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"23 Feb 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character <strong> Varka (5★) </strong>\",\n\t\t\t\t\"Add <strong> Flins 2nd rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"16 Mar 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Escoffier 1st Rerun </strong>\",\n\t\t\t\t\"Add <strong> Skirk 1st Rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"date\": \"07 Apr 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add New Character: <strong> Linnea (5★)</strong>\",\n\t\t\t\t\"Add <strong> Chasca 2nd Rerun </strong>\"\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"featured\": true,\n\t\t\t\"date\": \"27 May 2026\",\n\t\t\t\"description\": [\n\t\t\t\t\"Add <strong> Lauma 1st rerun </strong>\",\n\t\t\t\t\"Add <strong> Nefer 1st rerun </strong>\"\n\t\t\t]\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/weapons.json",
    "content": "{\n\t\"data\": [\n\t\t{\n\t\t\t\"itemID\": 15516,\n\t\t\t\"name\": \"golden-frostbound-oath\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 12515,\n\t\t\t\"name\": \"gest-of-the-mighty-wolf\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11519,\n\t\t\t\"name\": \"lightbearing-moonshard\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14522,\n\t\t\t\"name\": \"nocturnes-curtain-call\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11518,\n\t\t\t\"name\": \"athame-artis\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 15515,\n\t\t\t\"name\": \"the-daybreak-chronicles\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 0, \"w\": 80, \"l\": 40 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11434,\n\t\t\t\"name\": \"moonweavers-dawn\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13434,\n\t\t\t\"name\": \"sacrificers-staff\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14434,\n\t\t\t\"name\": \"dawning-frost\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14521,\n\t\t\t\"name\": \"reliquary-of-truth\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13516,\n\t\t\t\"name\": \"bloodsoaked-ruins\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14520,\n\t\t\t\"name\": \"nightweavers-looking-glass\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13515,\n\t\t\t\"name\": \"fractured-halo\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"nordkrai\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11517,\n\t\t\t\"name\": \"azurelight\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"abyss\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13514,\n\t\t\t\"name\": \"symphonist-of-scents\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14519,\n\t\t\t\"limited\": true,\n\t\t\t\"name\": \"vivid-notions\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 30, \"w\": 65, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14518,\n\t\t\t\"limited\": true,\n\t\t\t\"name\": \"sunny-morning-sleep-in\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 30, \"w\": 65, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14517,\n\t\t\t\"name\": \"starcallers-watch\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 60, \"t\": 35, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 12514,\n\t\t\t\"name\": \"a-thousand-blazing-suns\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14430,\n\t\t\t\"name\": \"waveriding-whirl\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 15430,\n\t\t\t\"name\": \"flower-wreathed-feathers\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 15514,\n\t\t\t\"name\": \"astral-vultures-crimson-plumage\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 10, \"w\": 75, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11430,\n\t\t\t\"name\": \"sturdy-bone\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 12430,\n\t\t\t\"name\": \"fruitful-hook\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13430,\n\t\t\t\"name\": \"mountain-bracing-bolt\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11516,\n\t\t\t\"name\": \"peak-patrol-song\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 12513,\n\t\t\t\"name\": \"fang-of-the-mountain-king\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 14516,\n\t\t\t\"name\": \"surfs-up\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"natlan\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 30, \"w\": 60, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13513,\n\t\t\t\"name\": \"lumidouce-elegy\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 15513,\n\t\t\t\"name\": \"silvershower-heartstrings\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 10, \"w\": 75, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 11515,\n\t\t\t\"name\": \"absolution\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 13512,\n\t\t\t\"name\": \"crimson_moon_s-semblance\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 95, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 169,\n\t\t\t\"name\": \"uraku-misugiri\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 167,\n\t\t\t\"name\": \"cranes-echoing-call\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 163,\n\t\t\t\"name\": \"verdict\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 1, \"w\": 70, \"l\": 38 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 161,\n\t\t\t\"name\": \"splendor-of-tranquil-waters\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 158,\n\t\t\t\"name\": \"prospector-drill\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 157,\n\t\t\t\"name\": \"range-gauge\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 156,\n\t\t\t\"name\": \"cashflow-supervision\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 35, \"w\": 70, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 155,\n\t\t\t\"name\": \"portable-power-saw\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 154,\n\t\t\t\"name\": \"the-dockhands-assistant\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 153,\n\t\t\t\"name\": \"tome-of-the-eternal-flow\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 15, \"w\": 80, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 152,\n\t\t\t\"name\": \"the-first-great-magic\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"fontaine\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 10, \"w\": 75, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 151,\n\t\t\t\"name\": \"jadefall-splendor\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 65, \"t\": 35, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 150,\n\t\t\t\"name\": \"beacon-of-the-reed-sea\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 10, \"w\": 70, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 149,\n\t\t\t\"name\": \"light-of-foliar-incision\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -15, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 148,\n\t\t\t\"name\": \"tulaytullah_s-remembrance\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 147,\n\t\t\t\"name\": \"a-thousand-floating-dreams\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 30, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 146,\n\t\t\t\"name\": \"key-of-khaj-nisut\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -10, \"w\": 90, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 145,\n\t\t\t\"name\": \"xiphos-moonlight\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 144,\n\t\t\t\"name\": \"wandering-evenstar\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 143,\n\t\t\t\"name\": \"staff-of-the-scarlet-sands\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 15, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 142,\n\t\t\t\"name\": \"makhaira-aquamarine\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"limited\": true\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 141,\n\t\t\t\"name\": \"hunter_s-path\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"sumeru\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"l\": 35, \"t\": 0 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 140,\n\t\t\t\"name\": \"aqua-simulacra\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 5, \"w\": 80, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 139,\n\t\t\t\"name\": \"redhorn-stonethresher\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": 10, \"w\": 80, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 138,\n\t\t\t\"name\": \"haran-geppaku-futsu\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"t\": -35, \"w\": 120, \"l\": 55 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 137,\n\t\t\t\"name\": \"kagura_s-verity\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 25, \"l\": 37 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 136,\n\t\t\t\"name\": \"calamity-queller\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 10, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 135,\n\t\t\t\"name\": \"mouun_s-moon\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 134,\n\t\t\t\"name\": \"wavebreaker_s-fin\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 133,\n\t\t\t\"name\": \"polar-star\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"snezhnaya\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 2, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 132,\n\t\t\t\"name\": \"akuoumaru\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 131,\n\t\t\t\"name\": \"everlasting-moonglow\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 40, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 130,\n\t\t\t\"name\": \"engulfing-lightning\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 20, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 129,\n\t\t\t\"name\": \"thundering-pulse\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"limited\": true,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 10, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 128,\n\t\t\t\"name\": \"mistsplitter-reforged\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"inazuma\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 90, \"t\": -22, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 127,\n\t\t\t\"name\": \"freedom-sworn\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 100, \"t\": -20, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 126,\n\t\t\t\"name\": \"mitternachts-waltz\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 125,\n\t\t\t\"name\": \"song-of-broken-pines\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 10, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 124,\n\t\t\t\"name\": \"alley-hunter\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 123,\n\t\t\t\"name\": \"elegy-for-the-end\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 10, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 122,\n\t\t\t\"name\": \"the-alley-flash\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 121,\n\t\t\t\"name\": \"wine-and-song\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 120,\n\t\t\t\"name\": \"staff-of-homa\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 90, \"t\": 15, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 119,\n\t\t\t\"name\": \"lithic-blade\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 118,\n\t\t\t\"name\": \"lithic-spear\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 117,\n\t\t\t\"name\": \"primordial-jade-cutter\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 100, \"t\": -14, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 116,\n\t\t\t\"name\": \"primordial-jade-winged-spear\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 10, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 115,\n\t\t\t\"name\": \"summit-shaper\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 90, \"t\": -10, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 114,\n\t\t\t\"name\": \"vortex-vanquisher\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 90, \"t\": 20, \"l\": 30 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 113,\n\t\t\t\"name\": \"the-unforged\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 60, \"t\": 20, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 112,\n\t\t\t\"name\": \"memory-of-dust\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"limited\": true,\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 65, \"t\": 30, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 111,\n\t\t\t\"name\": \"eye-of-perception\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 110,\n\t\t\t\"name\": \"rainslasher\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 109,\n\t\t\t\"name\": \"rust\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 108,\n\t\t\t\"name\": \"lost-prayer-to-the-sacred-winds\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 55, \"t\": 40, \"l\": 40 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 107,\n\t\t\t\"name\": \"wolf_s-gravestone\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 15, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 106,\n\t\t\t\"name\": \"amos-bow\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"liyue\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 0, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 105,\n\t\t\t\"name\": \"aquila-favonia\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": -10, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 104,\n\t\t\t\"name\": \"skyward-pride\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 10, \"l\": 65 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 103,\n\t\t\t\"name\": \"skyward-atlas\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 65, \"t\": 40, \"l\": 70 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 102,\n\t\t\t\"name\": \"skyward-harp\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 70, \"t\": 10, \"l\": 35 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 101,\n\t\t\t\"name\": \"skyward-spine\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 80, \"t\": 10, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 100,\n\t\t\t\"name\": \"skyward-blade\",\n\t\t\t\"rarity\": 5,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"mondstadt\",\n\t\t\t\"offset\": {\n\t\t\t\t\"button\": { \"w\": 90, \"t\": -10, \"l\": 60 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 99,\n\t\t\t\"name\": \"the-flute\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 98,\n\t\t\t\"name\": \"the-widsith\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 97,\n\t\t\t\"name\": \"dragon_s-bane\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 96,\n\t\t\t\"name\": \"lion_s-roar\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"liyue\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 95,\n\t\t\t\"name\": \"sacrificial-bow\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 94,\n\t\t\t\"name\": \"sacrificial-fragments\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 93,\n\t\t\t\"name\": \"sacrificial-greatsword\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 92,\n\t\t\t\"name\": \"sacrificial-sword\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 91,\n\t\t\t\"name\": \"favonius-greatsword\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 90,\n\t\t\t\"name\": \"favonius-sword\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"sword\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 89,\n\t\t\t\"name\": \"favonius-warbow\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 88,\n\t\t\t\"name\": \"favonius-codex\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"catalyst\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 87,\n\t\t\t\"name\": \"favonius-lance\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"polearm\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 86,\n\t\t\t\"name\": \"the-bell\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"claymore\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 85,\n\t\t\t\"name\": \"the-stringless\",\n\t\t\t\"rarity\": 4,\n\t\t\t\"weaponType\": \"bow\",\n\t\t\t\"origin\": \"mondstadt\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 84,\n\t\t\t\"name\": \"black-tassel\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"polearm\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 83,\n\t\t\t\"name\": \"bloodtained-greatsword\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"claymore\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 82,\n\t\t\t\"name\": \"cool-steel\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"sword\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 81,\n\t\t\t\"name\": \"debate-club\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"claymore\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 80,\n\t\t\t\"name\": \"emerald-orb\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"catalyst\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 79,\n\t\t\t\"name\": \"ferrous-shadow\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"claymore\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 78,\n\t\t\t\"name\": \"harbinger-of-dawn\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"sword\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 77,\n\t\t\t\"name\": \"magic-guide\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"catalyst\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 76,\n\t\t\t\"name\": \"raven-bow\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"bow\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 75,\n\t\t\t\"name\": \"sharpshooter_s-oath\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"bow\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 74,\n\t\t\t\"name\": \"skyrider-sword\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"sword\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 73,\n\t\t\t\"name\": \"slingshot\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"bow\"\n\t\t},\n\t\t{\n\t\t\t\"itemID\": 72,\n\t\t\t\"name\": \"thrilling-tales-of-dragon-slayers\",\n\t\t\t\"rarity\": 3,\n\t\t\t\"weaponType\": \"catalyst\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "src/lib/data/wish-setup.json",
    "content": "{\n\t\"version\": \"6.5\",\n\t\"wishPhase\": 2,\n\t\"storageVersion\": \"6.5.2\",\n\t\"allPatch\": [\n\t\t1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 3.0, 3.1, 3.2,\n\t\t3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 5.0, 5.1, 5.2, 5.3,\n\t\t5.4, 5.5, 5.6, 5.7, 5.8, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5\n\t],\n\t\"initialAmount\": {\n\t\t\"primogem\": 8000,\n\t\t\"fates\": 25,\n\t\t\"genesis\": 0,\n\t\t\"shareReward\": 16000\n\t},\n\t\"welkinReward\": {\n\t\t\"primogem\": 8000,\n\t\t\"genesis\": 32000\n\t},\n\t\"probabilityRates\": {\n\t\t\"character-event\": {\n\t\t\t\"baseRate5\": 0.6,\n\t\t\t\"max5\": 90,\n\t\t\t\"hard5\": 74,\n\t\t\t\"baseRate4\": 5.1,\n\t\t\t\"max4\": 10,\n\t\t\t\"hard4\": 9,\n\t\t\t\"winRate\": 50,\n\t\t\t\"radRate\": 10,\n\t\t\t\"charRate\": 25\n\t\t},\n\t\t\"weapon-event\": {\n\t\t\t\"baseRate5\": 0.7,\n\t\t\t\"max5\": 80,\n\t\t\t\"hard5\": 63,\n\t\t\t\"baseRate4\": 6,\n\t\t\t\"max4\": 10,\n\t\t\t\"hard4\": 9,\n\t\t\t\"winRate\": 75,\n\t\t\t\"charRate\": 75,\n\t\t\t\"selectedRate\": 50\n\t\t},\n\t\t\"chronicled\": {\n\t\t\t\"baseRate5\": 0.6,\n\t\t\t\"max5\": 90,\n\t\t\t\"hard5\": 74,\n\t\t\t\"baseRate4\": 5.1,\n\t\t\t\"max4\": 10,\n\t\t\t\"hard4\": 9,\n\t\t\t\"charRate\": 50,\n\t\t\t\"selectedRate\": 50\n\t\t},\n\t\t\"standard\": {\n\t\t\t\"baseRate5\": 0.6,\n\t\t\t\"max5\": 90,\n\t\t\t\"hard5\": 74,\n\t\t\t\"baseRate4\": 5.1,\n\t\t\t\"max4\": 10,\n\t\t\t\"hard4\": 9,\n\t\t\t\"charRate\": 50\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/lib/env.js",
    "content": "const host = import.meta.env.VITE_HOST || '';\nexport const HOST = host.replace(/^\\/|\\/$/g, '');\n\nexport const APP_TITLE = import.meta.env.VITE_APP_TITLE || 'Genshin Impact Wish Simulator';\nexport const DESCRIPTION = import.meta.env.VITE_DESCRIPTION || '';\nexport const KEYWORDS = import.meta.env.VITE_KEYWORDS || '';\n\n// API\nconst apihost = import.meta.env.VITE_API_HOST || '';\nexport const API_HOST = apihost.replace(/^\\/|\\/$/g, '');\nexport const IBB_KEY = import.meta.env.VITE_IBB_KEY || '';\n\nexport const GOOGLE_API_KEY = import.meta.env.VITE_GOOGLE_API_KEY || '';\nexport const GOOGLE_CLIENT_ID = import.meta.env.VITE_GOOGLE_CLIENT_ID || '';\n"
  },
  {
    "path": "src/lib/helpers/accessKey.js",
    "content": "import { proUser, showAd } from '$lib/store/app-stores';\nimport { cookie } from './dataAPI/api-cookie';\n\nconst digestMessage = async (message) => {\n\tconst msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8); // hash the message\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\n\treturn hashHex;\n};\n\nconst fetchKey = async () => {\n\tconst date = new Date().toISOString();\n\tconst data = await fetch(\n\t\t`https://gist.githubusercontent.com/AguzzTN54/3816708e01827a5c64f4903242ede7b0/raw?date=${date}`\n\t);\n\tconst { hash, previousKey } = await data.json();\n\treturn { baseKey: hash, previousKey };\n};\n\nconst checkKey = async (key) => {\n\tconst { baseKey, previousKey } = await fetchKey();\n\tconst inputKey = await digestMessage(key?.trim());\n\tconst isKeyValid = baseKey === inputKey;\n\tconst expiryDate = isKeyValid ? 'none' : previousKey[inputKey] || null;\n\treturn { isKeyValid, expiryDate };\n};\n\nconst adKey = {\n\t_set(key) {\n\t\tconst reversed = key.trim().split('').reverse().join('');\n\t\tcookie.set('accessKey', reversed);\n\t},\n\n\tclear() {\n\t\treturn cookie.set('accessKey', null);\n\t},\n\n\tasync initialLoad() {\n\t\tconst storedKey = cookie.get('accessKey');\n\t\tconst reversedKey = storedKey?.split('').reverse().join('');\n\t\ttry {\n\t\t\tif (!storedKey) return { validity: false, storedKey: reversedKey, status: 'ok' };\n\t\t\tconst { isKeyValid, expiryDate } = await checkKey(reversedKey);\n\t\t\treturn { validity: isKeyValid, expiryDate, storedKey: reversedKey, status: 'ok' };\n\t\t} catch (e) {\n\t\t\treturn { validity: false, storedKey: reversedKey, status: 'offline' };\n\t\t}\n\t},\n\n\tasync verify(key) {\n\t\ttry {\n\t\t\tconst { isKeyValid, expiryDate } = await checkKey(key);\n\t\t\tif (isKeyValid) this._set(key);\n\t\t\tconst isExpired = expiryDate && expiryDate !== 'none';\n\t\t\tconst invalidMsg = isExpired ? 'menu.keyExpired1' : 'menu.invalidKey';\n\t\t\tconst msg = isKeyValid ? 'success' : invalidMsg;\n\t\t\treturn { validity: isKeyValid, msg };\n\t\t} catch (e) {\n\t\t\treturn { validity: false, msg: 'connectionFailed' };\n\t\t}\n\t}\n};\n\nconst retry = () => {\n\tconsole.log('reconecting...');\n\tconst timer = setTimeout(() => {\n\t\tclearTimeout(timer);\n\t\tverifyKey();\n\t}, 10000);\n};\n\nconst verifyKey = async () => {\n\tconst { validity, status } = await adKey.initialLoad();\n\tif (status === 'offline') return retry();\n\tproUser.set(!!validity);\n\tshowAd.set(!validity);\n};\n\nexport { adKey, verifyKey };\n"
  },
  {
    "path": "src/lib/helpers/assets.js",
    "content": "import { API_HOST, HOST } from '$lib/env';\n\nconst imageModules = import.meta.glob(['@images/**/*'], {\n\tquery: { as: 'picture' },\n\timport: 'default',\n\teager: true\n});\n\nexport const itemList = () => {\n\tconst pathList = {};\n\tObject.keys(imageModules).map((key) => {\n\t\tconst [keyName] = key.split('/').reverse();\n\t\tconst [keyNoExt] = keyName.split('.');\n\n\t\tconst { img = {} } = imageModules[key];\n\t\tconst { src = '' } = img;\n\n\t\tif (key.match(/face\\//)) {\n\t\t\tpathList[`face/${keyNoExt}`] = src;\n\t\t} else if (key.match(/splash-art/)) {\n\t\t\tpathList[`splash-art/${keyNoExt}`] = src;\n\t\t} else if (key.match(/wishcard/)) {\n\t\t\tpathList[`wishcard/${keyNoExt}`] = src;\n\t\t} else if (key.match(/art-nobg/)) {\n\t\t\tpathList[`nobg/${keyNoExt}`] = src;\n\t\t} else if (key.match(/banner-button/)) {\n\t\t\tpathList[`button/${keyNoExt}`] = src;\n\t\t} else if (key.match(/thumbnail/)) {\n\t\t\tpathList[`thumbnail/${keyNoExt}`] = src;\n\t\t} else if (key.match(/blank/)) {\n\t\t\tpathList[`blank/${keyNoExt}`] = src;\n\t\t} else if (key.match(/(banner|weapons)/)) {\n\t\t\tpathList[keyNoExt] = src;\n\t\t} else {\n\t\t\tpathList[keyName] = src;\n\t\t}\n\t});\n\treturn pathList;\n};\n\nconst images = [\n\t{\n\t\tdir: 'background',\n\t\tpaths: [\n\t\t\t'constellation.webp',\n\t\t\t'detailbg.webp',\n\t\t\t'element-anemo-bg.webp',\n\t\t\t'element-cryo-bg.webp',\n\t\t\t'element-dendro-bg.webp',\n\t\t\t'element-electro-bg.webp',\n\t\t\t'element-geo-bg.webp',\n\t\t\t'element-hydro-bg.webp',\n\t\t\t'element-pyro-bg.webp',\n\t\t\t'wish-background.webp'\n\t\t]\n\t},\n\t{\n\t\tdir: 'utility',\n\t\tpaths: [\n\t\t\t'3star-bg.webp',\n\t\t\t'4star-bg.webp',\n\t\t\t'5star-bg.webp',\n\t\t\t'5star-special.webp',\n\t\t\t'acquaint-fate.webp',\n\t\t\t'bg-bonus.webp',\n\t\t\t'book.webp',\n\t\t\t'book-select-bg.webp',\n\t\t\t'brand.png',\n\t\t\t'button.webp',\n\t\t\t'character-shop-frame.webp',\n\t\t\t'chronicled-mondstadt.webp',\n\t\t\t'epitomized-bg.webp',\n\t\t\t'epitomized-half.webp',\n\t\t\t'epitomized-ribbon.webp',\n\t\t\t'genesis-60.webp',\n\t\t\t'genesis-300.webp',\n\t\t\t'genesis-980.webp',\n\t\t\t'genesis-1980.webp',\n\t\t\t'genesis-3280.webp',\n\t\t\t'genesis-6480.webp',\n\t\t\t'genesis-bg.webp',\n\t\t\t'genesis.webp',\n\t\t\t'history-select-bg.webp',\n\t\t\t'intertwined-fate.webp',\n\t\t\t'modal-bg-icon.png',\n\t\t\t'payment-childe.webp',\n\t\t\t'payment-tears.webp',\n\t\t\t'payment-wakaranai.webp',\n\t\t\t'primogem.webp',\n\t\t\t'qiqi.webp',\n\t\t\t'shop-nav-bg.webp',\n\t\t\t'welkin-card.webp',\n\t\t\t'welkin-moon-girl.webp',\n\t\t\t'welkin.webp'\n\t\t]\n\t}\n];\n\nconst previewImages = [\n\t{\n\t\tdir: 'background',\n\t\tpaths: ['outfit-background.webp', 'splash-background.webp']\n\t},\n\t{\n\t\tdir: 'utility',\n\t\tpaths: [\n\t\t\t'bg-bow.webp',\n\t\t\t'bg-catalyst.webp',\n\t\t\t'bg-claymore.webp',\n\t\t\t'bg-polearm.webp',\n\t\t\t'bg-sword.webp',\n\t\t\t'placeholder-face.webp',\n\t\t\t'genshin-logo-cn.webp',\n\t\t\t'genshin-logo.webp',\n\t\t\t'masterless-stardust.webp',\n\t\t\t'masterless-starglitter.webp',\n\t\t\t'resultcard-bg.webp',\n\t\t\t'stella-fortuna-4star.webp',\n\t\t\t'stella-fortuna-5star.webp'\n\t\t]\n\t}\n];\n\nconst bgList = () => {\n\tconst paths = [];\n\tfor (let i = 0; i < 10; i++) {\n\t\tpaths.push(`bg${i + 1}.webp`);\n\t}\n\treturn { dir: 'background', paths };\n};\n\nexport const listingAssets = (param) => {\n\tconst arr = [];\n\tconst globList = itemList();\n\tconst allImg = [bgList(), ...previewImages, ...images];\n\tconst imgs = param === 'preview' ? previewImages : allImg;\n\n\timgs.forEach(({ paths }) => {\n\t\tpaths.forEach((path) => {\n\t\t\tconst pathdir = globList[path];\n\t\t\tconst item = { path: pathdir, asset: path };\n\t\t\tarr.push(item);\n\t\t});\n\t});\n\treturn arr;\n};\n\nexport const blobAssets = async (path) => {\n\ttry {\n\t\tconst data = await fetch(path);\n\t\tconst responseType = data.headers.get('Content-Type');\n\t\tif (responseType === 'text/html') throw new Error('Failed to load Assets');\n\t\tconst blob = await data.blob();\n\t\tconst DOMURL = window.URL || window.webkitURL;\n\t\tconst url = DOMURL.createObjectURL(blob);\n\t\treturn url;\n\t} catch (e) {\n\t\tconsole.error(e);\n\t\treturn 'error';\n\t}\n};\n\nexport const base64ToBlob = (image) => {\n\tconst [dataType, base64Data] = image.split(';base64,');\n\tconst [, contentType] = dataType.split(':');\n\tconst byteCharacters = atob(base64Data);\n\tconst byteNumbers = new Array(byteCharacters.length);\n\n\tfor (let i = 0; i < byteCharacters.length; i++) {\n\t\tbyteNumbers[i] = byteCharacters.charCodeAt(i);\n\t}\n\n\tconst byteArray = new Uint8Array(byteNumbers);\n\treturn new Blob([byteArray], { type: contentType });\n};\n\nexport const initCDNURL = async () => {\n\tconst check = document.head.querySelector('.imagecdn');\n\tif (check) return;\n\n\ttry {\n\t\tconst loadScript = new Promise((resolve, reject) => {\n\t\t\tconst cdn = document.createElement('script');\n\t\t\tcdn.crossOrigin = 'anonymous';\n\t\t\tcdn.src = API_HOST + '/js/image-cdn';\n\t\t\tcdn.classList.add('imagecdn');\n\t\t\tdocument.head.append(cdn);\n\n\t\t\tcdn.addEventListener('load', () => resolve('ok'));\n\t\t\tcdn.addEventListener('error', () => reject('cannot use imagecdn'));\n\t\t});\n\t\treturn loadScript;\n\t} catch (e) {\n\t\tconsole.log(e);\n\t}\n};\n\nexport const imageCDN = (imgs, width = 0) => {\n\tif (!('getCDNImageURL' in window)) return imgs;\n\tconst finalURL = window.getCDNImageURL(imgs, width, HOST);\n\treturn finalURL;\n};\n"
  },
  {
    "path": "src/lib/helpers/audio/audio.js",
    "content": "import { browser } from '$app/environment';\nimport { Howl } from 'howler';\nimport { localConfig } from '../dataAPI/api-localstore';\n\nimport camera from './camera';\nimport changebanner from './changebanner';\nimport click from './click';\nimport click2 from './click2';\nimport close from './close';\nimport exchange from './exchange';\nimport inventory from './inventory';\nimport history from './history';\nimport obtain from './obtain';\nimport modal from './modal';\nimport roll from './roll';\nimport shopopen from './shopopen';\nimport shopnav from './shopnav';\nimport shopsubnav from './shopsubnav';\nimport collectionitem from './collectionitem';\nimport prevbanner from './prevbanner';\nimport bookflip from './bookflip';\n\nconst source = {\n\tbookflip,\n\tchangebanner,\n\tclose,\n\tclick,\n\tclick2,\n\tcollectionitem,\n\texchange,\n\tmodal,\n\tobtain,\n\troll,\n\tinventory,\n\thistory,\n\tcamera,\n\tshopopen,\n\tshopnav,\n\tshopsubnav,\n\tprevbanner,\n\twishBacksound: '/sfx/wish-backsound.ogg',\n\tresultList: '/sfx/result-list.ogg',\n\treveal3Star: '/sfx/reveal-3star.ogg',\n\treveal4Star: '/sfx/reveal-4star.ogg',\n\treveal5Star: '/sfx/reveal-5star.ogg'\n};\n\nconst sounds = {};\nconst soundInit = () => {\n\tif (!browser) return;\n\tObject.keys(source).forEach((key) => {\n\t\tsounds[key] = new Howl({\n\t\t\tsrc: [source[key]],\n\t\t\tloop: key === 'wishBacksound'\n\t\t});\n\t});\n};\nsoundInit();\n\nexport const playSfx = (sfxName = 'click') => {\n\tif (localConfig.get('muted')) return;\n\ttry {\n\t\tif (!sounds[sfxName]) throw new Error('No Sound effect for ' + sfxName);\n\t\tif (sfxName === 'wishBacksound' && sounds[sfxName].playing()) return;\n\t\treturn sounds[sfxName].play();\n\t} catch (e) {\n\t\tconsole.error('Unable to Play Sfx : ', e.message);\n\t}\n};\n\nexport const pauseSfx = (sfxName) => {\n\tif (localConfig.get('muted')) return;\n\ttry {\n\t\tif (sfxName.includes('reveal')) return sounds[sfxName].stop();\n\t\tsounds[sfxName].pause();\n\t\treturn;\n\t} catch (e) {\n\t\tconsole.log('error to pause sfx');\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/audio/bookflip.js",
    "content": "export default 'data:audio/mpeg;base64,SUQzAwAAAAAxJVBSSVYAABCbAABYTVAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYjBmOGJlOSwgMjAyMS8xMi8wOC0xOToxMToyMiAgICAgICAgIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcERNPSJodHRwOi8vbnMuYWRvYmUuY29tL3htcC8xLjAvRHluYW1pY01lZGlhLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA3LTE4VDE5OjQ2OjUxKzA4OjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMy0wNy0xOFQxOTo0Njo1MSswODowMCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiYTc3NjlkYy1jYjkxLWJkNDgtYjRkMy0zYzk0MmM1NDg1OGQiCiAgIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6YmE3NzY5ZGMtY2I5MS1iZDQ4LWI0ZDMtM2M5NDJjNTQ4NThkIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDk0OGI3YmItZmY1YS0yODRkLTgwY2YtMjFkMTJjZjExY2RiIgogICBkYzpmb3JtYXQ9ImF1ZGlvL21wZWciPgogICA8eG1wRE06VHJhY2tzPgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaQogICAgICB4bXBETTp0cmFja05hbWU9IkN1ZVBvaW50IE1hcmtlcnMiCiAgICAgIHhtcERNOnRyYWNrVHlwZT0iQ3VlIgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJDRCBUcmFjayBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IlRyYWNrIgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJTdWJjbGlwIE1hcmtlcnMiCiAgICAgIHhtcERNOnRyYWNrVHlwZT0iSW5PdXQiCiAgICAgIHhtcERNOmZyYW1lUmF0ZT0iZjQ4MDAwIi8+CiAgICA8L3JkZjpCYWc+CiAgIDwveG1wRE06VHJhY2tzPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OTQ4YjdiYi1mZjVhLTI4NGQtODBjZi0yMWQxMmNmMTFjZGIiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDctMThUMTk6NDY6NTErMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjMgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmE3NzY5ZGMtY2I5MS1iZDQ4LWI0ZDMtM2M5NDJjNTQ4NThkIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA3LTE4VDE5OjQ2OjUxKzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4zIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDx4bXBNTTpEZXJpdmVkRnJvbQogICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OTQ4YjdiYi1mZjVhLTI4NGQtODBjZi0yMWQxMmNmMTFjZGIiCiAgICBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ5NDhiN2JiLWZmNWEtMjg0ZC04MGNmLTIxZDEyY2YxMWNkYiIKICAgIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0OTQ4YjdiYi1mZjVhLTI4NGQtODBjZi0yMWQxMmNmMTFjZGIiLz4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7tGAAAAWeUjzjGGNgAAAJcAAAARZBSRsnve2IAAAlwAAABHI3JG3/XSu+mQXJAYzFALDSiU83y4wMARjS6MQB1I041EVTR8YyuJpk+/Ct7Ml6LkhDhtPZA2ZncqpYy19ujeMPhqDpdIXkd90IBeZxHDgpAJiHH3rCuVh8BoUzcwQ1RMTn6dWsrA6I4oH0GAllxaTy4ag3aEtcDQeQZiAtP2Hon1hXLxNIw+Ewzapt8prjbxgnecvTKbfHG43LU38mZn6b9NzffpM7lbdFc4KqQFr+KgQkOqZVWVZUmSCwJIytqHp4mgCQoYTxcGQShZXBY12Zafcl801XOtqybQwwB2I2EACCQnhPDwT8aXdmdvOtuLYqEMix0+o9t5b0e8YIs23At7SyXVkSjW562uw1Zrsj8/wj4YZ5m4oTTZls5HBgOi5+Kh+pzTVbU4s7+SkZ05px4cixDjw1fCmY1w6f3y/xSksfDxnYHT+BLZWOGt63q8OPi8eBV/JNfcOPIfwSIHiP6WEHsli0BLEAAI8RAABgWWEREREpr/89ygG4jj9J+p0tKuFaqlItwTTViGKNRq/bOf51kvbi5lAHQnGVRohOI2S0U//WNSNn3Ux0HIqHhyMR0K/rtVeRcpRgJweDYf75saz8cYbMQQTQTQ/QBOCsP8TwYhgEsTpIFQc4masKAeCcEkOk/gv0EMASQWA6GSzwsjUeoexk7Ot4f5wMavLephZCGMb5bNBDHGA1qRWH4j513eMnFY3oeqKXOf/7tGBWAAaUYE3x73tiAAAJcAAAAR6lf0Hn4w2AAAAlwAAABBQIYdEqvVF0/GNBtUbetq+m76Y38Z45QYeo8Cmrz53PW+raxqP1qKcRAiEBKbSScLEPsvRMS3JipvLkI+qjgAJwFAuDlCAxsIgPfeB5bFLlO1t7mGMMlNy++T7N5J33bAylY793qjdAEASHMKDuc3qt4GPEIeUHZOnwhOLWAgS/G0Ym8crl8biUgf965nF259YjKJxE9/lXqcLzTjLsJtqBtGSWDENNehrbLoZZE1xJFVzGkgUG2yPlMw0qSWxt2Yk68EP/B2b71JBORvOfoYTKpRDl2p8qiV3O5SRuUMrkcEQdEI7NUEpldelrtbcG9Xo6bO3aiFa3FJ6nh+nxed7JfY7HpTnYpJZdpsM43J8sLGBw+J3xxCQofIdAqJRBEAIlWRc8CQoUQMzjJbDuWWdPt+1UmlG0m+1m2p08mVhxJmmz+eHDlDT/VKUNM7zHVul5XwkBBRD84zQW0a2GU0C8JEBjJkdZNWM92ljRRBEIOhKjvwHGggQg0i8DZCXkvwXWMeqnLeOstgdA7k+N9BsCTV6oOtifFxU6wrzQZ3zbQ7GR40vjSh0NBmY4EKM9nUq1AeLpfjoyVcoJyfGgh7Yq1Vp/lNRICuViaguDajpFG9e4fxotp3TM86vmkZJoLArYagYW9fhXW2FdavTED3oa5eqacyEhAiSSSclWiBibmQXNU4TR0p9D3NwQ9yNMvK4fl1PwO44S5AtFW//7tGCAAAa4YNPx73t4AAAJcAAAAR3pgU/nvw2IAAAlwAAABFpMvRCW41jLMc7EYrjLIWBHISUA3ClRQRsM8F+AthqgNVCxY7yyDjN3m7jq1nqDsbk8EsmpFcKvU0iLUFgJGoZeZQ6bO4CZw0NcsIam5DfyKleqdpGUK2w7KmsUzxVmgQ0+rfyuLN7czlDZ2Y2YTDcug+D4qyiFSikh1/HMeKheqLVmuPPL5WwBhEOv/Bthmssi75zOMv5O5xN1NOlchyksUUxdpZbKLNJZmYfyz3O2cZzCmtw/KtQLUjeNeE435dPd5Xl14gCXdBIxESZJTkubRXCXmgfKFJVOHG1EQLYfpPyfIcfpel9PWxxy4OdJlrnINRyQInJaAgiKDOQia/3KpKlGm4XcTofKmcvbIZC/LNioYvAlq1CB2VNGW00tHOJN/K0iHleJYSHZZAbO2tPQ/9ZTmpMqXMAbo0d02Gg4cqfRnL2S1fy/ZY06LsiaE4jWIXXgSKu3amIfnsog8TpNBc3UjsUcch9z5uR184hLH/V288WV3NRZjE/BjFKz7unHV/vq7jSqr+2XfiEMyqA5I6EghUOSGWapaPlJVuRixUnZmLuDalkUjuMD2bndRm/nGrcwYM7i5XSaJJKSbUjkcjbUcjkCKZuk3d9GCoPgmpdEQMZg3A85GnKFF/ayy1A1C2wl3X1a4iQREYXDiwCs+BAemWMhsAmZCwQ5jBIaYaoCzBQRLRAVHRZgONqTeSMzURMyTDFC00M+Mv/7tGCqgAeLYFT9PwAAAAAJcKAAAS1J6VW5jYAAAAAlwwAAAGITXnkxVmFRQwkGTGEQKVR1BAIxYwRaNmChIhEAwa+QG/vhgY2aAEhgsnsIQsoCRoCEjUHCZQAmNIxgwEQFRWJAYAEAYYwPDgYLDZaJIMGlxggOCgVXhVCC8Q8AKrNiXyEAAcFzLswqVw6j2+MYgu/Sue2KH4H1Km9gi9COmFhIcPF+CIRXY+ZdwvAjWn8+7gq+T6jbtQwyJlKgLlu87D8vtSw7J9SsOEDCwdH9e6/Vzq7RMLYL0gd/IEYzXdFgLdmJMOsQ016M2aaITM/H5Rfn/tWe3/qUmFSGIpF8rFPbz3T27G7cssfUpLFvv////6rRKreyqy2l/Grl3HK1lqtTYuEp3oi4mEMRERESSSpJUKIETo2VaUcVKqijGpRwsCdPVkJybh4KhzhrkyDwV4sDkaikOZgLCb5jlxQ0uJvD0pBnBqjBD0hpOpUyLgXEcgLRPmeaKiHrXCFANKFFIrCkEiJgdykLEnD3Jghx/tcRQOJgFRCKtDRwpoiEu9mOYuSuLtAULUX85ls1kKH+OJXuJyps6DheGCi7v2hFD6OxjL0it1MhcwDfeUwpzpYzpXC4UT1YTSdVzUkE64oamoKrxGZJGCS2oGqwnFmft8WVsRc7VHTy/qk0b2h41Su86nt0VBIiESSSnLSWi3LogrEW1UnSxLtD25Pt57o+qmibbcnWIx+G6zR39fCVuZTuy5LwKMs/UTUya7KYnf/7tGCKgAbMYFT/PeAAAAAJcOAAAR2Je1Hn4w2IAAAlwAAABCXlmNJgFbLcyoNrrQYAZCSEThXqwdY7bN1g+LM0f55m0fFERrF1/YRTz9JC2QpgyGUt7G4AeNDKVN41erNNbaBYdmYceWNfeuCHrZBIbLAm7Q5MRrdNIKGB4OfmKNwZW6MARh3IrGIpYbrD0pXUzWGHJk76w877yw3KJC97K2UPvRsgmaZ9pUteGKaQx+XRydlE7DDZX6gKOUsMxaFQ7KZQ7Wpul+e7S28ZZyrSW+MU6KllMjIhIokElQDIFAIBQIoERxIIfh8PYkmQlCGzBrcMNHUxRTjWbdkcYEqsso2xMsp3YWNBimy8FSo7sYTQIjKYF4mHMwnnZgJqDgS9l6ZEyIUJ+PEeJ2lwRZ1KQbIpZYCwD+do4b0R02NME5kohLE1r5woaizHFKJ2ZBCTpH4cphi/Q82C4lxQbkoEcdZbUPRiMaTVHkgD8OByO2iKElKMtiBFvhkOGUpiBEmMB8U6V0fJ5px4qh+i+RrirDBOdaTh5t75dwmqZvVyhjtB2IWxu5kOKM0zFONygpZQ3b2ZubXBU2eP8vKQ21630f/X////////////////////////////////////9WmiSSSUnLT/H6uB2KIsaMXwYrfAjtZ4MiOPUzw5yWIBFigJ6EiA0mEuxMD/LCPSdAuBYVWi1lFEDQgvRGQqScF5dm22DQC+LFLaR3W+q5tW9iDN4LYlDhahTYeY67Cm4v/7tGC1gAhPYFR5mHtoAAAJcAAAAR+ZgUmnvw2AAAAlwAAABNbTMpqVjdeHW5O+9SgryS1Xad4QFqc7GW7r2fZhCq7op0sOZmowpq6zY3dWozKtdhxtYESpdmTPq51lhtdv37U6JgQm03ONPS9zxs/ijOlyyldUqb+xLWoPQzhDaKqoQ24dt556M0N6DaleQptSdncOONE1sN8+qw1d040pVK5TOwO/cDUOdM78Ve6TRS3V3nOU11a6jdAi3MtVWLq00SUkkk5aTAdaGj6by/qk8z4B8pAbhYlYAbMKsHKPUPBYEMNxVrRK3iSNU0TPOYQpRBhj0keImQw5xMVS5A0BfGgURDzHJgpj+DHh0hCzR4F4L3fZGp+2qI1S0ZGiqsRijTIIgGhaUrl3Jprz/Q1crqVPM10Qgijlvo0CYhMqs2qaQQ02BvYEabQuuoQ0psTD3fi8vdV5VgqZtmGP6y2BXljCiiCZueL+MMd2bUZeOI00YfeHIlW3TOinTTu81du1CyNrcSgtuMDwy9N9atIxB7KNP2GoFc5flmSwdHY1DDixbT3PhSVJXKIhDlJQcr7pKes9SUC9sxpR1f////////////////////////////////////////////////fEiSSQUSnLkLLInJ8tBdZ00rl80LKhzFkLYSkv4kzCBWOgcqHCrURWIw9S9zMhOw7nxfRmC4CcEbRiBG4jC5hUCuEgOpYL+okE/6goVI7rW9rFTVbrgtcaGrbYhqsp9f/7tGDAAAkDYFHp78NgAAAJcAAAAR91gUenvw2AAAAlwAAABCt7pdOyeG30gFJVe6MsggpRxrTCVH39XvLH0bO11r04wiGWDTSka8nfmD4o/dBNtkvUylbupFULSXAjELjTYYQsmagZiLxxnJlUscaUQ5CL6m821CYciYXVJGZvVHW7OzGWLxCAIGu5PVcfegdSTtbl9d0oYduB41AEbdCH4KxgdrDXo5ylpnje2bt2LEmfRmbnFQslx0wiiZahC79ESSSSCU5aURbTxFyTZip1FEyZqptfZyoOQfA7CDCvAckwOAmB/BkH8X4uyvLAVRoGWgzfFryBJhWBkGiSUBXBhMFJUVDdiZIAGSW42juLyfCIQo1CRp1CgRRfSGKwfrdLCVMFpUzwZ4+TpJwjTpSJ0gxidnEhI5jTR6mV4pQlglivJwdCbY1kuItyOQsxDhblGzBIFFOHdCXcaEWARUs1tXKZWpE6FH3xejmPc6zfKNWktZxynEYalSBBkLQ84GWqIWWRtLNWrZ0DhLGiaqZwXDyAztMHUFWqU8I7SpVlkU7i3Ob+sVNyy7Ik2Wb+6zP5em1//////////////////////////////////////////////////IkSSQCASk5ThJkihcECcKfOZBSHU3GklkUiFDK/2ZMOYin4mXAEqqNHmmfs2ZSwth6c8OqUxeThBX+dGkS8RTVhfuQOGqyVRFSDjrpYXD6AyiTgYGhg1uCxANy1LoRL05X+ajIFlP/7tGDAAAjNYFFp73tiAAAJcAAAASBJgUGn4w2IAAAlwAAABOtAqlzel+X3UaaPDDiKZwOnNdSyky+GtK1TLYI23BwGZzLVG7yl/YcjbXn2sN61WUq8iS92KrncZ3lVHYbtDcENWXRI3VeaQXnboaaCI2vuKOPLGIwFJ2btwciKO9NKYV6KUuFBsueCld5mMOzUonom87ApDNTjsNbU6j7YmtyqF0FHHYg5cQj0FRGtNvbVjepODSn/X5KZ37hMVnWyASQAAU3KO4wSXkIU5c+f5yJRDC8JEmZ5mkMYMopH5dDSNAtpbhORimoFebh3RhMCEHIqwjBekkdR2j2FJLGS88i7h1FzJ1cJMebkjhwCjEbEMQI4DKDhK4cKEgpAuX6fJeGkYAVIP0NWtkyCPDcIcCiLkPoHwK+O5jDlSq6NE1CVljUhBR1kmYo4mhiLpPAFwz0a3rDAdiSLgQkdJ8uBbyXIc9NzaChwY6IZj9VinTh2HQWwg7Y3q5PHu2HoWx6TMdjcjWKRkNeCwGgdw+4TDizkWBOHOqUUjo5pq1L5YmuZcNz46zpiIuIuVQ3Oo4cKVvSixDtH///////////////////////////////////////////////9sZTJKBICUtYBXEmNwnrGXwWcvTKaYEJEsKsWs+kCRlaD/s3XgsxOBQ9obL2HM7VE7stY6qiytMoBEEAFSF1AQhHUHbfVVJXylZfyNJ1LTW+8jImwo12nEHBNrMOaqAICgvHWtP/7tGDAAAjdYE/p73tgAAAJcAAAASANgUGn4w2AAAAlwAAABOrC40+dWB3LkrDpMv5hS8H8hqVQhINy1iP64k07riOokannJmNNcftlbxv23OMTr9OI4LW2nIHv0ozLGuV2Iputnf2kf53oBlzX4627lNBm3HkDUYEcZ6n7V+1Feb/LtonhlbMWyQhed+FPU3Zszc4wviMyeGHqdmA2lNZc9+mvtbcqei9C/T30McnbliapI/OWIzLvlsYbQmpTK3USGSSAAS5JF1O2EMSajIWhLAl7l1ZuayYLDZkvhfkXVvnKSVNbWgxFPtHpiC0VQu82eMPQzZM5Bx02GPmCCjoCyqLDztuulrhNJKxQdm6fj1srXCqsyhwXHkz4JiovEgQZgICWjh1O9rzU4hG2kNSVIrIyN9k0nncRQRCFbMftWYZhyfdl1pHAzS3Ia7DkkcrJiKTdA6ziJAQAv9zGd7Z27zpqBu6ps8DjKEvG+pZdPtQgiGX8Tdo1MAMNWMEhVw+ziFzKlJEGtpyMhcRmbNoIZg2jKaeO3HkYOwy41CX1oYZA1uvem/fCSPsv2RRHdXkOTmEZl+NjPKxK43S5AgbDLGM6//////////////////////////////////////1GyCSQAAU3KSAyDLHwTV8ZDCB1OE025DSTmQO0t42y5ilnKXAu6eX0dRxJ4PZAHUJuQwUC5DkEhIWaKQJecRCAqC2CTCei+PIeBcy/mKQFaELQkwxrLaOHKGoKMRQACv/7tGDAAAkGYNFrGMNwAAAJcAAAAR9lgUunve2AAAAlwAAABATgwAyE+LG0hIS4jFNAszTIYXhFEFHaTMwBPSfoUXhmLGPWmzHLCM8VaBJmjyEE/KNFJ1XD/JgOIlpO2EghPgw20lZ/F/TShSpwkJgmYOnCvWkgo1yU8Ak8Q2CwRB1IedBIz2Uq3Yc4wEAojqOwc86nU5OjtVCeXSEohWHugGppX1w8nWJYCsiM87czzyxoatboD4QExHgO2c77khISSSQCSU26GhFA+BQBQhEsp2HkWGJ8KQ9LRRnCf5eeLWPWSUupKh1lQwmmynIzHkZYRkKogx+kMIMWxZATRMH5chNRdQgpcCmXDtsGbkRSaeu9gaJjNXkUfgGabdTp9W6SN6i7MKZA8b7KLy5y1V18Qt65Q1ZhboMfY8pmpirE+kcaUnI3jEGbsGWu/K38U92xM6kUBMnZ67DYVpu7qHYfVWdKdU7eN6H1VgU7Youp4IQwFeq+FysKZU4S+VD+sOcqYmH9dlBC0lRaX7iMabrSu9K5dYpLFyxTstcG7Kc7s9uWy6ApyPYxu0+l3GB52SW3gjLzNWoqTJPpc+xP///////////////////////////////////////////////////P22kSSkkm5S/F2FjNIfqhSJ+EIOV1FYXyN0n2iMdi2MQ5TmOYIykDmVY+xDxbwzzkEUL4dgvTxDCH4bJeRgEHJcHMZR8IBFF5HwrENL8RCjBCJwUsdaVHpC5ai//7tGDAAAkhYFLpj8NgAAAJcAAAAR79gU+nve2AAAAlwAAABMnWd5fGQfBrE3Q4zzlEkTijLsUzAfyQF0OUXJ63EFIQHWzI0Q895A4OPkhbChZ/BLlkl5D2EuamL6XYZipJwbS0DQUhPkGqF8lCpPg6Yzs5DcThKyEGyQAiBZwb5kByjvPt8boJ9JHhCZUENQ/jpQ9SWa1clIiwt6YlQyHacyimcGLtrNh+kGRucYpbIsON26IGQkxQgILvacvb62h0IiIiEkpJuXk0RRGi/k+S1l2k3JTItQnE4t5fElVHlgZ1tZNkYKHBKhvF6PhmMgnY+H5nhXN4URCi3owHwTs4SFl1FKawrzujExH39j8qe6DXqiyykyWYuylWXrT3QDu84CGj8N0YYmgxSBWbw3ANNEF1vE0qKrraOulorpQSmE8wgIFgl/F7JIt8yWE1XpeVwYZiDizyjTdn3bJAbNmvMOd6AIbg7G3AkAQZZbSIuY5zYHNVwzluKgbcHBsQtzGbxmVuesDNtdcCmh6gp3Rhqu4cONcdOTO+qdobEV1rCXIWyt8JLGNSiFsShMbcRpUppKCjd+WgYEihhQUi2UNsTpU5yP/////////////////////////////////5inYjIhIlJJuQt45VKU5djsOhljKiAyPFYolFGbHI54jSmDjYDTXTafg4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cMAAABxBfU+5h4AAAAAlwwAAAAn5iJBQF/AFQdIcAJ5qJaH0ElLuGeQwcp8H6hLJADcH6mVWZxPyGpwcelUdCrTyENI/iQoJ0EeXLkS2UnzmwqhiUxouyTPFpC0iXVibU+epokJdLMzezxHpJEe9PpuZU++LkcDEujYW08xwaSF7XRbmt61vXKPVka3KGbrdWtHp1H8ji7QnOloVsQmM8GVliRo2szZhMbHmmcwdzwLW13vWVABBVmSSTbcckltWtHHaSklieKtQ8BagiAhzLiF1QwUnMjyCSpsbZQCZCBgC7xd6FhzXSULHAgIgQQrIkoKRplqBNfUPSUelmKk2Q1Wusfo1dIICYErh5MWWp0N82KdeB/mvQMtlIuNTyaLEYmyyiQTJdJ1r3ZGslKibcRSSHZ7muKCKpS+oy9e8dit1oi1GoP67zlSVYJNJsDDmbl+H3adR0rYmnQiKOwrweApWsslb+sMUBTUpWlRtlTuwuBXLlDmsYh+IvKzl7JjcUbIxiJV5XI43I6ddDRX8X9nE4MkcUlc/OUii0n7AkVgiMU1iXxCGYrB7T4dhmE1r9HI8q9DQf//////////////////////////////////////////////////////////////////9bIAABK6a1UmuiwCZqqzSIPUxXIthYySMOhYhdp12JFxFhi8TfIQtZYy/DM1ToZuGrgvdxJXOVRoEjTrZYodJIioo9DqOov/7tGC9gAmlXtJWa0AEAAAJcMAAABxJgVOdjAAwAAAlw4AABAQRMcllDTIFfFYaNS6KpDrXZg4jBWoz1+PyvK9qia+6kBu00BdiCjoJFyyWwK/jvt1tQuHWJtMaBKo9GH9YfLHQhTT5HGb9Pnbi0YnJuNxB4JAvBjr60EuimTw3m6S6jjkdi3OyVtobjlFQ35Xdqc52G3/j0YgFr8XpKGflEOTl61YnLf/T9t63Ld549pb+diMWr+rt+bqw3P4Vut4kySUpLJLvADCm0ZxAzxNeUVCCrEjbS2KLKUCSrh4dK2ZBtiy9ZQIBsPWLDiv4EcV02ro1PFaetp0CQlrEbTtchrkBOKriDnJUrTjdl7ygG+PolBWxXFClEaJwbiplRsSsKEk54F9FEPtXFehpzNjAwQTgLuOQup6lI5q9InYnh6CVBPIcplae6IQiOn1S4NqLVDChR+ulW5pllPRsui371LIZVQq5hYdPZpH7FRWpdzi6Mgc7kjj/J7FP5D1LIpmdD25WMUNEQGNXrTJDbGGJmFCXemKaBvDDjDkwMLlLPL////////////////////////////////////////////////////////////////////////////////////////////////////////////////////WNkluSWSXdvKU/CZKwv5oog+i2D1CDDLDqEZEaFdAuA4CIGKN4eJigbBCBfJtDCdBJl2TMv8VROKHk3Qsut3o/1wjC3K4JEf/7tGDAAAm/YFTrGHtoAAAJcAAAARx9eVWnve2oAAAlwAAABPxuq1hOkLx6iAlBdUwoC3ooV84jp2nA0CXn7CQwnovwBQHSZY3BYBfjhUouA/QjZFqZEoQdwGA4U8XCguZfDpRp0ocoGE/0uYZrxEg9XShdnOYCjaUNT6UfuJbDdJuZrmWw9xSxNDwankPLtJm0aRqoW5lgVzCcarRq7tEXTQq1G3vkgrEZHjKzeZoG7NUe7BGZW+rvNrwtT5jPpNo0iQEmkm3c0p83caHG2AzTSi0z+JfSIHSOh4LcFliZRNQcpYT3GKmAgokxG0OOxBjdENVw3jdH0ZRRpwvIxSeoaAjG2QczjqX25Nk9DqMEH2XARoXElT1ghNRomSO8oBfC3EPHCAFAzhjHiVZOB1GgMZBAuhYx6BSjkAEyfMIcR+F6P8vJ7A5g6iCsSQSx0sSJQkzxaQ6jShHNDZS/ObFv0La/c4zCkFtVk5YCQjsPs9jyJ6u04zNrgwsDmbBwn8cTVo/nOCyKWEuWhvooj1PGEi1DRqcm1ZfMqdZYNC/HFGxR9tufabnLI3//////////////////////////////////////////////////////////////////////////////////////////6lWVFGk02245JJJJYtyEs1UqAwPUMMUg8wUHDKwYMdjkw+U2TJ7HM7SaDHRm0imtkikO2h6SZnx4cHMEETgZa7LDgQMXAhJari7zRWxvq3ZkbP/7tGDAAAlyXtJtYeAKAAAJcKAAAR2xbUdZzQAYAAAlwwAAAAFPqKKGQQ4Si6xxxGmEjis1kLsKnbpBE4xtcsgfFbbbtkeeNpSNtI4drQ49cRZ84rkRCJsUl0Sg6Yr4ODVpVSzkqa5CJFPQupKn+dx75RUa5Kb0vjNSUyhfk3MvfYkFA+rxQuRrRZPZq23ZonbikjaLLr9PLs5/4fp5E8++UNXGZm5TO5bqVta/KxybsSuxVw7+7muWdVIvlabkqI2SACmpLbI43EVGBVMfSrUg+5f0OCsG/5YC1BAQcxJhAUCzgEaKOUwkWDVLygLqXjpxZHpFJZK+GRrcVuMgyUsmXogjFg5v6gKUIfxE5PpYaH4JUNGwsNXAzFikRa8/0Vjk+zN1gQFbbRkvlKla0T2voJWoPKlyvxU8XXCv5sKlDYYWvVRWQv9AsNO3hEnksRq7KuQ5GYZiq8YpKX4j0rZzAr+vbFnxu0FeJPu6DS3RrZP66LyvDlumqX63LNWZvVd5Y2d61q1h9rL8cM8sdVjvM1xCNTPiQ/o////////////////////////////////////////////////8Af/////////////trvW2poP2/b/5v93vkakiSU25LI2nAwwAuSqg2QLoBQwqhuAol0QdUnIXOPpAaBCpNJR0s4EGNJHwMoE+2qJ0x0WC1lp6CgcF940shmxfQyAVGhPU84AwRH5kJbtPMII11mawSdJbo1JT3T2KSo2oD3QgVt1mKf/7tGDAAAfuUtPvYwAOGUAY4eAAABxNZUOsYw24iYAjRAAAAMo8SxRV+YcQzTRVvVMnA6LKl8TaV8UcZnT+uC+TeNAV27cRfamfCYfSCYq5byVYefy7TuEw54WfQFPvDRWY9JYPg2DZqAH3fuklMO5w/NTENx6VVJFlG5HnlSct/d3l93uXLuG9dy/mWWv5n+Gfcv/Du+1GUYyoBuEAD/////////////9BXaBHoU2koU00obsO+Oa1UUaW7b8sZMmkSnbv/tJIhzVnQDKOqamVidRf0gG/ocEGiBXoGTLa6DEkREeyIr3IBYYWsGCQWAwlLaZ0yE8oYEXyRQXck6vBlzOxkKbq1Awy6W5KmAg2fONLIbwEWFskLGRkihDUAgleHINsrCqRKqQknA7RXQakJsMVnO0V0tqbOQ22My8VXBms6yXE4HURxYmyI57iNmENdSM1KMHzJB+2KB4cVxpWdzvTC+8zuTD6WDJbEPevF8HVtwr4xGjU1FzvOM1xj/W9f7997v59OiBv////////////////////////////////////////////////////////////////////////////////gqrX///v7trttv9Nv1k6Z7j6Pubc8uK6WWsYtGzQju/0txxkuWNtIAF4QMeREmkEIgVMVnJZmncEgsHAwLCC6hkmEKGQkhAVZLhuKqAqIOUChPsgKYKo4jU0UFBh80HaA4yyYC27c1KY1dkEEQuAoZfmNXp1rirhaf/7tGDAAAg5XUzrGHtqIQAZAgAAABf5eyOs4e2g0ABj2AAAAJjCMd+VTTAX2VQsg9Uc/VCW4posBHzJ5hTs7qO9esKlftUXs0WPCww61j4xbXq71eBfVKUf/dqWte/rf5vaFnMCSsGK916wt6pp9emaxNXpvOPTOcZ+9b3jy1zf63nGcZvIAf/2d3/QAEVFap//9q3Ud1p3/mu9vMoYdq0sOtsTX0xEZDweeaYAmhkKHkJCwu+8ss2HN/R///3/Ii7JbLZJJG23PmIKkINFNEMMIYCUfbKRLJ5CgBr5moEJfCEyTQhAmaEBgpc6sTeQRA1FA8sksOP9HpuOy6HYceWLQPDXa1Fajc3BVuds1GyUkTAxMyaXjhaJ7p6JCPTkvDSlI6AjZhZ1ZG9HWbNKW03/VDd60Ddqy5dU269LstWU9Vnqaxq1rM3mLX7qUh7J6/1t7ef/vfu5OT2OTWtI8rlqLuzp6uWpkzNdluRNR/b//9f////////////////////////////////////////////////////////////////////////////////////////////+CkEv/6yEP8MhAxUp5NMJKOCzEVqboH7+j3WlHmqlTxVyFGTUg6reOUm3Sp5EWe4Nq2ilaWm1YVUUav7GZv+7vUMJccbTXVKqDoIpYkRGAus4RZ5AtNlQRDA9DkJojQV5vrDnBP7KtLfN3rKry/qOBCgEpkboj3b9vXIfibDkVQ8bKkMLA2EYFP/7tGDAAAe/X8hrOGNgQWAI6AAAABMdFRuMPQuBJwAjoAAAAJIcuPPPFzVLGEKUUI2tnxS6SsLw7jup4ddGnunba53tIl5pVcxU6q5i2KaFzR9jxcFhRA1AbJAFZdh99Tgm8UE40sI0TQSVKVtLGShjbbRfZZSBUq3/8Sh8G3TYrWkgHBlJPtU0c5zRwYU9rnxqWrY9Sq79JZkXZrbc8cGEqodWaPDQqVcs+rSwTnyqbXPYAPY11LLRd+P/69VKUlGm22lVSqk011LnBiYQ7fIZUIZpEVhmTyZo5nEeQk5T9a6xaIU8cnrI4Q4j5scdyulK1qF7SConq7iOES2IKMImDogxg+LgCESODGAwUHhEEMIkDkejIyoKlHIyOpUJUyGWiM6Gu1ogxU0kZHfs5Cs7HXMizbo9movvqqOW7TVEpgidDrF1KJIt0tNmYv5nSu1bFcW//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////FmomVVVsWIGBg2NDcoSGDoShNND+9q7Vy1Ub0qULPQhSeMi61xZaksQJ2jcTUuO2Et4acI0BM/ehwqXI2apdh5k3R223JmGE991Nfz/SyqqBaQFEd5E176bG0AlL+Bo0AwZg8hraORWox6fcsZ7m0CNNtT94/V0KWEzb15pxAsgypJVsf/7tGDAAAfeWkbjDytgS2AI6QAAABFc7RksPMuJJwBjpBAAAObx4zkxF2ZrPClTpzOhC5r2m6kOVGcpt8UnF48zr213q56EsFELWhkrA96NXNQOZf3mG//XfQa6Qvaj76TL/Xrjrmc36Kv/bv/tnfpb+mOkf1YhCSlVZWKnSnCrs6LB0Ovc5xlVyx2XlRcJVIL3EkhastSxji5EGD5UUB8gEGPUV9mxW/eDyYg36twUbFD1jd3sT2S7FX7OpMYgXPqquaqlUAZAFWtLy41AErAzzPE/IQYFgCEqWZacAdgC8hxK2k5xb0eRgQw6CWKNQUtNXMF/BaMkHLuTst5lp9YhKBSIxWL6HsasbM0YFY6PwbgOcscyvc47nhsVbGf6fV7Gzv4dVGdb830ezyOFZICkLgdBoKBOKN+/t4t9TR4d93jw38OI8gRMYpfFL5x6Z9MYprFdb3ild/Ga/GM5/1jW9ZrfXxnOt414vAaVvNh1nxaxjXPmqduKjiW2u8v/////////////////////////////////////////////////////gHVVWf+5MGKZpVfeSKtrQSaiqi8666+pQydSbQe8pmGLZcfDl7zYtQ1BhL7hhW7dih5uxNnR9D936tultslRt3dUrqwiXKnB0VOjCZH4lI7iqwFEc2GcwKUZWFY0Va0AuKqWcgalZS0mXT7qQ9jS2aGGndZSkKzlgrOYdh2gwprMqxazJrS6UsVsfKIyhXgJ4AfCaumM0VSyyP/7tGDAAAcxWcbLD3tgO6AY9gAAABcdIxuMYe2BBABjoBAAAN8H3gyuN3sRqePHymNIuSizv+E+YocJmfV1m8z1x3ivtGy9Q1Wsto18ZvqJPbH3BrqNCzFe1rTL2LYDLSBRxGBlMS8sAUvPoYGyoDSmqylBHZWrs31qe6lq8ASgCr/7OPZ4aYNeoPsjpd0jcB40a+cknJSkL0rJqGqp1NZ2NcxR4/1dDRWtEtdRoWnCosSUzcKJ6L8uzIJ3xv/vQKqqVShKGc9JoaLcRTQppJFYBAcoRnC7FyXyrY2IrnroCqqXfVjP8/K1fVRkO0NDOEqnmf99obfwiTN5Iy6RVHgUHzLjJygw9thsnlTzQCZYoWfuuqShDRVtDqSDVsk9cEBooEBAhqFvxYl///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////qwor/6nvEdw3OrUbFE6lDlJN+4LE/ZctF0BVlySZ5BFxQgSUw+9Cj8VFQqeFtKSihfTnTAq6y9Dw5LHgs3u1VuyrGxUw6tL+1nW4kSgQVjtulUYrg4Gf/7tGDAAAlNOMZB6BrQSgAI6AAAAAu4HxiMGGKBKQBjpAAAAMAqwmAQIU4VF2tC4AMvQOD62KW449uQEtYTwhQftS8cQap5xbxiVivFi5YQ2rrPizgzHulDlF8sAi1umu1g/YdMoLuWcXrPoEp95A9FpG5+40MsqqsqqgiRaUCnWLHmix3fS+1yInEhVgYJOtQ4luS84YYpjBXHLQ4dlWpeg4YZu1vfQp4481Sj5FpsuhyECD9V9AmUpy3sp07vUPm5lVZVRDRKRQs57YKAs4xnuSqX9353vq/lrNavXRlIhjXcahYgakwWcLtYwe7wiypDBVa1mat9aL2MvRQZodU0c9xFHTtfrt0aWLrrqZZjkK////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAsZSL8y6FXUc1ShfzvnhdkaidLtd5LbdtPoSjpK3rfrVOv2V3Xrru/VW66/Rbp2uh2R1Zyo9VYp3IMGgo9zdbdQUv/7tGDAAAngJMdJZRJQTcuYxQQibAlACx0npAABH4AjEAAAAG84OmL91RfdKj/VolWVVWsfsQrWXAZfDpJK+YdGMKFzBMMpacMpw6SYKG3tW8VU2pLUPcoo4cvRhYhDj0EaHDALU7Vcxh59wOT6hlDpD0+raQ81oAAJAJFC4nE5Q0kqDJd2cboDtrospLYD30uFnvTtveT6pVq5R3l0DWpZVMh9bmtFDrLvciyoUQ1ukahq6nTaNLVgdLsvZcuWQEiQCCAIBMRB4ICOQGEDpUaWk1QKbn20wu72WceglkTU+56rFvPIusFo9KU2ubTNRlr3MZHruYzzA5DFuHvXCDpdJx3dexO9rklsshq///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/8sqtfRMvQPSg5aXBsSOUsYoNBmsOKKFwHVXUo0jSlRfFtDw2fulCT0S/LJGIJIfiOypRYMNMFgbLA2KA4P/7tGDAAAoQAsYhKQgASgAY5gAAAAjMCx0BjAABJgBjFAAAAEYps3OZ/8yq78JSCKFWG/9hmC6XIDRytoUGHnm0dC5LtW0ieKUtPteKdhl+QIrWcMTr9iQgVjzNbAk54RMmVzGj0BoIJiR7/6610FOq7ep/r7kEggCacKFw1yK2sFWCI+1u4wu17o1KBsZvU9bUKKn0rIMVFhtJbOCbRR6Bdll5mtBZeQeOZXYY23pk3PAb1sFdeWD7KtR8PGhbKKFlZf+igTCkcIalLMn338q+0lWpw+rY5RlWV6MllqyQvrK2kaVLyik8qgmeCu68MvSIE36C2RX216Laej3CX/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////YAgf/7tGDAAAvsAcdAYgAAOUAY6AQAAAdwCR0BDAAApgAjlAAAAH/4gPdYO9Y8OrW20dzw9viF4b9Tbk9cC2pvViO6xJ1/W4RpF6OpbG1tvcmjtq330fvVsW5zFaalISf+MGUIoRBB9WXNkOKKoXSxLeT5NFfxame21sU1mGUR9UXxiEEV0jlKTEDlOBK5hF7XO+x3pZ//+n7//ovuvWl7E6NKxRuKGJJfYjk3U25xzf6N9qPnRw1Pde1Fc+lYaSoloJVVE38GmPXWiR0t3cat//NG0FWtWR1U7xbfHU5d+973x9ijOmlPQ7Psu+r////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tGDAAA4EAEdAAAAAJuAI0QAAAAPkAR0AAAAAVYBjoBAAAP/////////////////////////////////////////////////////////////////////////////////////yh/2fqv/ah3zNqx5wt/rudVX//1UfR63ah2NrvsZ2N0fX0V1dTGUKkgC5qG4R/2u7FP1MuEH///UktatW2q2pP//+XV9YxVkJWEabCzOXTan/ezZ/////+99bEAAAQAB6Tv/////ofu9FH9Pfp//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tGDAAA+yAMagAAAAEsAY5QQAAAJcARqAAAAAAAAlwAAABP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////sEER4Q/1///0adH////91NqHqBAAAAF///////f1///////6KVgAACAB+j//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tGDAAA/8AMcgAAAIHGAI5AAAAQAAAS4AAAAgAAAlwAAABP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAACB/0f/////////////////////////////v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tEDAAA/8AEuAAAAIHIAJcAAAAQAAAS4AAAAgAAAlwAAABP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tEDAAA/8AEuAAAAIHIAJcAAAAQAAAS4AAAAgAAAlwAAABP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tEDAAA/8AEuAAAAIHIAJcAAAAQAAAS4AAAAgAAAlwAAABP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tEDAAA/8AEuAAAAIHIAJcAAAAQAAAS4AAAAgAAAlwAAABP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRBRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';\n"
  },
  {
    "path": "src/lib/helpers/audio/camera.js",
    "content": "export default 'data:audio/ogg;base64,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AABQ4AAAEGCDpsTiAIWGrAQAQgIAHIpiWZrmeZ4niqapmiRJ0zxPFEXRNE1TVUmSpnmeKIqiaZqmqrIsTfM8URRF01RVVYWmeZ4oiqJpqqrqwvM8TxRF0TRV1XXheZ4niqJomqrquhBFUTRN01RNVXVdIIqmaZqqqqquC0RPFE1TVV3XdYHniaJpqqqrui4QTdNUVVV1XVkGmKZpqqrryjJAVVXVdV1XlgGqqqqu67qyDFBV13VdWZZlAK7rurIsywIAAA4cAAACjKCTjCqLsNGECw9AoSErAoAoAADAGKYUU8owJiGkEBrGJIQUQiYlpdJSqiCkUlIpFYRUSiolo5RSailVEFIpqZQKQiollVIAANiBAwDYgYVQaMhKACAPAIAwRinGGHNOIqQUY845JxFSijHnnJNKMeacc85JKRlzzDnnpJTOOeecc1JK5pxzzjkppXPOOeeclFJK55xzTkopJYTOQSellNI555wTAABU4AAAEGCjyOYEI0GFhqwEAFIBAAyOY1ma5nmiaJqWJGma53meKJqmJkma5nmeJ4qqyfM8TxRF0TRVled5niiKommqKtcVRdM0TVVVXbIsiqZpmqrqujBN01RV13VdmKZpqqrrui5sW1VV1XVlGbatqqrqurIMXNd1ZdmWgSy7ruzasgAA8AQHAKACG1ZHOCkaCyw0ZCUAkAEAQBiDkEIIIWUQQgohhJRSCAkAABhwAAAIMKEMFBqyEgBIBQAAjLHWWmuttdZAZ6211lprrYDMWmuttdZaa6211lprrbXWUmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaay2llFJKKaWUUkoppZRSSimllFJKBQD6VTgA+D/YsDrCSdFYYKEhKwGAcAAAwBilGHMMQimlVAgx5px0VFqLsUKIMeckpNRabMVzzkEoIZXWYiyecw5CKSnFVmNRKYRSUkottliLSqGjklJKrdVYjDGppNZai63GYoxJKbTUWosxFiNsTam12GqrsRhjayottBhjjMUIX2RsLabaag3GCCNbLC3VWmswxhjdW4ultpqLMT742lIsMdZcAAB3gwMARIKNM6wknRWOBhcashIACAkAIBBSijHGGHPOOeekUow55pxzDkIIoVSKMcaccw5CCCGUjDHmnHMQQgghhFJKxpxz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';\n"
  },
  {
    "path": "src/lib/helpers/audio/changebanner.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/click.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/click2.js",
    "content": "export default 'data:audio/mpeg;base64,SUQzAwAAAAAxJVBSSVYAABCbAABYTVAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYjBmOGJlOSwgMjAyMS8xMi8wOC0xOToxMToyMiAgICAgICAgIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcERNPSJodHRwOi8vbnMuYWRvYmUuY29tL3htcC8xLjAvRHluYW1pY01lZGlhLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA3LTE4VDE4OjExOjM3KzA4OjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMy0wNy0xOFQxODoxMTozNyswODowMCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MWU0ZmRhYi0wY2MwLTVlNGQtYmRhYS0zMTM0NzlkMjhmN2EiCiAgIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTFlNGZkYWItMGNjMC01ZTRkLWJkYWEtMzEzNDc5ZDI4ZjdhIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6Nzg1MTkwODMtMGUyYy1iMDQ3LTgxODMtNWMwNDk3M2EyOWNkIgogICBkYzpmb3JtYXQ9ImF1ZGlvL21wZWciPgogICA8eG1wRE06VHJhY2tzPgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaQogICAgICB4bXBETTp0cmFja05hbWU9IkN1ZVBvaW50IE1hcmtlcnMiCiAgICAgIHhtcERNOnRyYWNrVHlwZT0iQ3VlIgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJDRCBUcmFjayBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IlRyYWNrIgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJTdWJjbGlwIE1hcmtlcnMiCiAgICAgIHhtcERNOnRyYWNrVHlwZT0iSW5PdXQiCiAgICAgIHhtcERNOmZyYW1lUmF0ZT0iZjQ4MDAwIi8+CiAgICA8L3JkZjpCYWc+CiAgIDwveG1wRE06VHJhY2tzPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ODUxOTA4My0wZTJjLWIwNDctODE4My01YzA0OTczYTI5Y2QiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDctMThUMTg6MTE6MzcrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIzLjMgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OTFlNGZkYWItMGNjMC01ZTRkLWJkYWEtMzEzNDc5ZDI4ZjdhIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA3LTE4VDE4OjExOjM3KzA4OjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBdWRpdGlvbiAyMy4zIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDx4bXBNTTpEZXJpdmVkRnJvbQogICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ODUxOTA4My0wZTJjLWIwNDctODE4My01YzA0OTczYTI5Y2QiCiAgICBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc4NTE5MDgzLTBlMmMtYjA0Ny04MTgzLTVjMDQ5NzNhMjljZCIKICAgIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3ODUxOTA4My0wZTJjLWIwNDctODE4My01YzA0OTczYTI5Y2QiLz4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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XWakmOEz/70kV//7d1KRbvI8sojmFUJhMRO//t/+v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////aJu22sttkZYqQOhlQGbGTiUVEQcHKCEogeIBBxg5fyElMgFha+nKNBBzUZws9DQvANvLfjT2almRqLPURwYlEsLgRUT//7tGDAAAncXErrGKNoAAAJcAAAARwNgSus4o2gAAAlwAAABLBwRCgBCU2WFLSoqqpCYkx1SF5QCZuTOA5cOhIoMuCYkBpOGyCokGIMEAMSU+RMEhINyBzB8niYKpgUmZFFQ3RvtKM4F6iQJxiqUjI2NaMoFRIsGpZLZPkqKHC6kDP0QNwAD7DJD6IkViyGCj5xFYnUrpm5eJ16lsOcbf782Ov//9Jr2eyiiNtkjWyaWbGADB8HwwJyAED7kf/3VEiXdtLbtZa4wMSS6IFKACoRiCwMYDhp4hDUB5RsKgM4QuMxIhsaGFAmATW5gKUMaVDBoQXOWdJYA1LxIygRCnnDnn9KhS8KpV2sEDupNglyCAwNQFlqi4Jkml2qdH0vzEga8KqQxTwswGo4IXLQzoFh4bOPJiNAqmB1TKdaJVIlU7nBYR6RPkko9Oo0VFZR01NS8RQqIimAAQRRxRBkx4FaoCmidDFIzMA/ZI7JUWYeZmTHYav+tDnjFL/6/X3UnTzAnkiPZzpkmWiCjlD0XTSkfDJQ+BHjC1Qb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////JJTbcbkjbQY6apoClCL8YCQSi35HYGEDIAgMbd7hYIibWMLUj47GjEdHDgoQEMA1pI8oul5wIgIEPECLqEM1eJrT6LBswQ6p8IpK5c5J//7tGDAAAmOYslrGKNyAAAJcAAAAR1Bkx2s4o3AAAAlwAAABBYFSl4FMWRkomWoavk/aJg6sBMftRusyJVYUciZGg3obF4Y5SRm5ufM0zc6YE6XGJki5Fw0MUcQHGTJsi5TJ9NPY8bG59EuGxFCmJuCBkFCY7RyE3mIsPQI1kkCuYsjmZfNlf///9MzMy+TZPlQ1IeOeVhzCIjnj4IUaIyY7B7GRGWH8iArUihAj5iXS6al1JIyCoaCqP/9Oj//qCSXJJJJG20UWULphcpBwueDAxs1OcaIaCWzc41kX1REEDl2KqJENBNwkvkP0aUA4yIR3AxnlGhIuEAkeEFY6zEHGJmERxoKgrgt85INExMWUjMDCQW95fFEYxFTJYTyKSDKDIkCLxAiOIMSIygsBNFYhxeQOomiDzYvGpOk6RUc0io8gHYAHw5pigkbGxsfMp5JSa0UjpSMiJgS8GUSZVRPOo3dektmNEvYum/+3f//rRRRRLpeIsXnLqCSZimxh6/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tGDAAAxKXEdrOJNgAAAJcAAAARJZax2sYi2AAAAlwAAABP///////////9JFOSSSRpIgllkDAZhVAGnUIFQCEYZcIILEQQEVSZqYBcSVoSBoxcciWEbQnsZWKWxXeuRNSgZis6oHBd9wFfNJBqHVcpS5p79s5UTIDCML9NDtuzDRGjnDKCeBBcQUGaHomzw+WJpIco1NEjilJUVddWbFIV4trUmp/3QS1VmQxoNKKjX5W9epJL6///////6z6mlJI039KgLxAgyyJfEvKDgrgWGZ+oEhKRWBzCHFyQ6dhtbKdNE0XF9G6mQ5yUqhqpVCNlMAUAUD4bEmHTBso1NNoaw8cg2eac9Dv//85P/q3tqRLt/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tGDAAA/7OUdjDzrQFgAJcAAAAQDIARqAAAAgAAAlwAAABP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4JAAAAlhKP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7tEDAAA/8AEuAAAAIHIAJcAAAAQAAAS4AAAAgAAAlwAAABP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRBRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';\n"
  },
  {
    "path": "src/lib/helpers/audio/close.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/collectionitem.js",
    "content": "export default 'data:audio/mpeg;base64,SUQzAwAAAAA5PlBSSVYAABS0AABYTVAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuNGQyZjU5NywgMjAyMS8wOS8wMS0yMDo1MToyMiAgICAgICAgIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcERNPSJodHRwOi8vbnMuYWRvYmUuY29tL3htcC8xLjAvRHluYW1pY01lZGlhLyIKICAgIHhtbG5zOmJleHQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20vYndmL2JleHQvMS4wLyIKICAgIHhtbG5zOmlYTUw9Imh0dHA6Ly9ucy5hZG9iZS5jb20vaXhtbC8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcERNOnByb2plY3ROYW1lPSJ1aV9tZW51X2JhZ3BhZ2UiCiAgIGJleHQ6b3JpZ2luYXRpb25EYXRlPSIyMDE5LTAzLTEzIgogICBiZXh0Om9yaWdpbmF0aW9uVGltZT0iMTI6MTQ6MTQiCiAgIGJleHQ6dW1pZD0iMkQ4NzQzM0MzNEMxNERGRkJCNURBNTZFNkU1RjVFQjYiCiAgIGJleHQ6dGltZVJlZmVyZW5jZT0iMTA1Nzc3NiIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMS0xMFQxOTozMjo1NyswODowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjItMTEtMTBUMTk6MzI6NTcrMDg6MDAiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTUzZjM3YTMtODA1Yi05NzQ0LWI4NjQtZDAwZTM0NTY2YjU5IgogICB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA1OGM1NzU1LWQxYjAtNTc0MS1iMWQ4LTdkZjNiNjkyOWYzMSIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjMzMmJjNTJkLTJkZDctZGE0MS05YmFiLTNkZmRjNzFjNGE3ZCIKICAgZGM6Zm9ybWF0PSJhdWRpby9tcGVnIj4KICAgPHhtcERNOlRyYWNrcz4KICAgIDxyZGY6QmFnPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJDdWVQb2ludCBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IkN1ZSIKICAgICAgeG1wRE06ZnJhbWVSYXRlPSJmNDgwMDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHhtcERNOnRyYWNrTmFtZT0iQ0QgVHJhY2sgTWFya2VycyIKICAgICAgeG1wRE06dHJhY2tUeXBlPSJUcmFjayIKICAgICAgeG1wRE06ZnJhbWVSYXRlPSJmNDgwMDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHhtcERNOnRyYWNrTmFtZT0iU3ViY2xpcCBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IkluT3V0IgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgPC9yZGY6QmFnPgogICA8L3htcERNOlRyYWNrcz4KICAgPGlYTUw6dHJhY2tMaXN0PgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaQogICAgICBpWE1MOmNoYW5uZWxJbmRleD0iMSIKICAgICAgaVhNTDppbnRlcmxlYXZlSW5kZXg9IjEiCiAgICAgIGlYTUw6ZnVuY3Rpb249IkwtTUlYIi8+CiAgICAgPHJkZjpsaQogICAgICBpWE1MOmNoYW5uZWxJbmRleD0iMiIKICAgICAgaVhNTDppbnRlcmxlYXZlSW5kZXg9IjIiCiAgICAgIGlYTUw6ZnVuY3Rpb249IlItTUlYIi8+CiAgICA8L3JkZjpCYWc+CiAgIDwvaVhNTDp0cmFja0xpc3Q+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjMzMmJjNTJkLTJkZDctZGE0MS05YmFiLTNkZmRjNzFjNGE3ZCIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0xMS0xMFQxOToyOTo1NSswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjIuMSAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowNThjNTc1NS1kMWIwLTU3NDEtYjFkOC03ZGYzYjY5MjlmMzEiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMTEtMTBUMTk6Mjk6NTUrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIyLjEgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjljYzQxM2YzLTk0ZDQtMDQ0My1hMmU2LWY0N2RlMjVjNjQyNyIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0xMS0xMFQxOTozMjo1NyswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjIuMSAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxNTNmMzdhMy04MDViLTk3NDQtYjg2NC1kMDBlMzQ1NjZiNTkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMTEtMTBUMTk6MzI6NTcrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIyLjEgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHhtcE1NOkRlcml2ZWRGcm9tCiAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMzMmJjNTJkLTJkZDctZGE0MS05YmFiLTNkZmRjNzFjNGE3ZCIKICAgIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzMyYmM1MmQtMmRkNy1kYTQxLTliYWItM2RmZGM3MWM0YTdkIgogICAgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjMzMmJjNTJkLTJkZDctZGE0MS05YmFiLTNkZmRjNzFjNGE3ZCIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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2ljBmGYN0r18ZyPPFPtUb5hz0ZKoOUSU//u0YJKABnhgy8sZy3g2SilSAjJsGcWBLaw/LYjxqGacCEm0eoOZRH8tyKtt3Vr0fq5VJeUIAUAPYXAuxilvOQQdEnKyQxyiwJY+9yKJ4Q03GoVRSYx6gcTCpBTSrKgtRarO14zKYzO0W7VNaaM7z/RqPNygWrV5Vx1nnZ5yrVq2asCZWssssrlNfq41ccatXGltU0atRpDss7VqrjzDX/q92KZ/t+Ydp4rA0eemGqB9ip0HLfOwK1+7OyHU7Lf12p/5WLMl3uxGeVumAJX7dZ07YCG3GgAV//+yKiHiewrlZJ0i8kPtmWyT0mdMxUs1BNAXs2WmOcfqs3+r/Mj//////////6l6nuZnmM/+XEU7I251yAs0U0EMBEY1izBUxPRaemoq0yMNRS6f9YB2p5ZMHad9t4Jg16cH/h6P5xNsg6tkjAoo/0ahclRWXrPRrOVyeDmqKvXg8THE1X+2lqJtlCJ0DO/bntTFTmM1nZ5vHWrnJuklvKlfU5z9cw3Xr7z7h/d6pcsv/Pvdd33XP7/473+9KpT2GGdffc8LH3q9Xk7aiUukceoIMl8FRllgN+ncHriVenjVeny1lnVpcanNVLeVu/cr2YMAo8Ssyz6L8AgECRyMBL+/9//9SCRqOQBZCrF4epxM2TH503d6qk0zdNNIvATIvsVTR2a1rf/1lk//////////9qnqesss7/8oAm2403ZGk5ESDZCMqQcU6lQ05VczRoTEcyYyxl3XpVGr+NbsRf2XZ47xyrV4//u0YJiABhZgyuM4y3pBKhl6BbJsF+mBJafjDYi5ECRYALEgdFAmhYCSgBTFWKxFnLWX+p4Zf1rKpWI0VqtGn2d6ncFUsJ7Knah61l+su/lTU1Nayyyx/eP/rLv/+OP/vHL8ef//rn///z9Y44/l+su/vHGlsRqey1lWprWVbuOX6y3Swy1ldrWmHMutwCW5VAYTF6nZiDEnKcprzvU1rmsqa1ll3VWlpaW9TOkmM+b/Q9figoKAn7UE+L/zOWs9a3l0Gp2AKFLvW1a7MzOWta1azlisFRdEV5pVH/Kv/////drDQP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u0QK2AD7gAS4AAAAgAAAlwAAABAAABLgAAACAAACXAAAAE////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';\n"
  },
  {
    "path": "src/lib/helpers/audio/exchange.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/history.js",
    "content": "export default 'data:audio/ogg;base64,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AABQ4AAAEGCDpsTiAIWGrAQAQgIAHIpiWZrmeZ4niqapmiRJ0zxPFEXRNE1TVUmSpnmeKIqiaZqmqrIsTfM8URRF01RVVYWmeZ4oiqJpqqrqwvM8TxRF0TRV1XXheZ4niqJomqrquhBFUTRN01RNVXVdIIqmaZqqqqquC0RPFE1TVV3XdYHniaJpqqqrui4QTdNUVVV1XVkGmKZpqqrryjJAVVXVdV1XlgGqqqqu67qyDFBV13VdWZZlAK7rurIsywIAAA4cAAACjKCTjCqLsNGECw9AoSErAoAoAADAGKYUU8owJiGkEBrGJIQUQiYlpdJSqiCkUlIpFYRUSiolo5RSailVEFIpqZQKQiollVIAANiBAwDYgYVQaMhKACAPAIAwRinGGHNOIqQUY845JxFSijHnnJNKMeacc85JKRlzzDnnpJTOOeecc1JK5pxzzjkppXPOOeeclFJK55xzTkopJYTOQSellNI555wTAABU4AAAEGCjyOYEI0GFhqwEAFIBAAyOY1ma5nmiaJqWJGma53meKJqmJkma5nmeJ4qqyfM8TxRF0TRVled5niiKommqKtcVRdM0TVVVXbIsiqZpmqrqujBN01RV13VdmKZpqqrrui5sW1VV1XVlGbatqqrqurIMXNd1ZdmWgSy7ruzasgAA8AQHAKACG1ZHOCkaCyw0ZCUAkAEAQBiDkEIIIWUQQgohhJRSCAkAABhwAAAIMKEMFBqyEgBIBQAAjLHWWmuttdZAZ6211lprrYDMWmuttdZaa6211lprrbXWUmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaay2llFJKKaWUUkoppZRSSimllFJKBQD6VTgA+D/YsDrCSdFYYKEhKwGAcAAAwBilGHMMQimlVAgx5px0VFqLsUKIMeckpNRabMVzzkEoIZXWYiyecw5CKSnFVmNRKYRSUkottliLSqGjklJKrdVYjDGppNZai63GYoxJKbTUWosxFiNsTam12GqrsRhjayottBhjjMUIX2RsLabaag3GCCNbLC3VWmswxhjdW4ultpqLMT742lIsMdZcAAB3gwMARIKNM6wknRWOBhcashIACAkAIBBSijHGGHPOOeekUow55pxzDkIIoVSKMcaccw5CCCGUjDHmnHMQQgghhFJKxpxz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';\n"
  },
  {
    "path": "src/lib/helpers/audio/inventory.js",
    "content": "export default 'data:audio/ogg;base64,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AABQ4AAAEGCDpsTiAIWGrAQAQgIAHIpiWZrmeZ4niqapmiRJ0zxPFEXRNE1TVUmSpnmeKIqiaZqmqrIsTfM8URRF01RVVYWmeZ4oiqJpqqrqwvM8TxRF0TRV1XXheZ4niqJomqrquhBFUTRN01RNVXVdIIqmaZqqqqquC0RPFE1TVV3XdYHniaJpqqqrui4QTdNUVVV1XVkGmKZpqqrryjJAVVXVdV1XlgGqqqqu67qyDFBV13VdWZZlAK7rurIsywIAAA4cAAACjKCTjCqLsNGECw9AoSErAoAoAADAGKYUU8owJiGkEBrGJIQUQiYlpdJSqiCkUlIpFYRUSiolo5RSailVEFIpqZQKQiollVIAANiBAwDYgYVQaMhKACAPAIAwRinGGHNOIqQUY845JxFSijHnnJNKMeacc85JKRlzzDnnpJTOOeecc1JK5pxzzjkppXPOOeeclFJK55xzTkopJYTOQSellNI555wTAABU4AAAEGCjyOYEI0GFhqwEAFIBAAyOY1ma5nmiaJqWJGma53meKJqmJkma5nmeJ4qqyfM8TxRF0TRVled5niiKommqKtcVRdM0TVVVXbIsiqZpmqrqujBN01RV13VdmKZpqqrrui5sW1VV1XVlGbatqqrqurIMXNd1ZdmWgSy7ruzasgAA8AQHAKACG1ZHOCkaCyw0ZCUAkAEAQBiDkEIIIWUQQgohhJRSCAkAABhwAAAIMKEMFBqyEgBIBQAAjLHWWmuttdZAZ6211lprrYDMWmuttdZaa6211lprrbXWUmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaay2llFJKKaWUUkoppZRSSimllFJKBQD6VTgA+D/YsDrCSdFYYKEhKwGAcAAAwBilGHMMQimlVAgx5px0VFqLsUKIMeckpNRabMVzzkEoIZXWYiyecw5CKSnFVmNRKYRSUkottliLSqGjklJKrdVYjDGppNZai63GYoxJKbTUWosxFiNsTam12GqrsRhjayottBhjjMUIX2RsLabaag3GCCNbLC3VWmswxhjdW4ultpqLMT742lIsMdZcAAB3gwMARIKNM6wknRWOBhcashIACAkAIBBSijHGGHPOOeekUow55pxzDkIIoVSKMcaccw5CCCGUjDHmnHMQQgghhFJKxpxz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';\n"
  },
  {
    "path": "src/lib/helpers/audio/modal.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/obtain.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/prevbanner.js",
    "content": "export default 'data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjY1LjEwMQAAAAAAAAAAAAAA//tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAA9AAA/RAAIDAwQFBQYGBwhISUlKS0tMTE1OTk9QkJGRkpOTlJSVlpaXl5jZ2drb29zc3d7e4CAhIiIjIyQlJSYmJyhoaWpqa2tsbW1ubm9wsLGxsrOztLW1tra3uPj5+fr7+/z8/f7+/8AAAAATGF2YzU4LjExAAAAAAAAAAAAAAAAJAXAAAAAAAAAP0S8fql/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//tgZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//tiZHCP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7YGSPD/AAAGkAAAAIAAANIAAAAQAAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV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NK8v8tV4kSvHeLB1ebqsPh2fKvVzpWHC6Pp01u1Zz6ON33XVjU1uVKCzzN1HkNlKkkmIoCV6NbYq7ZZlVBH5TKBV4rCAYNFmXFqTAuDouhwEMhRoAWiEmGcClEGAckQCmK5UpkFKMWsitOVUCTFibkKJ6mlILku1wttBbkKXaFEhMU5gSJo16RXCcJqBosTCpGeNAKGTgIh4XBEESf/7YmToAPOPOsHLLxVQAAANIAAAAQ3wwP4MafIAAAA0gAAABGmhZZum+llMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUCARMgAACCFjMrWRyaw1aOg7KIUiIHQdEBOYHI/rWGRkf/kygo6GRrLfzVrIZGTLAdEoiVW0xBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+2Bk6A/zuzE+Axt8gAAADSAAAAEPrMD2DT00yAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+2BkqY/xqCk2OGkcEgAADSAAAAEAAAGkAAAAIAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=';\n"
  },
  {
    "path": "src/lib/helpers/audio/roll.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/shopnav.js",
    "content": "export default 'data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAAXAAAWywAEBAQECQkJCQ4ODg4ONjY2Nk5OTk5gYGBgYHFxcXGEhISElpaWlpaioqKirKysrLa2tra2vb29vcbGxsbNzc3NzdTU1NTc3Nzc4uLi4uLp6enp8PDw8Pb29vb2+/v7+/////8AAABQTEFNRTMuMTAwBLkAAAAAAAAAABUgJANAQQAB4AAAFssIYAF+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sQxAADwAABpAAAACAAADSAAAAEBJBIApAzA0AwEQcBgCAgE/zAbBSMJIFI0dIrDe+OU/zANAXDglDHODSMD0Qb/MCUEEwNQCTQaGMMlkAr/MYQ1MHQ7MyAiNEWX//MSwfGlKMbgQP/+xDEKYPAAAGkAAAAIAAANIAAAARrQ1N1Q1MKl6//8xlEUwlAsEg2YZgmaLF0YymQa9LMZyCp///mCwYmM4emAgIGRhEmipGg6xjV4/DKcnzDwpzIxNv///zFASDGYPCQJzCsBzA8C//7EMRTA8AAAaQAAAAgAAA/woAABDAsCzD89zRIBzH09wEqZiwDYYX3////qxmBIGjwHp0GIQXGAQDmDYBmOA0GfYdmPw3GT5OnIpLmvQ+GYo3//////oDI7F0AhdxWAqAIYLAY3ojC//vQxHyAOTYjP/nuhoQUtCdvtZABYw2FMyvGUwqC8w5Ewy4FIx1EkOLsywE7///////BwuGDYXgYPzC0PQwZzBoCjC4KgUDpguAaawOAAyKLMwLDkx3FwxoEQwmHU59dcxnFcxODEyWKY1tFkeF3/////////99x4EACAa/wUB7/OpLJRLHuL2J8BgCPWUBqYbl+NF8IgiAIMmMoVtbMPBIMThAJgZMBgwCwCGBANhAYmFANf//////////////////F70bvyumiks52N1pZ//////////LFL3Ip4FjT70sN34izeJwalgAAAkbjLDDKlgWAB0QyAgxIsGjlSPOhDH6JnamCdq6lGGGJry6KUktf5feK52viwDCXWlCwyTSezQVBzAIMEsEvAA08QjIcPcgVPMAYYHROSABwzhRJ6n+Y4puoInu1RnKIxdBEx815PSvJlLJl+rXZfDjd38gWPR+H56P1InlIZTG4Mts5MAFKCXxi3HYtNSiJyq3ORWMvCm7A16KQbL5mJQQi9L4RW5K6WlpezdLV/Hf1rlSWTcDSGWzLgnNWo45Ubg+mezlaHcHsjcjpM6eTYTMshl78dbj8xnV1Zn7dzDDGdpbv5c7XprWP4ayy1rD8seY7yusBTIUwvi7zh/7tz8mFn8Z4hiABJAeZmYFA71DwVMGAQwmPQdhzE8AKlU6lAcBBwVBEEKDSgRaYYdQbAgbWObFiNdjiPi0hmCjPyIKLi84dGA6NMrS1AFcJLfP3YFC9fkTDco+ncxF/UY1hz7uM6/tGmKOna8t0O7rqOUeZcbP7etlfa53KquY6xBAzv0yl2oZ6mVv/99/3L3Yb5qkU2A9GZukgvCednzpkXSwmiXq2h8YSCaJZWPFIlowPjuJw+npRTA0dIBgtL580odeJlm2lkUL6RfAxvUrOS9CtMOZCJIGRpXLRM6cEGlBpbEGDn8mAWjFCbxxQMLBSmS/nddFQGG12rtcVWxaViwXs1rMTNaCrldG5UILwYdZVbF+P/mLiz6NZTQXuoUaC9pa1a4fJ5Dh3mSnRZpNNqPhpNXkkVa9VVe5hmdeL9f+VsGq//xf7Xg1dVQWFrWtYKFjpNaihaRVBYf/7oMSsABnNo13uaYdifLGrPZeiMOKjxUVW1UoGxpQszANEXbiVWtTYisWn/VMogBAEeFziY4gGrQYVLHRaX+LFZyWtY2prJaR1nkd7KHJqBtyaWU96vdsRWdvVq3IzSvzYFTDRmkt0uGSv6ed/Z5nUd9Fh0mLsV0Ruha+r4+d4nw+E5lpT5/rnH1rfpuNi0CNnfhb+n2sU3LWrbuvv9ZxZuNKfXz/6Z/xmuA1RIoaVUekfuG8VLLGYlconJQaUq/RE029ZpYLyJ+7DTuHAKoycauUPBv7yCzxNxDGhIGtI/EA0rxosTd0qEECKgOUy1ez1xlVzQIg98UmaB1pfqM0tNWq65Zj1/W8d8q4ulWpZy3fr6ylNy1uUwC3Z4lD1MFY1YV4C01RvLTVo0HEaXxJa728Mau5aRvrG62r7SzQrxdxYVq2xvHr/7VxDjfON1pj2r8Z1a9c1tv6/G6bmIsBIXEk9jX5Y7UuoJodko6aSp2q+12x89FV7IbMxHTZjr1bfWJqMOQFAwRCl0jZliId0QyICdQ8WiUYFAsIk4eZFko0GEa6oE1J7oqzNuzAoFmhRAsHiqy7oomirqgxJydeYkPgKhIPlXkNVPwZqm42MpwlTieBZo6SKculwtSTWkYmpdW6jVM8meTNVK0mdjFjirLWvMXXZWqp9lb/RsCtDlKjg4i8XB6F1FP/7gMTvgBWVh0OsPNmq1TGo/YeznYcyA9FH0SwepeJA1J5iTC8XUl2WpKzWZjJ0rW2crDgHiZPUpbTLw7KqMgSUj6IXiTQucKEDElv0X17RlBEhKsUs0x2M0L2SSpOvXE8rM0bxfPcis0l5ZZCKg+DBambMW4dbbX3uysgzNyUH5zmExGtS97rzsQyeXBEEcQyevvb8m7a+77923nGM/7taINDu7fsYz/4Od3s655fdyAKG5PNzeim3NPH1SWSyeXjvHeTB4IAkPeqfezZ1X8MYaDsOG77mXv9UPtJyKFlmuZdUUgoBn1HkWql6NHTEkqJo8BYhfJhNRcLGmmNmeRpkSqDVC1O7mcn7i8csYjv9PW7dCfiMsr6qbjafRrWxj4ctWhK5bLpf5ztd2z//i2gdwvmZ7BewXr169i2ta1rb3Wz7cK0J8+hasxJ4lvnpmFG3/i1vhve6/r/v//+cgynZlTEgq1GuKRQrFbZT//uAxOqAFCWRP+wlr6KTsaf9hi480Nlg7Q4vyLZYVI1K6xC/xb6rndx8qm1/d5a1obLGqFHNu0ckbosq+ysuSpNSAyDmKQgYYiYcUeUkbcAyIwwQaDhg0BAF7F+woaAI5MdgYAMohmSCmJAS41AMDITapAK8e9TJhzHkzyy4MSIhlEhO9ewonLIveoAjYhNjyDBwyRZwaZyp9mmWFvM8bRDdyzdBQAFXqYAWYYqKg3cYTfpYIpaGV/K2BoaRNfKlsRBBseRwZR2rF20iOgMgTN2HclhuETY2BJDVpmAsf/U//fxf5YRgjfw5Dk9DD8NdjDXnaQCOU+Loq3c/u+NhnP//deX5f76xnuqenR5oXdvSqCH9xltWr/9///9d/8P/v/+ef16e3hh//S5Y0uWquTZH62JRv////11gFNWJm5ypl0YLIo2T4BZIGAGkWRByZMaXKDDGZs7RdZq6DK3nfeSnmfw1S+qMf6RRMeX/+5DE84AWLY899YeALBMyJ781ogikO26Q8TqLOtJ2JM6epWus/6//tbdIRAhNX0a3q2zfH3mtcDnAaTpfPrf///fxv/xoOpsW36VrJg/irVLZPmff+fn/Ddj//H///+W5lYZZoj+DB03xbZvW/m7M5btbx8arqTdMW384fPifQo275+c10yRjaVoAx2eIiHlkIcMayEIh5CqhftdZkOpslYje7yga+U5mRRFdSwIUNDCiZc1GAnKKZ1Q3anixN21p7PPfdW11KhyhV1sbvj4zXH1GimcTqkatvmb/2+cSieprAiJDWdZrEkHnHGVSsurOZ7ANMpbWrlQJlpZ10o9AFFg6RSooqwdCRIKgFZ0PGv0N9So3R2hkMkIm2+gZAjCWADy25EjAwxYChwiMyFzez5S6apG1Zm9WSTx7vYESL6W1BY96jSvbPsXiSqZ4od2tTeMYvGhwi7BvxXsa02VzbecWxSobaosYhrLYsZY4uS6s6syK6z2OKDx9mo3Sg8TbpdF7IFmaVh4hWZAFd7AAuwu4FUKbsGKqA6CgYQxOQeb/+4DE3gAU0Y0//ZeAKh6mZ72HljQqRnMZQkzMMPABwQQMGhuVy+HTzTz62fqnbqxCljRkgzPCIXto5+9PNPNMfV8SlLFpwkgSVPbLFS8SjAGaBQtK9yzCE55F3cdRPCWxSrXKzX99dfFtdfPHPw8gP////2263/6ykPb1ACIynkGisrJBHYiK3hMFMBMqBkfVNVg3MiaprszJY6SHNRF0fFq1ddMvRL69y6JPc2E8kkdtUw5tKzS0b9pL5M2Ln5HM17/vPXoDx88h0/a5sPWw+dXWvtles6IqOcie3///1BKivDI6IYBvwAAhMz1ryFSDAQ5sAk4BCNh0ULbwyllzeOgqorTg5ANg6QIyAyTMiPtVofNH1WoMA0bCgIqMyzb+7GpwzFSHPX0EUMo20lvVC5LbYxbiQ0NDmf//+hWHd4V1VDAe+AAGCIeigEDTLFkJfYYYsQKRXSvFKyIQBYlbKAmCZZYYQtye31l4rv/7YMTygA5JIzXsPO/B6aQmvYYh/KLZnRmgaiBIDiwYiJTSrp/YXUJ6kcRf7u/Ep5dRnAH429JvQJnHf///TTMzOyKpkT8R8XsxIMfHRC6IB2WYJEpqtmWrEILi+3gdKleiULl3sssIFkbqZsiQ9PuPNBhAGhYXg21P1KY9GEhHvtJHGz2yCshdtR5amERnlVUyF9QACQy5ldCpIPVOEPUZYMpinul+8yHBb6gLAcuGQm3pgnFa61EpCnSBp6I5mHLaBOCLHNdf5TMeXMY0pIk2U9Oq4VYp2ZDInwzyICJa6xghhCXiL4DA0cIJQ2dNsSxKZ+WZAeCJFYYc0hxJPk0VvuZ48//7UMT0AA11ITOsMFHhcpSmPYYlxBjRy+Ip+CEbfXtmZ3Wdp2fsA/kLVrP3l0ZnpkRAH8AACwBkBAUoIy0gKCAhyQgzc0I1rlMyDJQ2Q7EiMThIQuQtoPY+/1q9Jxi9KQqEQiBscW24//4ptA4kVR7pvn4mUU2d2MzAPhVANERfWaqwCrHlJVKolmQoQmYyhCfAraJ9UyheOx+gJKJdPteUX9/kp8lhuuX6E8QEn1n+8kc5ZKEWaYVEZWVDMB+gABRwoIh+EIQ5A4rBhIqipbT/+1DE7QBLFLkx7CSv4TQUJn2EjiRna7k+H/SEemJvtAFAkKj8Tis0dRlrZ/A+URo8JniIiBNESgMk9fY/tULkGMQKxzFKV/Z7ZHCH5EiKhFAuejQFxN2LxlZS2yG7hg+HIAS9OAwXDoblF67qdcTTM+R7NNKnCqGGZzAoWBVzovhcc3t2MAzBCO6laVd3dEIyHwAAJKNEHilpkHhRoVGw1iIkNFZTBIqquWAJG2tI7EKh+K4lGUAtbpzUGIISI1JjIWHlqY0v+xDaL9XVz/Rp//swxPeASPiBM+wlDSEgkCY9hLHVA+SUoCoMX5TIXcilDaVitiAlrSqKlQ4NsHWDnI1Li00w0Xs5m8cUJ6fturc/D2EaiICQ1crtzSwTDgoVfzWtWCVWREUQBwAAOEzU9ib9kdALNb1KJFVKxAUwJxXYrW2hDsExOCsxklJbuUmNtm/wLmaaeGkJ+GoINFVP+xjjx4EF723XWsic//tAxPMASPh1L+w9KmkNDqV9hiHkTBQljxmI25hCieowocNNAmyiE1UJGDSQlJBRougNoJiKGMtUqsZVUW2lMg8dCwYEElyS/kAp9Bb5S66OALgAAKJBnEAQOasGQHElN1QhRZmkMDcT4kZdzhISYJTQFEybYVJFDDkG7BbGvNdFqw0hDuLUzvy5VpAMx1ijkjTCwKokfEBSNZeVKlFBqLJUcWYGSnRDxXWlGDkO1PH+qlEjlID/+zDE/gBJVH8r7CRvYQ+OpXWGJWTxEqh0jbBttSuu4mZIycRIvEGwMqpVyjbkbRFgAABVMghgIeEhzTLSbWMutLcuw7BlFuHIL4vxnD+Uh+ryUc+q5cnHOQLvSYzSlro7oQigq+t44Dhtpjo+e03cSEwJQLRGQFrk7SEKqYKWgYhBDFsJ6dIVyLJc7AogIXEmJl7yVMMaxiWXGVz/+zDE+gBIFGUt7BkwqQyOZXWGHeTTIiINt3LjE5E+pfrPpbYQ6AAAVQJJjAhqSj5e8SS2gH8RMOF+jl2PWfq6IM0Ob0xAsumCAiRyZZzca1i6/6aElE0RsVv6PXfbnIhQEngKF2Cc71gwacpQkvqwFTBibS67FW/kMHPnepeI3QSBIOoG6emufG06NhDB6h+uiZ6quss2tiGAAAD/+zDE+4BIRHMp7DEPKPeMZXWHpRWSOsto5jGMAHQD6JWnjbJ8DQUJkGmfpCRnKVhVkQ82QwQrsx66y5KPV939AgEoxnQ7QOabjkbKYR51rq50dUZxCVp7QnLYFVQ1aawccAiBWxitoEmHNk01cqepIUMPk0KaQZRi7BSYXU42kkVGAAYOo5wyhcQFEHCYIyx/qVPHJVEhhuZo0oL/+yDE/wBIGGMprD0qaPYMJHWHpRhkyNSJWF6TvCJ4GV505jbEWtMW6Td20oRSUsuyHyOIE2UpNPnFwesFQzPPjvOMbskhs5SywIkdepVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWmHqaAAPTmhLWARcPzUKatUy5qP//swxPYASChlH6w9iMDpDCR1h6UQ2K2VqgLxZ6lMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sgxPuAR2hfIaw9JwDfjKP1gzIZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7IMT4AEdQZx2nvScI1IvisYYliVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+xDE9oBGVGERh6TMCJKLYmQmGC1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMTkA8N4XRUjDEVgAAA/wAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV';\n"
  },
  {
    "path": "src/lib/helpers/audio/shopopen.js",
    "content": "export default 'data:audio/ogg;base64,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';\n"
  },
  {
    "path": "src/lib/helpers/audio/shopsubnav.js",
    "content": "export default 'data:audio/mpeg;base64,SUQzAwAAAAA5RFBSSVYAABS6AABYTVAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuNGQyZjU5NywgMjAyMS8wOS8wMS0yMDo1MToyMiAgICAgICAgIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcERNPSJodHRwOi8vbnMuYWRvYmUuY29tL3htcC8xLjAvRHluYW1pY01lZGlhLyIKICAgIHhtbG5zOmJleHQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20vYndmL2JleHQvMS4wLyIKICAgIHhtbG5zOmlYTUw9Imh0dHA6Ly9ucy5hZG9iZS5jb20vaXhtbC8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtcERNOnByb2plY3ROYW1lPSJ1aV9idXR0b25fY29tbW9uX2NsaWNrIgogICBiZXh0Om9yaWdpbmF0aW9uRGF0ZT0iMjAxOS0wMi0yNyIKICAgYmV4dDpvcmlnaW5hdGlvblRpbWU9IjIxOjI1OjUzIgogICBiZXh0OnVtaWQ9IjgwQjVDRkM2RDg1MTQ1MTRBNkFERTZDNUU0Njk0RjUyIgogICBiZXh0OnRpbWVSZWZlcmVuY2U9IjQ5Mzc3NiIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMS0xMFQxOTozMTowNSswODowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjItMTEtMTBUMTk6MzE6MDUrMDg6MDAiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Njg3ZjFlNTEtMDljZC0yZDQyLWIxMDUtMWRlM2JkNDdiNDQ3IgogICB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA1Yjk0MDQwLTJmYTItZWQ0Zi05Njc0LWJlZWNlMjhjNDRjMSIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmEwYTI2ZTdlLWM2YmYtZmM0NS1hYTNiLTMzMGI2NTNjN2U5MSIKICAgZGM6Zm9ybWF0PSJhdWRpby9tcGVnIj4KICAgPHhtcERNOlRyYWNrcz4KICAgIDxyZGY6QmFnPgogICAgIDxyZGY6bGkKICAgICAgeG1wRE06dHJhY2tOYW1lPSJDdWVQb2ludCBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IkN1ZSIKICAgICAgeG1wRE06ZnJhbWVSYXRlPSJmNDgwMDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHhtcERNOnRyYWNrTmFtZT0iQ0QgVHJhY2sgTWFya2VycyIKICAgICAgeG1wRE06dHJhY2tUeXBlPSJUcmFjayIKICAgICAgeG1wRE06ZnJhbWVSYXRlPSJmNDgwMDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHhtcERNOnRyYWNrTmFtZT0iU3ViY2xpcCBNYXJrZXJzIgogICAgICB4bXBETTp0cmFja1R5cGU9IkluT3V0IgogICAgICB4bXBETTpmcmFtZVJhdGU9ImY0ODAwMCIvPgogICAgPC9yZGY6QmFnPgogICA8L3htcERNOlRyYWNrcz4KICAgPGlYTUw6dHJhY2tMaXN0PgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaQogICAgICBpWE1MOmNoYW5uZWxJbmRleD0iMSIKICAgICAgaVhNTDppbnRlcmxlYXZlSW5kZXg9IjEiCiAgICAgIGlYTUw6ZnVuY3Rpb249IkwtTUlYIi8+CiAgICAgPHJkZjpsaQogICAgICBpWE1MOmNoYW5uZWxJbmRleD0iMiIKICAgICAgaVhNTDppbnRlcmxlYXZlSW5kZXg9IjIiCiAgICAgIGlYTUw6ZnVuY3Rpb249IlItTUlYIi8+CiAgICA8L3JkZjpCYWc+CiAgIDwvaVhNTDp0cmFja0xpc3Q+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmEwYTI2ZTdlLWM2YmYtZmM0NS1hYTNiLTMzMGI2NTNjN2U5MSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0xMS0xMFQxOToyOToxNCswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjIuMSAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowNWI5NDA0MC0yZmEyLWVkNGYtOTY3NC1iZWVjZTI4YzQ0YzEiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMTEtMTBUMTk6Mjk6MTQrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIyLjEgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmYzZGYwYTlhLWEwYzQtZDU0YS05MzM3LWM2NWY1NDhlZmM3NyIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0xMS0xMFQxOTozMTowNSswODowMCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgQXVkaXRpb24gMjIuMSAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ODdmMWU1MS0wOWNkLTJkNDItYjEwNS0xZGUzYmQ0N2I0NDciCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMTEtMTBUMTk6MzE6MDUrMDg6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEF1ZGl0aW9uIDIyLjEgKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHhtcE1NOkRlcml2ZWRGcm9tCiAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmEwYTI2ZTdlLWM2YmYtZmM0NS1hYTNiLTMzMGI2NTNjN2U5MSIKICAgIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6YTBhMjZlN2UtYzZiZi1mYzQ1LWFhM2ItMzMwYjY1M2M3ZTkxIgogICAgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmEwYTI2ZTdlLWM2YmYtZmM0NS1hYTNiLTMzMGI2NTNjN2U5MSIvPgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//u0QAAAAhcTy3npYcxHonlfPS85jJhdI433iQnDDOPxrnEgeGdRESEQAABJTpNcORTOBbz4SAkLqKk4UVNw8IT/WHRLKRRJkL83Kg8jMD5UdX//////yk+GTn9TqTgRCzv6nUnKky7IYCAiIAAAEpyBtp4sBvnGiFl4xiMHAiBtTP6hnqdMHiS8/4ysrtjOwvpDxMz8cQO9n///////zj/t31FxATCxMMB85QTchzRzOZ8gAG19kQmZQuHvdx8VMZMGAYAdRd5foHBIYYsmd/02CnKlisa+0HEbDBQEDBwbjTyCDhRNjHNETBo/Nejky6EDFgLLACMCAIAAYFARBcLGI6hjDbIJX8y3KHGlphyqxoHTiRiUTQAA7Cwg4LNq5As4+14mGRZlq7VGgIBTG2AO5AAwiVhkCyR9F7LCITTIYRNXUo6YhDT7XMyoA9hfANCjD4OLsvqpWo0huKl461kDvopBQSHgoKgcYFwQeTQ7JNYlVW4u41stwtympBPDCv//lLQEsQAAFQoAAFqpOwtkAuiQARQqARQCpIJLoQAI2kOZkuTbkyUNxkaZRg7BfCTPSKQE2BMBBgcZIDFLPAKB5DwCCCPLsmOeeKZEwMMgsKC8oFxAph7YnZA1Uo8r3pKSVf/////mJbfy713olTDYAGKExgbqKgaCE29WAyQY0FJqGEoKmojCzBxUCgJz4LBpZNH9L8CwAAXDYGO12K3DL4GGTuFmxZ4GAwoHnTXJiZk+AUFwoIzAnCcIiKTA//u0QFkAAugwzu1qoARtBgpdrdQAkVEhS1j6ABIPo+orMUACyoHg2wLHBQgYwE4HkV7JU69f////+UiRQ/GFUFTWqkdoDYA4hmCb5JYQt8PWzELYzN0SLYstTgNApDhUB1AkeBSUHZJ0CWIkCDA4koxFCjEOjpExJUoiqOmlsMwGQwbxnGLIFXoDG8knoeAYUAzwIDhKAFhoGZAgZsSSgGFNg0FkcBljABUf9Aly+KUI8idIZInReAZAAerf+3////T/yYHMZX9VVVUlCKx34SACPJq4smgJdMCsph1uD2tJMwMQaXRIDMlQKGzMPlNwIEgFF5EimCkdI8BKEorhg0TEGgIdItoQDCYIiEIwESk6+GFS4XFwveBRIBKAeP/h7YX3AyIETcHSCdDMAQUAUCRAwYECQT9zRBN9ZOudP9v6f9/1f/pq/lAVYGVGeFdSSQksYClHEI3BcR3uyxKu0MpHjMIISQGavM6SGb6MyaC3Q4hCYAFYOoLQgssEbl1Bg8hPJFEBQYAoNFwl1A6GoAYIKHImpmMoBgCwzxBknmPrRNTEqgDMieNkkjIiwhMBkQZeJ5J+klUQICpEZUiKLf////9IyNi6Bh0YeqTprG7s7U2QAhQIkgFdpGornfdCzMuSDhQsOsR9jgTLehBrawETpqFvxYDkgDFUDcgBgBBcMDgaOaSxOiEpEkibBCFDNFRkQIPaBEJiBGzCzgag8gJOotT+pImieAaDJqiyKJiagSCBqi3/Kj//////1JkO//u0QHqABB1BVH9igAR2aBpt7NQAzP0FU+xma5HToGo9nNFzAcDw8+ZmVnlWhEkJLGAqII4MBpSxhQZCqRF5U2UVkObPDiRnd609KpgsG4zXRntIGFGGGvbHLtHYzggQiRfLHvw8JXRatIDTVNul+tIXQEwE6kutASMDCBA8/9A6EBjf/////9aimeAyDDSzzqqNEPDEkpKg4EqL1NLLsh5kZIiZotwBjWYFQsw+ETw55QFgSTsCvcXt67pzhlGqJQgIRpp4KlTPKP5SOiojWaa7Sg0gohcmgOsAE0glzT+sSMCSccRVSWopg0CAQCpkuz/zodM3/////9IjRZoGQfAWNE6E9GRGaGdzNskoUCXChpcWhGVv+XSnWYoXIMBiR1gw6C9VFTu1YgBBuDI2VlCW8hGkGpfnuls4SUDBwNe/dxhIkRS0RqgaCASauXf0zQOTAwZUvI9w4kBq6RMnUv7sHDKj//////0SNBqeEbA3////////////////////////////////qytDqyCURJQoD0oWrJVTPpR1BbVmQ0JBOkszsUAm7POBhRwmlkif9AwsyUFlL6Lqavhan2dWMK5ihUv1/8bGUI7dIRiBop5Tdqi/+gUxKASLEz7B0QEoxIl5H/WKVb/////9SZQJ8DBjBJB2su92UcAUGAckCiGUoNtkgcFILsoRxZuAk0tHAOMGL0xaC5VBDd2QyCPECpezXgEbXtIpb8e+4xsSAqenb9ibSMDlsRuRgGDRlRPp//u0QJ0ABBlAUnsZouZriAo/Y1RczukFQ6zqi5G/IGi1rNFzf0xwgEhhbzXUUwaAACSYtBCnn2WpIoiEQXMCBy07f////9SZGCxA40Cwg+20u92TaJUGAghCQjieVkgsrMiJPtjURj6PSgp/Il6Yed2Fv01kZNsOEAOCiJ1EEqMf3bLw81wSGhX/vRUBLecRQIUDQyBpI8w/WwjoDECScKyKSzAEIMAUAQ0ln/onAGAxu3/////8pDlAgSgoJNhYjm2dzThKgoHUmSGADCBQhcjES0oQC7qABKcgIPCGBpbQSqGqJiinC5DxHQtl5UEkW9dgnm4YBRi9ZPeymSqkRFs8mo7wME2HWaJtNfqWRgtwGOEgsBNtZQFnAAGBsmX91i6Dpx6X/////+yRYEFRYf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jculqjIKgoGCUdYbYXFWKRFvp2kR0mWnjlge63aPxjsKgMYD4wA55C2iX5goIInLhzKkv3HxMwPv95m7JNDCTYvBqIADUYB9F5D/0iNGiGWgvcikikZgkRFyCNh2pfrOEaDgpEUP/////1JkVE8kVQWje2UqThKggFsISMfMvCEBuGhsnUvFFhEdAajscIkijNitnXRcbNPCTMYrlUWcx1//u0QMAABvxAT+s5ouRxSBndYzRczMkBO6zmi5GToCc1jVFym9XNt2AR0il1XK8IRCYdmKjMqgmjEaFtnY2/uJtAsiKh56jMTYAEhHEm39RTAeCX//////5Nno3bXKmkUoIBkjitNDdWUvaJRXeODTyQYZyhOAZOD4rhjXiQwDzvI8C0F8wQHZrdiXMv+sQhIH7vVCQAjGBY0iTIhMBqIQbUVXxyF/kyM8HADeS2hfkBRSfKqv7nBY7f/////8oOVquVpFSNuKLqKkkxCT+gsyhZWdCG3LMvxM2pycl8MOmnoBpKUyiSLFiURhplMcjskh7nccqFjACM6b1R5mLCGbwifpK+Gt63lvKq0ZIV7KGpMzUMiMgkZ+p2/Yt2JfSSunlEBsRnaarWxs5WbVm/ev2MAwMDAymmCEhQtVVWIGBhaummmCDKqqqLJC1VNNNIULVVVWWDKq6f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9tJtOAwFy2SpUrx4nEfB5pRbVC4Y26Kg0DA14MLaMkckaj01lTIGRGqq+a7lvLGXUUPvwwORYU8xH1tJrVoLYyWFA9SCrOndh6Wve60JkVFR3rVt/EJLMHTgiDYKjs2hJicSiMqlMqjMunYrPRW/RW//u0QMAACIAyS1H4wtKlhymNPxhaRFCTFwGgSUkPDqMkkb0h5ynpKSnpK9SvUu3K1WtVrY5WbVq9fvX7AYHgYHTTlGBhaiyyy0Ommmiq//rSyy7qaaaqv/WlFRWCAMDS9YKCBOnyxIwY8TClCCGBILp9E+qf///ymKFhiemqmrlAADB9ReE4WsWDgAsYUAghYoKCcjurQpYk8WM9Yly2tkOBmz1PF1KE7E+rGNsa10vr7BHiLBNv2DVS/2mi//yk//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u0QMAAD/wAS4AAAAgcgAlwAAABAAABLgAAACAAACXAAAAE////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';\n"
  },
  {
    "path": "src/lib/helpers/banner-custom.js",
    "content": "import { API_HOST } from '$lib/env';\nimport { BannerManager } from './dataAPI/api-indexeddb';\nimport { initCDNURL } from './assets';\n\nconst idb = BannerManager;\nexport const maintenance = false;\n\nexport const localBanner = {\n\tisComplete: async (itemID) => {\n\t\tconst { character, images, rateup = [], bannerName } = (await idb.get(itemID)) || {};\n\t\tconst { artURL } = images || {};\n\t\tconst complete = !!artURL && !!character && rateup.length > 0 && !!bannerName;\n\t\treturn complete;\n\t},\n\n\tisHostedBanner: async (itemID) => {\n\t\tconst data = await idb.get(itemID);\n\t\treturn 'hostedImages' in data;\n\t},\n\n\trenewImage: async ({ id = 0, newData = {}, key = '' }) => {\n\t\tconst { data = {} } = newData;\n\t\tconst { url: imageURL, delete_url } = data;\n\t\tconst [, , , imgID, hash] = delete_url.split('/');\n\t\tconst idbData = await idb.get(id);\n\n\t\t// create placeholder\n\t\tconst { hostedImages = {}, imageHash = {}, imgChanged = {} } = idbData;\n\t\tconst hashList = Object.keys(imageHash).map((k) => imageHash[k].id);\n\t\tidbData.hostedImages = hostedImages;\n\t\tidbData.imageHash = imageHash;\n\t\tidbData.imgChanged = imgChanged;\n\n\t\tconst dontRemoveImage = hashList.filter((id) => id === imageHash[key]?.id).length > 1;\n\t\tif (!dontRemoveImage) {\n\t\t\tawait onlineBanner.deleteImage(imageHash[key] || {});\n\t\t}\n\n\t\t// Set new values\n\t\tidbData.hostedImages[key] = imageURL;\n\t\tidbData.imageHash[key] = { id: imgID, hash };\n\t\tidbData.imgChanged[key] = false;\n\t\treturn idb.put(idbData);\n\t}\n};\n\nexport const onlineBanner = {\n\tasync _postData({ action, data = {}, id }) {\n\t\tconst body = { app: 'genshin', action, data, id };\n\t\tconst headers = new Headers();\n\t\theaders.append('Content-Type', 'application/json');\n\n\t\tconst request = await fetch(API_HOST + '/storage', {\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(body),\n\t\t\theaders\n\t\t});\n\n\t\tconst result = await request.json();\n\t\treturn result;\n\t},\n\n\tasync getData(shareID, multi = false) {\n\t\ttry {\n\t\t\tif (!shareID) throw new Error();\n\t\t\tconst response = await fetch(`${API_HOST}/storage?app=genshin&id=${shareID}`);\n\t\t\tconst parsed = (await response.json()) || {};\n\t\t\tconst { data = [] } = parsed;\n\n\t\t\t// Multi ID\n\t\t\tif (multi === 'multi') return parsed;\n\n\t\t\t// Single ID\n\t\t\tparsed.data = { ...data[0] };\n\t\t\treturn parsed;\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t\treturn { success: false, message: 'error' };\n\t\t}\n\t},\n\n\tasync updateData(localID) {\n\t\ttry {\n\t\t\tif (!localID) throw new Error('no ID');\n\n\t\t\tconst date = new Date().toISOString();\n\t\t\tconst idbData = await idb.get(localID);\n\t\t\tconst localData = { ...idbData };\n\t\t\tconst { shareID = null, images, character, isChanged } = localData;\n\t\t\tconst { thumbnail } = images;\n\n\t\t\t// If nothing changed, dont proccess upload\n\t\t\tif (!isChanged) return { status: 'ok', shareID, thumbnail, character };\n\n\t\t\tdelete localData.images;\n\t\t\tdelete localData.imgChanged;\n\t\t\tdelete localData.status;\n\t\t\tdelete localData.isChanged;\n\t\t\tdelete localData.shareID;\n\t\t\tdelete localData.lastSync;\n\t\t\tlocalData.lastModified = date;\n\t\t\tif (localData.deleted) localData.deleted = false;\n\n\t\t\tconst onlineData = await this._postData({ id: shareID, action: 'put', data: localData });\n\t\t\tconst { success, id, db, message } = onlineData;\n\t\t\tif (!success) throw new Error('Failed to Update');\n\n\t\t\tidbData.db = db;\n\t\t\tidbData.shareID = id;\n\t\t\tidbData.lastModified = date;\n\t\t\tidbData.lastSync = date;\n\t\t\tidbData.isChanged = false;\n\t\t\tdelete idbData.deleted;\n\t\t\tawait idb.put(idbData);\n\n\t\t\treturn { status: 'ok', shareID: id, thumbnail, message, character };\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\treturn { status: 'error' };\n\t\t}\n\t},\n\n\tasync deleteBanner(itemID) {\n\t\ttry {\n\t\t\tconst { shareID, status, db, imageHash = {} } = (await idb.get(itemID)) || {};\n\n\t\t\t// Only delete local data if not shared\n\t\t\tif (status === 'cloud' || !shareID) {\n\t\t\t\tawait idb.delete(itemID);\n\t\t\t\treturn { status: 'ok' };\n\t\t\t}\n\n\t\t\t// Remove Images\n\t\t\tconst keys = Object.keys(imageHash);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst hashID = imageHash[keys[i]];\n\t\t\t\tawait this.deleteImage(hashID);\n\t\t\t}\n\n\t\t\t// Remove from Cloud\n\t\t\tconst { success } = await this._postData({ action: 'delete', id: shareID, data: { db } });\n\t\t\tif (!success) throw new Error('Failed to Remove');\n\t\t\tawait idb.delete(itemID);\n\t\t\treturn { status: 'ok' };\n\t\t} catch (e) {\n\t\t\treturn { status: 'error' };\n\t\t}\n\t},\n\n\tasync deleteImage({ hash, id } = {}) {\n\t\tif (!(hash && id)) return;\n\n\t\ttry {\n\t\t\tconst formdata = new FormData();\n\t\t\tformdata.append('action', 'delete');\n\t\t\tformdata.append('delete', 'image');\n\t\t\tformdata.append('deleting[id]', id);\n\t\t\tformdata.append('deleting[hash]', hash);\n\n\t\t\tconst data = await fetch('https://ibb.co/json', { method: 'POST', body: formdata });\n\t\t\tconst { status_code } = await data.json();\n\t\t\tconsole.log(id, hash, status_code);\n\t\t\treturn status_code === 200;\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\treturn false;\n\t\t}\n\t},\n\n\tasync block(id, db) {\n\t\tif (!id) return;\n\t\ttry {\n\t\t\tconst { success } = await this._postData({ action: 'block', id, data: { db } });\n\t\t\treturn success;\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nexport const syncCustomBanner = async () => {\n\ttry {\n\t\tconst storedBanner = (await idb.getAll()) || [];\n\t\tif (storedBanner.length < 1) return;\n\n\t\t// Initialize cdn url generator for custom banner images\n\t\tawait initCDNURL();\n\n\t\tconst localBannerIDs = storedBanner.map(({ shareID }) => shareID).filter((id) => !!id);\n\t\tconst ids = localBannerIDs.join(',');\n\t\tconst { success, data = [] } = (await onlineBanner.getData(ids, 'multi')) || {};\n\t\tif (!success) return;\n\n\t\t// Renew Data\n\t\tconst blockList = [];\n\t\tconst deletedList = [];\n\n\t\tfor (let x = 0; x < data.length; x++) {\n\t\t\tconst dataToStore = { ...data[x] };\n\t\t\tconst dataToModify = storedBanner.find(({ shareID }) => shareID === dataToStore.id);\n\t\t\tif (dataToStore.blocked) blockList.push(dataToStore.id); //save id if blocked\n\t\t\tif (dataToStore.deleted) deletedList.push(dataToStore.id);\n\n\t\t\tdataToStore.status = dataToModify.status;\n\t\t\tdataToStore.shareID = dataToStore.id;\n\t\t\tdelete dataToStore.id;\n\n\t\t\tif (dataToModify.status === 'cloud') {\n\t\t\t\tdelete dataToStore.imageHash;\n\t\t\t\tawait idb.put(dataToStore);\n\t\t\t}\n\n\t\t\tif (dataToModify.status === 'owned') {\n\t\t\t\tif (dataToStore.deleted) {\n\t\t\t\t\tdelete dataToModify.imageHash;\n\t\t\t\t\tdelete dataToModify.hostedImages;\n\n\t\t\t\t\tconst imgObj = {};\n\t\t\t\t\tObject.keys(dataToModify.images).forEach((key) => (imgObj[key] = true));\n\t\t\t\t\tdataToModify.imgChanged = imgObj;\n\t\t\t\t\tdataToModify.isChanged = true;\n\t\t\t\t\tawait idb.put({ ...dataToModify, deleted: true });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// prettier-ignore\n\t\t\t\tconst { hostedImages = {}, imageHash = {}, blocked = false, lastModified, db = 1 } = dataToStore;\n\t\t\t\tconst modifiedData = {\n\t\t\t\t\t...dataToModify,\n\t\t\t\t\thostedImages,\n\t\t\t\t\timageHash,\n\t\t\t\t\tblocked,\n\t\t\t\t\tdb,\n\t\t\t\t\tlastSync: lastModified\n\t\t\t\t};\n\t\t\t\tawait idb.put(modifiedData);\n\t\t\t}\n\t\t}\n\n\t\t// Update CustomBanner Data on IDB\n\t\tconst cloudBannerIDs = data.map(({ id }) => id);\n\t\tconst unAvailableBanner = localBannerIDs.filter((id) => {\n\t\t\tconst isBlocked = blockList.includes(id);\n\t\t\tconst isDeleted = deletedList.includes(id);\n\t\t\tconst unavailable = !cloudBannerIDs.includes(id);\n\t\t\treturn unavailable || isBlocked || isDeleted;\n\t\t});\n\n\t\tfor (let i = 0; i < unAvailableBanner.length; i++) {\n\t\t\tconst sharedID = unAvailableBanner[i];\n\t\t\tconst { itemID, status } = storedBanner.find(({ shareID: id }) => id === sharedID);\n\n\t\t\t// Remove Unavailable Banner\n\t\t\tif (status === 'cloud') {\n\t\t\t\tawait idb.delete(itemID);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Update shared status to unshared if not found in online storage\n\t\t\tif (status === 'owned') {\n\t\t\t\tconst updatedData = await idb.get(itemID);\n\n\t\t\t\tif (updatedData.shareID) continue;\n\n\t\t\t\tdelete updatedData.imgChanged;\n\t\t\t\tdelete updatedData.shareID;\n\t\t\t\tupdatedData.isChanged = true;\n\t\t\t\tupdatedData.imgChanged = { artURL: true, faceURL: true, thumbnail: true };\n\t\t\t\tupdatedData.lastModified = new Date().toISOString();\n\t\t\t\tawait idb.put(updatedData);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error('sync custom banner failed', e);\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/banner-loader.js",
    "content": "import { beginner } from '$lib/data/banners/beginner.json';\nimport { standard } from '$lib/data/banners/standard.json';\nimport { version, wishPhase } from '$lib/data/wish-setup.json';\n\nimport { imageCDN } from './assets';\nimport { BannerManager } from './dataAPI/api-indexeddb';\nimport { localConfig, rollCounter } from './dataAPI/api-localstore';\nimport {\n\tactiveBanner,\n\tactiveVersion,\n\tbannerList,\n\tcustomData,\n\teditorMode,\n\tisCustomBanner,\n\tisFatepointSystem,\n\tpreloadVersion,\n\tshowBeginner\n} from '$lib/store/app-stores';\n\nconst idb = BannerManager;\n\nconst useCustomBanner = async (bannerID) => {\n\ttry {\n\t\tconst data = await idb.get(bannerID);\n\t\tif (!data) return preloadVersion.set({ patch: version, phase: wishPhase });\n\n\t\tconst {\n\t\t\tbannerName = '',\n\t\t\tcharacter = '',\n\t\t\trateup = [],\n\t\t\timages = {},\n\t\t\thostedImages = {},\n\t\t\tvision = 'pyro',\n\t\t\tcharTitle = '',\n\t\t\tartPosition = {},\n\t\t\twatermark = '',\n\t\t\tstatus = null\n\t\t} = data;\n\n\t\tconst dataIMG = status === 'owned' ? images : imageCDN(hostedImages);\n\t\tcustomData.set({ ...data, name: character, images: dataIMG });\n\t\tbannerList.set([\n\t\t\t{\n\t\t\t\ttype: 'character-event',\n\t\t\t\tbannerName,\n\t\t\t\tcharacter,\n\t\t\t\trateup,\n\t\t\t\timages: dataIMG,\n\t\t\t\tvision,\n\t\t\t\tcharTitle,\n\t\t\t\tartPosition,\n\t\t\t\twatermark\n\t\t\t}\n\t\t]);\n\n\t\tactiveVersion.set({ patch: 'Custom', phase: bannerID });\n\t\tactiveBanner.set(0);\n\t\teditorMode.set(false);\n\t\tisCustomBanner.set(true);\n\t\tlocalConfig.set('version', `Custom-${bannerID}`);\n\t\treturn { status: 'ok' };\n\t} catch (e) {\n\t\tconsole.error(e);\n\t\treturn { status: 'error' };\n\t}\n};\n\nconst checkBeginnerBanner = () => {\n\tconst starterRollCount = rollCounter.get('beginner');\n\tconst isShowBeginner = starterRollCount < 20;\n\tshowBeginner.set(isShowBeginner);\n\treturn isShowBeginner;\n};\n\nexport const initializeBanner = async ({ patch, phase }) => {\n\ttry {\n\t\tif (!patch || !phase) return;\n\t\tif (patch.match(/(local|custom)/gi)) return useCustomBanner(phase);\n\n\t\tconst list = checkBeginnerBanner() ? [{ type: 'beginner', ...beginner.featured }] : [];\n\n\t\tconst { data } = await import(`$lib/data/banners/events/${patch}.json`);\n\t\tconst { banners } = data.find((b) => b.phase === phase);\n\t\tconst { events, weapons, standardVersion: stdver, chronicled = null } = banners;\n\t\tconst { featured: stdFeatured } = standard.find(({ version }) => stdver === version) || {};\n\n\t\tconst charEventBanner = {\n\t\t\ttype: 'character-event',\n\t\t\trateup: events.rateup,\n\t\t\tstdver\n\t\t};\n\t\tevents.featured.forEach((eventdata) => list.push({ ...eventdata, ...charEventBanner }));\n\t\tlist.push({ type: 'weapon-event', stdver, ...weapons });\n\t\tif (chronicled) list.push({ type: 'chronicled', stdver, ...chronicled });\n\t\tlist.push({ type: 'standard', stdver, ...stdFeatured });\n\n\t\tbannerList.set(list);\n\t\tisFatepointSystem.set(!!weapons.fatepointsystem);\n\n\t\tactiveVersion.set({ patch, phase });\n\t\tactiveBanner.set(0);\n\t\tlocalConfig.set('version', `${patch}-${phase}`);\n\n\t\tcustomData.set({});\n\t\tisCustomBanner.set(false);\n\t\treturn { status: 'ok' };\n\t} catch (e) {\n\t\tconsole.error(e);\n\t\treturn { status: 'error', e };\n\t}\n};\n\nexport const handleShowStarter = (isShow) => {\n\tif (!isShow) {\n\t\treturn bannerList.update((bn) => {\n\t\t\treturn bn.filter(({ type }) => type !== 'beginner');\n\t\t});\n\t}\n\treturn bannerList.update((bn) => {\n\t\tbn.unshift({ type: 'beginner', ...beginner.featured });\n\t\treturn bn;\n\t});\n};\n"
  },
  {
    "path": "src/lib/helpers/browserState.js",
    "content": "const browserState = {\n\tset(page) {\n\t\thistory.pushState({ page }, null, null);\n\t},\n\tback() {\n\t\tconst currentPage = history.state?.page;\n\t\tif (!currentPage) return;\n\t\thistory.back();\n\t}\n};\n\nexport default browserState;\n"
  },
  {
    "path": "src/lib/helpers/chat/badword-list.js",
    "content": "export const wordlist = [\n\t'4r5e',\n\t'5h1t',\n\t'5hit',\n\t'a55',\n\t'anal',\n\t'anus',\n\t'ar5e',\n\t'arrse',\n\t'arse',\n\t'ass',\n\t'ass-fucker',\n\t'asses',\n\t'assfucker',\n\t'assfukka',\n\t'asshole',\n\t'assholes',\n\t'asswhole',\n\t'a_s_s',\n\t'b!tch',\n\t'b00bs',\n\t'b17ch',\n\t'b1tch',\n\t'ballbag',\n\t'balls',\n\t'ballsack',\n\t'bastard',\n\t'beastial',\n\t'beastiality',\n\t'bellend',\n\t'bestial',\n\t'bestiality',\n\t'bi+ch',\n\t'biatch',\n\t'bitch',\n\t'bitcher',\n\t'bitchers',\n\t'bitches',\n\t'bitchin',\n\t'bitching',\n\t'bloody',\n\t'blow job',\n\t'blowjob',\n\t'blowjobs',\n\t'boiolas',\n\t'bollock',\n\t'bollok',\n\t'boner',\n\t'boob',\n\t'boobs',\n\t'booobs',\n\t'boooobs',\n\t'booooobs',\n\t'booooooobs',\n\t'breasts',\n\t'buceta',\n\t'bugger',\n\t'bum',\n\t'bunny fucker',\n\t'butt',\n\t'butthole',\n\t'buttmuch',\n\t'buttplug',\n\t'c0ck',\n\t'c0cksucker',\n\t'carpet muncher',\n\t'cawk',\n\t'chink',\n\t'cipa',\n\t'cl1t',\n\t'clit',\n\t'clitoris',\n\t'clits',\n\t'cnut',\n\t'cock',\n\t'cock-sucker',\n\t'cockface',\n\t'cockhead',\n\t'cockmunch',\n\t'cockmuncher',\n\t'cocks',\n\t'cocksuck',\n\t'cocksucked',\n\t'cocksucker',\n\t'cocksucking',\n\t'cocksucks',\n\t'cocksuka',\n\t'cocksukka',\n\t'cok',\n\t'cokmuncher',\n\t'coksucka',\n\t'coon',\n\t'cox',\n\t'crap',\n\t'cum',\n\t'cummer',\n\t'cumming',\n\t'cums',\n\t'cumshot',\n\t'cunilingus',\n\t'cunillingus',\n\t'cunnilingus',\n\t'cunt',\n\t'cuntlick',\n\t'cuntlicker',\n\t'cuntlicking',\n\t'cunts',\n\t'cyalis',\n\t'cyberfuc',\n\t'cyberfuck',\n\t'cyberfucked',\n\t'cyberfucker',\n\t'cyberfuckers',\n\t'cyberfucking',\n\t'd1ck',\n\t'damn',\n\t'dick',\n\t'dickhead',\n\t'dildo',\n\t'dildos',\n\t'dink',\n\t'dinks',\n\t'dirsa',\n\t'dlck',\n\t'dog-fucker',\n\t'doggin',\n\t'dogging',\n\t'donkeyribber',\n\t'doosh',\n\t'duche',\n\t'dyke',\n\t'ejaculate',\n\t'ejaculated',\n\t'ejaculates',\n\t'ejaculating',\n\t'ejaculatings',\n\t'ejaculation',\n\t'ejakulate',\n\t'f u c k',\n\t'f u c k e r',\n\t'f4nny',\n\t'fag',\n\t'fagging',\n\t'faggitt',\n\t'faggot',\n\t'faggs',\n\t'fagot',\n\t'fagots',\n\t'fags',\n\t'fanny',\n\t'fannyflaps',\n\t'fannyfucker',\n\t'fanyy',\n\t'fatass',\n\t'fcuk',\n\t'fcuker',\n\t'fcuking',\n\t'feck',\n\t'fecker',\n\t'felching',\n\t'fellate',\n\t'fellatio',\n\t'fingerfuck',\n\t'fingerfucked',\n\t'fingerfucker',\n\t'fingerfuckers',\n\t'fingerfucking',\n\t'fingerfucks',\n\t'fistfuck',\n\t'fistfucked',\n\t'fistfucker',\n\t'fistfuckers',\n\t'fistfucking',\n\t'fistfuckings',\n\t'fistfucks',\n\t'flange',\n\t'fook',\n\t'fooker',\n\t'fuck',\n\t'fucka',\n\t'fucked',\n\t'fucker',\n\t'fuckers',\n\t'fuckhead',\n\t'fuckheads',\n\t'fuckin',\n\t'fucking',\n\t'fuckings',\n\t'fuckingshitmotherfucker',\n\t'fuckme',\n\t'fucks',\n\t'fuckwhit',\n\t'fuckwit',\n\t'fudge packer',\n\t'fudgepacker',\n\t'fuk',\n\t'fuker',\n\t'fukker',\n\t'fukkin',\n\t'fuks',\n\t'fukwhit',\n\t'fukwit',\n\t'fux',\n\t'fux0r',\n\t'f_u_c_k',\n\t'gangbang',\n\t'gangbanged',\n\t'gangbangs',\n\t'gaylord',\n\t'gaysex',\n\t'goatse',\n\t'God',\n\t'god-dam',\n\t'god-damned',\n\t'goddamn',\n\t'goddamned',\n\t'hardcoresex',\n\t'hell',\n\t'heshe',\n\t'hoar',\n\t'hoare',\n\t'hoer',\n\t'homo',\n\t'hore',\n\t'horniest',\n\t'horny',\n\t'hotsex',\n\t'jack-off',\n\t'jackoff',\n\t'jap',\n\t'jerk-off',\n\t'jism',\n\t'jiz',\n\t'jizm',\n\t'jizz',\n\t'kawk',\n\t'knob',\n\t'knobead',\n\t'knobed',\n\t'knobend',\n\t'knobhead',\n\t'knobjocky',\n\t'knobjokey',\n\t'kock',\n\t'kondum',\n\t'kondums',\n\t'kum',\n\t'kummer',\n\t'kumming',\n\t'kums',\n\t'kunilingus',\n\t'l3i+ch',\n\t'l3itch',\n\t'labia',\n\t'lust',\n\t'lusting',\n\t'm0f0',\n\t'm0fo',\n\t'm45terbate',\n\t'ma5terb8',\n\t'ma5terbate',\n\t'masochist',\n\t'master-bate',\n\t'masterb8',\n\t'masterbat*',\n\t'masterbat3',\n\t'masterbate',\n\t'masterbation',\n\t'masterbations',\n\t'masturbate',\n\t'mo-fo',\n\t'mof0',\n\t'mofo',\n\t'mothafuck',\n\t'mothafucka',\n\t'mothafuckas',\n\t'mothafuckaz',\n\t'mothafucked',\n\t'mothafucker',\n\t'mothafuckers',\n\t'mothafuckin',\n\t'mothafucking',\n\t'mothafuckings',\n\t'mothafucks',\n\t'mother fucker',\n\t'motherfuck',\n\t'motherfucked',\n\t'motherfucker',\n\t'motherfuckers',\n\t'motherfuckin',\n\t'motherfucking',\n\t'motherfuckings',\n\t'motherfuckka',\n\t'motherfucks',\n\t'muff',\n\t'mutha',\n\t'muthafecker',\n\t'muthafuckker',\n\t'muther',\n\t'mutherfucker',\n\t'n1gga',\n\t'n1gger',\n\t'nazi',\n\t'nigg3r',\n\t'nigg4h',\n\t'nigga',\n\t'niggah',\n\t'niggas',\n\t'niggaz',\n\t'nigger',\n\t'niggers',\n\t'nob',\n\t'nob jokey',\n\t'nobhead',\n\t'nobjocky',\n\t'nobjokey',\n\t'numbnuts',\n\t'nutsack',\n\t'orgasim',\n\t'orgasims',\n\t'orgasm',\n\t'orgasms',\n\t'p0rn',\n\t'pawn',\n\t'pecker',\n\t'penis',\n\t'penisfucker',\n\t'phonesex',\n\t'phuck',\n\t'phuk',\n\t'phuked',\n\t'phuking',\n\t'phukked',\n\t'phukking',\n\t'phuks',\n\t'phuq',\n\t'pigfucker',\n\t'pimpis',\n\t'piss',\n\t'pissed',\n\t'pisser',\n\t'pissers',\n\t'pisses',\n\t'pissflaps',\n\t'pissin',\n\t'pissing',\n\t'pissoff',\n\t'poop',\n\t'porn',\n\t'porno',\n\t'pornography',\n\t'pornos',\n\t'prick',\n\t'pricks',\n\t'pron',\n\t'pube',\n\t'pusse',\n\t'pussi',\n\t'pussies',\n\t'pussy',\n\t'pussys',\n\t'rectum',\n\t'retard',\n\t'rimjaw',\n\t'rimming',\n\t's hit',\n\t's.o.b.',\n\t'sadist',\n\t'schlong',\n\t'screwing',\n\t'scroat',\n\t'scrote',\n\t'scrotum',\n\t'semen',\n\t'sex',\n\t'sh!+',\n\t'sh!t',\n\t'sh1t',\n\t'shag',\n\t'shagger',\n\t'shaggin',\n\t'shagging',\n\t'shemale',\n\t'shi+',\n\t'shit',\n\t'shitdick',\n\t'shite',\n\t'shited',\n\t'shitey',\n\t'shitfuck',\n\t'shitfull',\n\t'shithead',\n\t'shiting',\n\t'shitings',\n\t'shits',\n\t'shitted',\n\t'shitter',\n\t'shitters',\n\t'shitting',\n\t'shittings',\n\t'shitty',\n\t'skank',\n\t'slut',\n\t'sluts',\n\t'smegma',\n\t'smut',\n\t'snatch',\n\t'son-of-a-bitch',\n\t'spac',\n\t'spunk',\n\t's_h_i_t',\n\t't1tt1e5',\n\t't1tties',\n\t'teets',\n\t'teez',\n\t'testical',\n\t'testicle',\n\t'tit',\n\t'titfuck',\n\t'tits',\n\t'titt',\n\t'tittie5',\n\t'tittiefucker',\n\t'titties',\n\t'tittyfuck',\n\t'tittywank',\n\t'titwank',\n\t'tosser',\n\t'turd',\n\t'tw4t',\n\t'twat',\n\t'twathead',\n\t'twatty',\n\t'twunt',\n\t'twunter',\n\t'v14gra',\n\t'v1gra',\n\t'vagina',\n\t'viagra',\n\t'vulva',\n\t'w00se',\n\t'wang',\n\t'wank',\n\t'wanker',\n\t'wanky',\n\t'whoar',\n\t'whore',\n\t'willies',\n\t'xrated',\n\t'xxx',\n\t'kontol',\n\t'cok',\n\t'asu',\n\t'dancuk',\n\t'dancok',\n\t'd4nc0k',\n\t'danc0k',\n\t'd4ncok',\n\t'kontol',\n\t'k0nt0l',\n\t'kntl',\n\t'peli',\n\t'itil',\n\t'kampang',\n\t'memek',\n\t'pepek',\n\t'jancuk',\n\t'jancok',\n\t'j4nc0k',\n\t'janc0k',\n\t'j4ncok',\n\t'jiancuk',\n\t'j1ancok',\n\t'itel',\n\t'peju',\n\t'crot',\n\t'pantek',\n\t'kampret',\n\t'babi',\n\t'bangsat',\n\t'bajingan',\n\t'lacur',\n\t'pelacur',\n\t'banci',\n\t'tai',\n\t'telek',\n\t'puki',\n\t'God damn',\n\t'Goddamn',\n\t'jerk',\n\t'knob end',\n\t'lmao',\n\t'lmfao',\n\t'omg',\n\t'queer',\n\t'wtf',\n\t'سكس',\n\t'طيز',\n\t'شرج',\n\t'لعق',\n\t'لحس',\n\t'مص',\n\t'تمص',\n\t'بيضان',\n\t'ثدي',\n\t'بز',\n\t'بزاز',\n\t'حلمة',\n\t'مفلقسة',\n\t'بظر',\n\t'كس',\n\t'فرج',\n\t'شهوة',\n\t'شاذ',\n\t'مبادل',\n\t'عاهرة',\n\t'جماع',\n\t'قضيب',\n\t'زب',\n\t'لوطي',\n\t'لواط',\n\t'سحاق',\n\t'سحاقية',\n\t'اغتصاب',\n\t'خنثي',\n\t'احتلام',\n\t'نيك',\n\t'متناك',\n\t'متناكة',\n\t'شرموطة',\n\t'عرص',\n\t'خول',\n\t'قحبة',\n\t'لبوة',\n\t'bordel',\n\t'buzna',\n\t'čumět',\n\t'čurák',\n\t'debil',\n\t'do piče',\n\t'do prdele',\n\t'dršťka',\n\t'držka',\n\t'flundra',\n\t'hajzl',\n\t'hovno',\n\t'chcanky',\n\t'chuj',\n\t'jebat',\n\t'kokot',\n\t'kokotina',\n\t'koňomrd',\n\t'kunda',\n\t'kurva',\n\t'mamrd',\n\t'mrdat',\n\t'mrdka',\n\t'mrdník',\n\t'oslošoust',\n\t'piča',\n\t'píčus',\n\t'píchat',\n\t'pizda',\n\t'prcat',\n\t'prdel',\n\t'prdelka',\n\t'sračka',\n\t'srát',\n\t'šoustat',\n\t'šulin',\n\t'vypíčenec',\n\t'zkurvit',\n\t'zkurvysyn',\n\t'zmrd',\n\t'žrát',\n\t'bøsserøv',\n\t'fisse',\n\t'fissehår',\n\t'hestepik',\n\t'kussekryller',\n\t'lort',\n\t'luder',\n\t'pik',\n\t'pikhår',\n\t'pikslugeri',\n\t'piksutteri',\n\t'pis',\n\t'røv',\n\t'røvhul',\n\t'røvskæg',\n\t'røvspræke',\n\t'analritter',\n\t'arsch',\n\t'arschficker',\n\t'arschlecker',\n\t'arschloch',\n\t'bimbo',\n\t'bratze',\n\t'bumsen',\n\t'bonze',\n\t'dödel',\n\t'fick',\n\t'ficken',\n\t'flittchen',\n\t'fotze',\n\t'fratze',\n\t'hackfresse',\n\t'hure',\n\t'hurensohn',\n\t'ische',\n\t'kackbratze',\n\t'kacke',\n\t'kacken',\n\t'kackwurst',\n\t'kampflesbe',\n\t'kanake',\n\t'kimme',\n\t'lümmel',\n\t'MILF',\n\t'möpse',\n\t'morgenlatte',\n\t'möse',\n\t'mufti',\n\t'muschi',\n\t'nackt',\n\t'neger',\n\t'nippel',\n\t'nutte',\n\t'onanieren',\n\t'orgasmus',\n\t'pimmel',\n\t'pimpern',\n\t'pinkeln',\n\t'pissen',\n\t'popel',\n\t'poppen',\n\t'reudig',\n\t'rosette',\n\t'schabracke',\n\t'schlampe',\n\t'scheiße',\n\t'scheisser',\n\t'schiesser',\n\t'schnackeln',\n\t'schwanzlutscher',\n\t'schwuchtel',\n\t'tittchen',\n\t'titten',\n\t'vögeln',\n\t'vollpfosten',\n\t'wichse',\n\t'wichsen',\n\t'wichser',\n\t'bugren',\n\t'bugri',\n\t'bugru',\n\t'ĉiesulino',\n\t'ĉiesulo',\n\t'diofek',\n\t'diofeka',\n\t'fek',\n\t'feken',\n\t'fekfikanto',\n\t'feklekulo',\n\t'fekulo',\n\t'fik',\n\t'fikado',\n\t'fikema',\n\t'fikfek',\n\t'fiki',\n\t'fikiĝi',\n\t'fikiĝu',\n\t'fikilo',\n\t'fikklaŭno',\n\t'fikota',\n\t'fiku',\n\t'forfiki',\n\t'forfikiĝu',\n\t'forfiku',\n\t'forfurzu',\n\t'forpisi',\n\t'forpisu',\n\t'furzulo',\n\t'kacen',\n\t'kaco',\n\t'kacsuĉulo',\n\t'kojono',\n\t'piĉen',\n\t'piĉo',\n\t'zamenfek',\n\t'Asesinato',\n\t'asno',\n\t'bastardo',\n\t'Bollera',\n\t'Cabron',\n\t'Caca',\n\t'Chupada',\n\t'Chupapollas',\n\t'Chupetón',\n\t'concha',\n\t'Concha de tu madre',\n\t'Coño',\n\t'Coprofagía',\n\t'Culo',\n\t'Drogas',\n\t'Esperma',\n\t'Fiesta de salchichas',\n\t'Follador',\n\t'Follar',\n\t'Gilipichis',\n\t'Gilipollas',\n\t'Hacer una paja',\n\t'Haciendo el amor',\n\t'Heroína',\n\t'Hija de puta',\n\t'Hijaputa',\n\t'Hijo de puta',\n\t'Hijoputa',\n\t'Idiota',\n\t'Imbécil',\n\t'infierno',\n\t'Jilipollas',\n\t'Kapullo',\n\t'Lameculos',\n\t'Maciza',\n\t'Macizorra',\n\t'maldito',\n\t'Mamada',\n\t'Marica',\n\t'Maricón',\n\t'Mariconazo',\n\t'martillo',\n\t'Mierda',\n\t'Nazi',\n\t'Orina',\n\t'Pedo',\n\t'Pervertido',\n\t'Pezón',\n\t'Pinche',\n\t'Prostituta',\n\t'Puta',\n\t'Racista',\n\t'Ramera',\n\t'Sádico',\n\t'Semen',\n\t'Sexo',\n\t'Sexo oral',\n\t'Soplagaitas',\n\t'Soplapollas',\n\t'Tetas grandes',\n\t'Tía buena',\n\t'Travesti',\n\t'Trio',\n\t'Verga',\n\t'vete a la mierda',\n\t'Vulva',\n\t'آب کیر',\n\t'ارگاسم',\n\t'برهنه',\n\t'پورن',\n\t'پورنو',\n\t'تجاوز',\n\t'تخمی',\n\t'جق',\n\t'جقی',\n\t'جلق',\n\t'جنده',\n\t'چوچول',\n\t'حشر',\n\t'حشری',\n\t'داف',\n\t'دودول',\n\t'ساک زدن',\n\t'سکس',\n\t'سکس کردن',\n\t'سکسی',\n\t'سوپر',\n\t'شق کردن',\n\t'شهوت',\n\t'شهوتی',\n\t'شونبول',\n\t'فیلم سوپر',\n\t'کس',\n\t'کس دادن',\n\t'کس کردن',\n\t'کسکش',\n\t'کوس',\n\t'کون',\n\t'کون دادن',\n\t'کون کردن',\n\t'کونکش',\n\t'کونی',\n\t'کیر',\n\t'کیری',\n\t'لاپا',\n\t'لاپایی',\n\t'لاشی',\n\t'لخت',\n\t'لش',\n\t'منی',\n\t'هرزه',\n\t'alfred nussi',\n\t'bylsiä',\n\t'haahka',\n\t'haista paska',\n\t'haista vittu',\n\t'hatullinen',\n\t'helvetisti',\n\t'hevonkuusi',\n\t'hevonpaska',\n\t'hevonperse',\n\t'hevonvittu',\n\t'hevonvitunperse',\n\t'hitosti',\n\t'hitto',\n\t'huorata',\n\t'hässiä',\n\t'juosten kustu',\n\t'jutku',\n\t'jutsku',\n\t'jätkä',\n\t'kananpaska',\n\t'koiranpaska',\n\t'kuin esterin perseestä',\n\t'kulli',\n\t'kullinluikaus',\n\t'kuppainen',\n\t'kusaista',\n\t'kuseksia',\n\t'kusettaa',\n\t'kusi',\n\t'kusipää',\n\t'kusta',\n\t'kyrpiintynyt',\n\t'kyrpiintyä',\n\t'kyrpiä',\n\t'kyrpä',\n\t'kyrpänaama',\n\t'kyrvitys',\n\t'lahtari',\n\t'lutka',\n\t'molo',\n\t'molopää',\n\t'mulkero',\n\t'mulkku',\n\t'mulkvisti',\n\t'muna',\n\t'munapää',\n\t'munaton',\n\t'mutakuono',\n\t'mutiainen',\n\t'naida',\n\t'nainti',\n\t'narttu',\n\t'neekeri',\n\t'nekru',\n\t'nuolla persettä',\n\t'nussia',\n\t'nussija',\n\t'nussinta',\n\t'paljaalla',\n\t'palli',\n\t'pallit',\n\t'paneskella',\n\t'panettaa',\n\t'panna',\n\t'pano',\n\t'pantava',\n\t'paska',\n\t'paskainen',\n\t'paskamainen',\n\t'paskanmarjat',\n\t'paskantaa',\n\t'paskapuhe',\n\t'paskapää',\n\t'paskattaa',\n\t'paskiainen',\n\t'paskoa',\n\t'pehko',\n\t'pentele',\n\t'perkele',\n\t'perkeleesti',\n\t'persaukinen',\n\t'perse',\n\t'perseennuolija',\n\t'perseet olalla',\n\t'persereikä',\n\t'perseääliö',\n\t'persläpi',\n\t'perspano',\n\t'persvako',\n\t'pilkunnussija',\n\t'pillu',\n\t'pillut',\n\t'pipari',\n\t'piru',\n\t'pistää',\n\t'pyllyvako',\n\t'reikä',\n\t'reva',\n\t'ripsipiirakka',\n\t'runkata',\n\t'runkkari',\n\t'runkkaus',\n\t'runkku',\n\t'ryssä',\n\t'rättipää',\n\t'saatanasti',\n\t'suklaaosasto',\n\t'tavara',\n\t'toosa',\n\t'tuhkaluukku',\n\t'tumputtaa',\n\t'turpasauna',\n\t'tussu',\n\t'tussukka',\n\t'tussut',\n\t'vakipano',\n\t'vetää käteen',\n\t'viiksi',\n\t'vittu',\n\t'vittuilla',\n\t'vittuilu',\n\t'vittumainen',\n\t'vittuuntua',\n\t'vittuuntunut',\n\t'vitun',\n\t'vitusti',\n\t'vituttaa',\n\t'vitutus',\n\t'äpärä',\n\t'baiser',\n\t'bander',\n\t'bigornette',\n\t'bite',\n\t'bitte',\n\t'bloblos',\n\t'bosser',\n\t'bourré',\n\t'bourrée',\n\t'brackmard',\n\t'branlage',\n\t'branler',\n\t'branlette',\n\t'branleur',\n\t'branleuse',\n\t'brouter le cresson',\n\t'cailler',\n\t'chatte',\n\t'chiasse',\n\t'chier',\n\t'chiottes',\n\t'clito',\n\t'con',\n\t'connard',\n\t'connasse',\n\t'conne',\n\t'couilles',\n\t'cramouille',\n\t'cul',\n\t'déconne',\n\t'déconner',\n\t'drague',\n\t'emmerdant',\n\t'emmerder',\n\t'emmerdeur',\n\t'emmerdeuse',\n\t'enculé',\n\t'enculée',\n\t'enculeur',\n\t'enculeurs',\n\t'enfoiré',\n\t'enfoirée',\n\t'étron',\n\t'fille de pute',\n\t'fils de pute',\n\t'folle',\n\t'foutre',\n\t'gerbe',\n\t'gerber',\n\t'gouine',\n\t'grande folle',\n\t'grogniasse',\n\t'gueule',\n\t'jouir',\n\t'la putain de ta mère',\n\t'MALPT',\n\t'ménage à trois',\n\t'merde',\n\t'merdeuse',\n\t'merdeux',\n\t'meuf',\n\t'nègre',\n\t'nique ta mère',\n\t'nique ta race',\n\t'palucher',\n\t'pédale',\n\t'pédé',\n\t'péter',\n\t'pipi',\n\t'pouffiasse',\n\t'pousse-crotte',\n\t'putain',\n\t'pute',\n\t'ramoner',\n\t'sac à merde',\n\t'salaud',\n\t'salope',\n\t'suce',\n\t'tapette',\n\t'teuf',\n\t'tringler',\n\t'trique',\n\t'trou du cul',\n\t'turlute',\n\t'veuve',\n\t'zigounette',\n\t'zizi',\n\t'aand',\n\t'aandu',\n\t'balatkar',\n\t'beti chod',\n\t'bhadva',\n\t'bhadve',\n\t'bhandve',\n\t'bhootni ke',\n\t'bhosad',\n\t'bhosadi ke',\n\t'boobe',\n\t'chakke',\n\t'chinaal',\n\t'chinki',\n\t'chod',\n\t'chodu',\n\t'chodu bhagat',\n\t'chooche',\n\t'choochi',\n\t'choot',\n\t'choot ke baal',\n\t'chootia',\n\t'chootiya',\n\t'chuche',\n\t'chuchi',\n\t'chudai khanaa',\n\t'chudan chudai',\n\t'chut',\n\t'chut ke baal',\n\t'chut ke dhakkan',\n\t'chut maarli',\n\t'chutad',\n\t'chutadd',\n\t'chutan',\n\t'chutia',\n\t'chutiya',\n\t'gaand',\n\t'gaandfat',\n\t'gaandmasti',\n\t'gaandufad',\n\t'gandu',\n\t'gashti',\n\t'gasti',\n\t'ghassa',\n\t'ghasti',\n\t'harami',\n\t'haramzade',\n\t'hawas',\n\t'hawas ke pujari',\n\t'hijda',\n\t'hijra',\n\t'jhant',\n\t'jhant chaatu',\n\t'jhant ke baal',\n\t'jhantu',\n\t'kamine',\n\t'kaminey',\n\t'kanjar',\n\t'kutta',\n\t'kutta kamina',\n\t'kutte ki aulad',\n\t'kutte ki jat',\n\t'kuttiya',\n\t'loda',\n\t'lodu',\n\t'lund',\n\t'lund choos',\n\t'lund khajoor',\n\t'lundtopi',\n\t'lundure',\n\t'maa ki chut',\n\t'maal',\n\t'madar chod',\n\t'mooh mein le',\n\t'mutth',\n\t'najayaz',\n\t'najayaz aulaad',\n\t'najayaz paidaish',\n\t'paki',\n\t'pataka',\n\t'patakha',\n\t'raand',\n\t'randi',\n\t'saala',\n\t'saala kutta',\n\t'saali kutti',\n\t'saali randi',\n\t'suar',\n\t'suar ki aulad',\n\t'tatte',\n\t'tatti',\n\t'teri maa ka bhosada',\n\t'teri maa ka boba chusu',\n\t'teri maa ki chut',\n\t'tharak',\n\t'tharki',\n\t'balfasz',\n\t'balfaszok',\n\t'balfaszokat',\n\t'balfaszt',\n\t'barmok',\n\t'barmokat',\n\t'barmot',\n\t'barom',\n\t'baszik',\n\t'bazmeg',\n\t'buksza',\n\t'bukszák',\n\t'bukszákat',\n\t'bukszát',\n\t'búr',\n\t'búrok',\n\t'csöcs',\n\t'csöcsök',\n\t'csöcsöket',\n\t'csöcsöt',\n\t'fasz',\n\t'faszfej',\n\t'faszfejek',\n\t'faszfejeket',\n\t'faszfejet',\n\t'faszok',\n\t'faszokat',\n\t'faszt',\n\t'fing',\n\t'fingok',\n\t'fingokat',\n\t'fingot',\n\t'franc',\n\t'francok',\n\t'francokat',\n\t'francot',\n\t'geci',\n\t'gecibb',\n\t'gecik',\n\t'geciket',\n\t'gecit',\n\t'kibaszott',\n\t'kibaszottabb',\n\t'kúr',\n\t'kurafi',\n\t'kurafik',\n\t'kurafikat',\n\t'kurafit',\n\t'kurvák',\n\t'kurvákat',\n\t'kurvát',\n\t'leggecibb',\n\t'legkibaszottabb',\n\t'legszarabb',\n\t'marha',\n\t'marhák',\n\t'marhákat',\n\t'marhát',\n\t'megdöglik',\n\t'pele',\n\t'pelék',\n\t'picsa',\n\t'picsákat',\n\t'picsát',\n\t'pina',\n\t'pinák',\n\t'pinákat',\n\t'pinát',\n\t'pofa',\n\t'pofákat',\n\t'pofát',\n\t'pöcs',\n\t'pöcsök',\n\t'pöcsöket',\n\t'pöcsöt',\n\t'punci',\n\t'puncik',\n\t'segg',\n\t'seggek',\n\t'seggeket',\n\t'segget',\n\t'seggfej',\n\t'seggfejek',\n\t'seggfejeket',\n\t'seggfejet',\n\t'szajha',\n\t'szajhák',\n\t'szajhákat',\n\t'szajhát',\n\t'szar',\n\t'szarabb',\n\t'szarik',\n\t'szarok',\n\t'szarokat',\n\t'szart',\n\t'allupato',\n\t'ammucchiata',\n\t'anale',\n\t'arrapato',\n\t'arrusa',\n\t'arruso',\n\t'assatanato',\n\t'bagascia',\n\t'bagassa',\n\t'bagnarsi',\n\t'baldracca',\n\t'balle',\n\t'battere',\n\t'battona',\n\t'belino',\n\t'biga',\n\t'bocchinara',\n\t'bocchino',\n\t'bofilo',\n\t'boiata',\n\t'bordello',\n\t'brinca',\n\t'bucaiolo',\n\t'budiùlo',\n\t'buona donna',\n\t'busone',\n\t'cacca',\n\t'caccati in mano e prenditi a schiaffi',\n\t'caciocappella',\n\t'cadavere',\n\t'cagare',\n\t'cagata',\n\t'cagna',\n\t'cammello',\n\t'cappella',\n\t'carciofo',\n\t'carità',\n\t'casci',\n\t'cazzata',\n\t'cazzimma',\n\t'cazzo',\n\t'checca',\n\t'chiappa',\n\t'chiavare',\n\t'chiavata',\n\t'ciospo',\n\t'ciucciami il cazzo',\n\t'coglione',\n\t'coglioni',\n\t'cornuto',\n\t'cozza',\n\t'culattina',\n\t'culattone',\n\t'di merda',\n\t'ditalino',\n\t'duro',\n\t'fare unaŠ',\n\t'fava',\n\t'femminuccia',\n\t'fica',\n\t'figa',\n\t'figlio di buona donna',\n\t'figlio di puttana',\n\t'figone',\n\t'finocchio',\n\t'fottere',\n\t'fottersi',\n\t'fracicone',\n\t'fregna',\n\t'frocio',\n\t'froscio',\n\t'fuori come un balcone',\n\t'goldone',\n\t'grilletto',\n\t'guanto',\n\t'guardone',\n\t'incazzarsi',\n\t'incoglionirsi',\n\t'ingoio',\n\t\"l'arte bolognese\",\n\t'leccaculo',\n\t'lecchino',\n\t'lofare',\n\t'loffa',\n\t'loffare',\n\t'lumaca',\n\t'manico',\n\t'mannaggia',\n\t'merda',\n\t'merdata',\n\t'merdoso',\n\t'mignotta',\n\t'minchia',\n\t'minchione',\n\t'mona',\n\t'monta',\n\t'montare',\n\t'mussa',\n\t'nave scuola',\n\t'nerchia',\n\t'nudo',\n\t'padulo',\n\t'palle',\n\t'palloso',\n\t'patacca',\n\t'patonza',\n\t'pecorina',\n\t'pesce',\n\t'picio',\n\t'pincare',\n\t'pipa',\n\t'pippone',\n\t'pirla',\n\t'pisciare',\n\t'piscio',\n\t'pisello',\n\t'pistola',\n\t'pistolotto',\n\t'pomiciare',\n\t'pompa',\n\t'pompino',\n\t'porca',\n\t'porca madonna',\n\t'porca miseria',\n\t'porca puttana',\n\t'porco due',\n\t'porco zio',\n\t'potta',\n\t'puppami',\n\t'puttana',\n\t'quaglia',\n\t'recchione',\n\t'regina',\n\t'rincoglionire',\n\t'rizzarsi',\n\t'rompiballe',\n\t'ruffiano',\n\t'sbattere',\n\t'sbattersi',\n\t'sborra',\n\t'sborrata',\n\t'sborrone',\n\t'sbrodolata',\n\t'scopare',\n\t'scopata',\n\t'scorreggiare',\n\t'sega',\n\t'slinguare',\n\t'slinguata',\n\t'smandrappata',\n\t'soccia',\n\t'socmel',\n\t'sorca',\n\t'spagnola',\n\t'spompinare',\n\t'sticchio',\n\t'stronza',\n\t'stronzata',\n\t'stronzo',\n\t'succhiami',\n\t'sveltina',\n\t'sverginare',\n\t'tarzanello',\n\t'terrone',\n\t'testa di cazzo',\n\t'tette',\n\t'tirare',\n\t'topa',\n\t'troia',\n\t'trombare',\n\t'uccello',\n\t'vacca',\n\t'vaffanculo',\n\t'vangare',\n\t'venire',\n\t'zinne',\n\t'zio cantante',\n\t'zoccola',\n\t'3p',\n\t'g スポット',\n\t's ＆ m',\n\t'sm',\n\t'sm女王',\n\t'xx',\n\t'アジアのかわいい女の子',\n\t'アスホール',\n\t'アナリングス',\n\t'アナル',\n\t'いたずら',\n\t'イラマチオ',\n\t'ウェブカメラ',\n\t'エクスタシー',\n\t'エスコート',\n\t'エッチ',\n\t'エロティズム',\n\t'エロティック',\n\t'オーガズム',\n\t'オカマ',\n\t'おしっこ',\n\t'おしり',\n\t'オシリ',\n\t'おしりのあな',\n\t'おっぱい',\n\t'オッパイ',\n\t'オナニー',\n\t'オマンコ',\n\t'おもらし',\n\t'お尻',\n\t'カーマスートラ',\n\t'カント',\n\t'クリトリス',\n\t'グループ・セックス',\n\t'グロ',\n\t'クンニリングス',\n\t'ゲイ・セックス',\n\t'ゲイの男性',\n\t'ゲイボーイ',\n\t'ゴールデンシャワー',\n\t'コカイン',\n\t'ゴックン',\n\t'サディズム',\n\t'しばり',\n\t'スウィンガー',\n\t'スカートの中',\n\t'スカトロ',\n\t'ストラップオン',\n\t'ストリップ劇場',\n\t'スラット',\n\t'スリット',\n\t'セクシーな',\n\t'セクシーな 10 代',\n\t'セックス',\n\t'ソドミー',\n\t'ちんこ',\n\t'ディープ・スロート',\n\t'ディック',\n\t'ディルド',\n\t'デートレイプ',\n\t'デブ',\n\t'テレフォンセックス',\n\t'ドッグスタイル',\n\t'トップレス',\n\t'なめ',\n\t'ニガー',\n\t'ヌード',\n\t'ネオ・ナチ',\n\t'ハードコア',\n\t'パイパン',\n\t'バイブレーター',\n\t'バック・スタイル',\n\t'パンティー',\n\t'ビッチ',\n\t'ファック',\n\t'ファンタジー',\n\t'フィスト',\n\t'フェティッシュ',\n\t'フェラチオ',\n\t'ふたなり',\n\t'ぶっかけ',\n\t'フック',\n\t'プリンス アルバート ピアス',\n\t'プレイボーイ',\n\t'ベアバック',\n\t'ペニス',\n\t'ペニスバンド',\n\t'ボーイズラブ',\n\t'ボールギャグ',\n\t'ボールを蹴る',\n\t'ぽっちゃり',\n\t'ホモ',\n\t'ポルノ',\n\t'ポルノグラフィー',\n\t'ボンテージ',\n\t'マザー・ファッカー',\n\t'マスターベーション',\n\t'まんこ',\n\t'やおい',\n\t'やりまん',\n\t'ユダヤ人',\n\t'ラティーナ',\n\t'ラバー',\n\t'ランジェリー',\n\t'レイプ',\n\t'レズビアン',\n\t'ローター',\n\t'ロリータ',\n\t'淫乱',\n\t'陰毛',\n\t'革抑制',\n\t'騎上位',\n\t'巨根',\n\t'巨乳',\n\t'強姦犯',\n\t'玉なめ',\n\t'玉舐め',\n\t'緊縛',\n\t'近親相姦',\n\t'嫌い',\n\t'後背位',\n\t'合意の性交',\n\t'拷問',\n\t'殺し方',\n\t'殺人事件',\n\t'殺人方法',\n\t'支配',\n\t'児童性虐待',\n\t'自己愛性',\n\t'射精',\n\t'手コキ',\n\t'獣姦',\n\t'女の子',\n\t'女王様',\n\t'女子高生',\n\t'女装',\n\t'新しいポルノ',\n\t'人妻',\n\t'人種',\n\t'性交',\n\t'正常位',\n\t'生殖器',\n\t'精液',\n\t'挿入',\n\t'足フェチ',\n\t'足を広げる',\n\t'大陰唇',\n\t'脱衣',\n\t'茶色のシャワー',\n\t'中出し',\n\t'潮吹き女',\n\t'潮吹き男性',\n\t'直腸',\n\t'剃毛',\n\t'貞操帯',\n\t'奴隷',\n\t'二穴',\n\t'乳首',\n\t'尿道プレイ',\n\t'覗き',\n\t'売春婦',\n\t'縛り',\n\t'噴出',\n\t'糞',\n\t'糞尿愛好症',\n\t'糞便',\n\t'平手打ち',\n\t'変態',\n\t'勃起する',\n\t'夢精',\n\t'毛深い',\n\t'誘惑',\n\t'幼児',\n\t'幼児性愛者',\n\t'裸',\n\t'裸の女性',\n\t'乱交',\n\t'両性',\n\t'両性具有',\n\t'両刀',\n\t'輪姦',\n\t'卍',\n\t'宦官',\n\t'肛門',\n\t'膣',\n\t'강간',\n\t'개새끼',\n\t'개자식',\n\t'개좆',\n\t'개차반',\n\t'거유',\n\t'계집년',\n\t'고자',\n\t'근친',\n\t'노모',\n\t'니기미',\n\t'뒤질래',\n\t'딸딸이',\n\t'때씹',\n\t'또라이',\n\t'뙤놈',\n\t'로리타',\n\t'망가',\n\t'몰카',\n\t'미친',\n\t'미친새끼',\n\t'바바리맨',\n\t'변태',\n\t'병신',\n\t'보지',\n\t'불알',\n\t'빠구리',\n\t'사까시',\n\t'섹스',\n\t'스와핑',\n\t'쌍놈',\n\t'씨발',\n\t'씨발놈',\n\t'씨팔',\n\t'씹',\n\t'씹물',\n\t'씹빨',\n\t'씹새끼',\n\t'씹알',\n\t'씹창',\n\t'씹팔',\n\t'암캐',\n\t'애자',\n\t'야동',\n\t'야사',\n\t'야애니',\n\t'엄창',\n\t'에로',\n\t'염병',\n\t'옘병',\n\t'유모',\n\t'육갑',\n\t'은꼴',\n\t'자위',\n\t'자지',\n\t'잡년',\n\t'종간나',\n\t'좆',\n\t'좆만',\n\t'죽일년',\n\t'쥐좆',\n\t'직촬',\n\t'짱깨',\n\t'쪽바리',\n\t'창녀',\n\t'포르노',\n\t'하드코어',\n\t'호로',\n\t'화냥년',\n\t'후레아들',\n\t'후장',\n\t'희쭈그리',\n\t'aardappels afgieteng',\n\t'achter het raam zitten',\n\t'afberen',\n\t'aflebberen',\n\t'afrossen',\n\t'afrukken',\n\t'aftrekken',\n\t'afwerkplaats',\n\t'afzeiken',\n\t'afzuigen',\n\t'anderhalve man en een paardekop',\n\t'anita',\n\t'asbak',\n\t'aso',\n\t'bagger schijten',\n\t'balen',\n\t'bedonderen',\n\t'befborstelg',\n\t'beffen',\n\t'bekken',\n\t'belazeren',\n\t'besodemieterd zijn',\n\t'besodemieteren',\n\t'beurt',\n\t'boemelen',\n\t'boerelul',\n\t'boerenpummelg',\n\t'bokkelul',\n\t'botergeil',\n\t'broekhoesten',\n\t'brugpieperg',\n\t'buffelen',\n\t'buiten de pot piesen',\n\t\"da's kloten van de bok\",\n\t'de ballen',\n\t'de hoer spelen',\n\t'de hond uitlaten',\n\t'de koffer induiken',\n\t'delg',\n\t'de pijp aan maarten geven',\n\t'de pijp uitgaan',\n\t'dombo',\n\t'draaikontg',\n\t'driehoog achter wonen',\n\t'drolg',\n\t'drooggeiler',\n\t'droogkloot',\n\t'een beurt geven',\n\t'een nummertje maken',\n\t'een wip maken',\n\t'eikel',\n\t'engerd',\n\t'flamoes',\n\t'flikken',\n\t'flikker',\n\t'gadverdamme',\n\t'galbak',\n\t'gat',\n\t'gedoogzone',\n\t'geilneef',\n\t'gesodemieter',\n\t'godverdomme',\n\t'graftak',\n\t'gras maaien',\n\t'gratenkutg',\n\t'greppeldel',\n\t'griet',\n\t'hoempert',\n\t'hoerenbuurt',\n\t'hoerenloper',\n\t'hoerig',\n\t'hol',\n\t'hufter',\n\t'huisdealer',\n\t'johny',\n\t'kanen',\n\t'kettingzeugg',\n\t'klaarkomen',\n\t'klerebeer',\n\t'klojo',\n\t'klooien',\n\t'klootjesvolk',\n\t'klootoog',\n\t'klootzak',\n\t'kloten',\n\t'knor',\n\t'kontg',\n\t'kontneuken',\n\t'krentekakker',\n\t'kut',\n\t'kuttelikkertje',\n\t'kwakkieg',\n\t'liefdesgrot',\n\t'lul',\n\t'lul-de-behanger',\n\t'lulhannes',\n\t'mafketel',\n\t'matennaaierg',\n\t'matje',\n\t'mof',\n\t'mutsg',\n\t'naaien',\n\t'naakt',\n\t'neuken',\n\t'neukstier',\n\t'nicht',\n\t'oetlul',\n\t'opgeilen',\n\t'opkankeren',\n\t'oprotten',\n\t'opsodemieteren',\n\t\"op z'n hondjes\",\n\t\"op z'n sodemieter geven\",\n\t'opzouten',\n\t'ouwehoer',\n\t'ouwehoeren',\n\t'ouwe rukker',\n\t'paal',\n\t'paardelul',\n\t'palen',\n\t'penozeg',\n\t'piesen',\n\t'pijpbekkieg',\n\t'pijpen',\n\t'pleurislaaier',\n\t'poep',\n\t'poepen',\n\t'poot',\n\t'portiekslet',\n\t'pot',\n\t'potverdorie',\n\t'publiciteitsgeil',\n\t'raaskallen',\n\t'reet',\n\t'reetridder',\n\t'reet trappen, voor zijn',\n\t'remsporeng',\n\t'reutelen',\n\t'rothoer',\n\t'rotzak',\n\t'rukhond',\n\t'rukken',\n\t'schatje',\n\t'schijt',\n\t'schijten',\n\t'schoft',\n\t'schuinsmarcheerder',\n\t'slempen',\n\t'sletg',\n\t'sletterig',\n\t'slik mijn zaad',\n\t'snolg',\n\t'spuiten',\n\t'standje',\n\t'standje-69g',\n\t'stoephoer',\n\t'stootje',\n\t'strontg',\n\t'sufferdg',\n\t'tapijtnek',\n\t'teefg',\n\t'temeier',\n\t'teringlijer',\n\t'toeter',\n\t'tongzoeng',\n\t'triootjeg',\n\t'trottoir prostituée',\n\t'trottoirteef',\n\t'vergallen',\n\t'verkloten',\n\t'verneuken',\n\t'viespeuk',\n\t'vingeren',\n\t'vleesroos',\n\t'voor jan lul',\n\t'voor jan-met-de-korte-achternaam',\n\t'watje',\n\t'welzijnsmafia',\n\t'wijf',\n\t'wippen',\n\t'wuftje',\n\t'zaadje',\n\t'zakkenwasser',\n\t'zeiken',\n\t'zeiker',\n\t'zuigen',\n\t'zuiplap',\n\t'drittsekk',\n\t'faen i helvete',\n\t'fitte',\n\t'jævla',\n\t'kuk',\n\t'kukene',\n\t'kuker',\n\t'pikk',\n\t'sotrør',\n\t'ståpikk',\n\t'ståpikkene',\n\t'ståpikker',\n\t'burdel',\n\t'burdelmama',\n\t'chujnia',\n\t'ciota',\n\t'cyc',\n\t'dmuchać',\n\t'do kurwy nędzy',\n\t'dupa',\n\t'dupek',\n\t'duperele',\n\t'dziwka',\n\t'fiut',\n\t'gówno',\n\t'gówno prawda',\n\t'huj',\n\t'jajco',\n\t'jajeczko',\n\t'jajko',\n\t'jajo',\n\t'ja pierdolę',\n\t'jebać',\n\t'jebany',\n\t'kurwa',\n\t'kurwy',\n\t'kutafon',\n\t'kutas',\n\t'lizać pałę',\n\t'obciągać chuja',\n\t'obciągać fiuta',\n\t'obciągać loda',\n\t'pieprzyć',\n\t'pierdolec',\n\t'pierdolić',\n\t'pierdolnięty',\n\t'pierdoła',\n\t'pierdzieć',\n\t'pojeb',\n\t'popierdolony',\n\t'robic loda',\n\t'ruchać',\n\t'rzygać',\n\t'skurwysyn',\n\t'sraczka',\n\t'srać',\n\t'suka',\n\t'syf',\n\t'wkurwiać',\n\t'zajebisty',\n\t'aborto',\n\t'amador',\n\t'aranha',\n\t'ariano',\n\t'balalao',\n\t'bicha',\n\t'biscate',\n\t'bissexual',\n\t'boceta',\n\t'bosta',\n\t'braulio de borracha',\n\t'bumbum',\n\t'burro',\n\t'cabrao',\n\t'cacete',\n\t'cagar',\n\t'camisinha',\n\t'caralho',\n\t'cerveja',\n\t'chochota',\n\t'chupar',\n\t'cocaína',\n\t'colhoes',\n\t'comer',\n\t'cona',\n\t'consolo',\n\t'corno',\n\t'cu',\n\t'dar o rabo',\n\t'dum raio',\n\t'esporra',\n\t'fecal',\n\t'filho da puta',\n\t'foda',\n\t'foda-se',\n\t'foder',\n\t'frango assado',\n\t'gozar',\n\t'grelho',\n\t'heterosexual',\n\t'homem gay',\n\t'homoerótico',\n\t'homosexual',\n\t'inferno',\n\t'lésbica',\n\t'lolita',\n\t'mama',\n\t'paneleiro',\n\t'passar um cheque',\n\t'pau',\n\t'peidar',\n\t'pinto',\n\t'porra',\n\t'puta que pariu',\n\t'puta que te pariu',\n\t'queca',\n\t'sacanagem',\n\t'saco',\n\t'torneira',\n\t'transar',\n\t'vai-te foder',\n\t'vai tomar no cu',\n\t'veado',\n\t'vibrador',\n\t'xana',\n\t'xochota',\n\t'bychara',\n\t'byk',\n\t'chernozhopyi',\n\t\"dolboy'eb\",\n\t'ebalnik',\n\t'ebalo',\n\t\"ebalom sch'elkat\",\n\t'gol',\n\t'mudack',\n\t'opizdenet',\n\t\"osto'eblo\",\n\t\"ostokhuitel'no\",\n\t\"ot'ebis\",\n\t'otmudohat',\n\t'otpizdit',\n\t'otsosi',\n\t'padlo',\n\t'pedik',\n\t'perdet',\n\t'petuh',\n\t'pidar gnoinyj',\n\t'pizdato',\n\t'pizdatyi',\n\t\"piz'det\",\n\t'pizdetc',\n\t\"pizdoi nakryt'sja\",\n\t\"pizd'uk\",\n\t'piz`dyulina',\n\t\"podi ku'evo\",\n\t'poeben',\n\t\"po'imat' na konchik\",\n\t\"po'iti posrat\",\n\t'po khuy',\n\t'poluchit pizdy',\n\t'pososi moyu konfetku',\n\t'prissat',\n\t'proebat',\n\t\"promudobl'adsksya pizdopro'ebina\",\n\t'propezdoloch',\n\t'prosrat',\n\t'raspeezdeyi',\n\t'raspizdatyi',\n\t\"raz'yebuy\",\n\t\"raz'yoba\",\n\t\"s'ebat'sya\",\n\t'shalava',\n\t'styervo',\n\t'sukin syn',\n\t'svodit posrat',\n\t'svoloch',\n\t\"trakhat'sya\",\n\t'trimandoblydskiy pizdoproyob',\n\t\"ubl'yudok\",\n\t'uboy',\n\t\"u'ebitsche\",\n\t\"vafl'a\",\n\t'vafli lovit',\n\t'v pizdu',\n\t'vyperdysh',\n\t'vzdrochennyi',\n\t'yeb vas',\n\t\"za'ebat\",\n\t'zaebis',\n\t'zalupa',\n\t'zalupat',\n\t'zasranetc',\n\t'zassat',\n\t\"zlo'ebuchy\",\n\t'бардак',\n\t'бздёнок',\n\t'блядки',\n\t'блядовать',\n\t'блядство',\n\t'блядь',\n\t'бугор',\n\t'во пизду',\n\t'встать раком',\n\t'выёбываться',\n\t'гандон',\n\t'говно',\n\t'говнюк',\n\t'голый',\n\t'дать пизды',\n\t'дерьмо',\n\t'дрочить',\n\t'другой дразнится',\n\t'ёбарь',\n\t'ебать',\n\t'ебать-копать',\n\t'ебло',\n\t'ебнуть',\n\t'ёб твою мать',\n\t'жопа',\n\t'жополиз',\n\t'играть на кожаной флейте',\n\t'измудохать',\n\t'каждый дрочит как он хочет',\n\t'какая разница',\n\t'как два пальца обоссать',\n\t'курите мою трубку',\n\t'лысого в кулаке гонять',\n\t'малофя',\n\t'манда',\n\t'мандавошка',\n\t'мент',\n\t'муда',\n\t'мудило',\n\t'мудозмон',\n\t'наебать',\n\t'наебениться',\n\t'наебнуться',\n\t'на фиг',\n\t'на хуй',\n\t'на хую вертеть',\n\t'на хуя',\n\t'нахуячиться',\n\t'невебенный',\n\t'не ебет',\n\t'ни за хуй собачу',\n\t'ни хуя',\n\t'обнаженный',\n\t'обоссаться можно',\n\t'один ебётся',\n\t'опесдол',\n\t'офигеть',\n\t'охуеть',\n\t'охуйтельно',\n\t'половое сношение',\n\t'секс',\n\t'сиски',\n\t'спиздить',\n\t'срать',\n\t'ссать',\n\t'траxать',\n\t'ты мне ваньку не валяй',\n\t'фига',\n\t'хапать',\n\t'хер с ней',\n\t'хер с ним',\n\t'хохол',\n\t'хрен',\n\t'хуёво',\n\t'хуёвый',\n\t'хуем груши околачивать',\n\t'хуеплет',\n\t'хуило',\n\t'хуиней страдать',\n\t'хуиня',\n\t'хуй',\n\t'хуйнуть',\n\t'хуй пинать',\n\t'arsle',\n\t'brutta',\n\t'discofitta',\n\t'dra åt helvete',\n\t'fan',\n\t'fitta',\n\t'fittig',\n\t'för helvete',\n\t'helvete',\n\t'hård',\n\t'jävlar',\n\t'knulla',\n\t'kuksås',\n\t'kötthuvud',\n\t'köttnacke',\n\t'moona',\n\t'moonade',\n\t'moonar',\n\t'moonat',\n\t'mutta',\n\t'olla',\n\t'pippa',\n\t'pitt',\n\t'prutt',\n\t'pök',\n\t'runka',\n\t'röv',\n\t'rövhål',\n\t'rövknulla',\n\t'satan',\n\t'skita',\n\t'skit ner dig',\n\t'skäggbiff',\n\t'snedfitta',\n\t'snefitta',\n\t'stake',\n\t'subba',\n\t'sås',\n\t'sätta på',\n\t'tusan',\n\t'กระดอ',\n\t'กระเด้า',\n\t'กระหรี่',\n\t'กะปิ',\n\t'กู',\n\t'ขี้',\n\t'ควย',\n\t'จิ๋ม',\n\t'จู๋',\n\t'เจ๊ก',\n\t'เจี๊ยว',\n\t'ดอกทอง',\n\t'ตอแหล',\n\t'ตูด',\n\t'น้ําแตก',\n\t'มึง',\n\t'แม่ง',\n\t'เย็ด',\n\t'รูตูด',\n\t'ล้างตู้เย็น',\n\t'ส้นตีน',\n\t'สัด',\n\t'เสือก',\n\t'หญิงชาติชั่ว',\n\t'หลั่ง',\n\t'ห่า',\n\t'หํา',\n\t'หี',\n\t'เหี้ย',\n\t'อมนกเขา',\n\t'ไอ้ควาย',\n\t\"ghuy'cha'\",\n\t\"QI'yaH\",\n\t\"Qu'vatlh\",\n\t'am',\n\t'amcığa',\n\t'amcığı',\n\t'amcığın',\n\t'amcık',\n\t'amcıklar',\n\t'amcıklara',\n\t'amcıklarda',\n\t'amcıklardan',\n\t'amcıkları',\n\t'amcıkların',\n\t'amcıkta',\n\t'amcıktan',\n\t'amı',\n\t'amlar',\n\t'çingene',\n\t'Çingenede',\n\t'Çingeneden',\n\t'Çingeneler',\n\t'Çingenelerde',\n\t'Çingenelerden',\n\t'Çingenelere',\n\t'Çingeneleri',\n\t'Çingenelerin',\n\t'Çingenenin',\n\t'Çingeneye',\n\t'Çingeneyi',\n\t'göt',\n\t'göte',\n\t'götler',\n\t'götlerde',\n\t'götlerden',\n\t'götlere',\n\t'götleri',\n\t'götlerin',\n\t'götte',\n\t'götten',\n\t'götü',\n\t'götün',\n\t'götveren',\n\t'götverende',\n\t'götverenden',\n\t'götverene',\n\t'götvereni',\n\t'götverenin',\n\t'götverenler',\n\t'götverenlerde',\n\t'götverenlerden',\n\t'götverenlere',\n\t'götverenleri',\n\t'götverenlerin',\n\t'kaltağa',\n\t'kaltağı',\n\t'kaltağın',\n\t'kaltak',\n\t'kaltaklar',\n\t'kaltaklara',\n\t'kaltaklarda',\n\t'kaltaklardan',\n\t'kaltakları',\n\t'kaltakların',\n\t'kaltakta',\n\t'kaltaktan',\n\t'orospu',\n\t'orospuda',\n\t'orospudan',\n\t'orospular',\n\t'orospulara',\n\t'orospularda',\n\t'orospulardan',\n\t'orospuları',\n\t'orospuların',\n\t'orospunun',\n\t'orospuya',\n\t'orospuyu',\n\t'otuz birci',\n\t'otuz bircide',\n\t'otuz birciden',\n\t'otuz birciler',\n\t'otuz bircilerde',\n\t'otuz bircilerden',\n\t'otuz bircilere',\n\t'otuz bircileri',\n\t'otuz bircilerin',\n\t'otuz bircinin',\n\t'otuz birciye',\n\t'otuz birciyi',\n\t'saksocu',\n\t'saksocuda',\n\t'saksocudan',\n\t'saksocular',\n\t'saksoculara',\n\t'saksocularda',\n\t'saksoculardan',\n\t'saksocuları',\n\t'saksocuların',\n\t'saksocunun',\n\t'saksocuya',\n\t'saksocuyu',\n\t'sıçmak',\n\t'sik',\n\t'sike',\n\t'siker sikmez',\n\t'siki',\n\t'sikilir sikilmez',\n\t'sikin',\n\t'sikler',\n\t'siklerde',\n\t'siklerden',\n\t'siklere',\n\t'sikleri',\n\t'siklerin',\n\t'sikmek',\n\t'sikmemek',\n\t'sikte',\n\t'sikten',\n\t'siktir',\n\t'siktirir siktirmez',\n\t'taşağa',\n\t'taşağı',\n\t'taşağın',\n\t'taşak',\n\t'taşaklar',\n\t'taşaklara',\n\t'taşaklarda',\n\t'taşaklardan',\n\t'taşakları',\n\t'taşakların',\n\t'taşakta',\n\t'taşaktan',\n\t'yarağa',\n\t'yarağı',\n\t'yarağın',\n\t'yarak',\n\t'yaraklar',\n\t'yaraklara',\n\t'yaraklarda',\n\t'yaraklardan',\n\t'yarakları',\n\t'yarakların',\n\t'yarakta',\n\t'yaraktan',\n\t'13.',\n\t'13点',\n\t'三级片',\n\t'下三烂',\n\t'下贱',\n\t'个老子的',\n\t'九游',\n\t'乳',\n\t'乳交',\n\t'乳头',\n\t'乳房',\n\t'乳波臀浪',\n\t'交配',\n\t'仆街',\n\t'他奶奶',\n\t'他奶奶的',\n\t'他奶娘的',\n\t'他妈',\n\t'他妈ㄉ王八蛋',\n\t'他妈地',\n\t'他妈的',\n\t'他娘',\n\t'他马的',\n\t'你个傻比',\n\t'你他马的',\n\t'你全家',\n\t'你奶奶的',\n\t'你她马的',\n\t'你妈',\n\t'你妈的',\n\t'你娘',\n\t'你娘卡好',\n\t'你娘咧',\n\t'你它妈的',\n\t'你它马的',\n\t'你是鸡',\n\t'你是鸭',\n\t'你马的',\n\t'做爱',\n\t'傻比',\n\t'傻逼',\n\t'册那',\n\t'军妓',\n\t'几八',\n\t'几叭',\n\t'几巴',\n\t'几芭',\n\t'刚度',\n\t'刚瘪三',\n\t'包皮',\n\t'十三点',\n\t'卖B',\n\t'卖比',\n\t'卖淫',\n\t'卵',\n\t'卵子',\n\t'双峰微颤',\n\t'口交',\n\t'口肯',\n\t'叫床',\n\t'吃屎',\n\t'后庭',\n\t'吹箫',\n\t'塞你公',\n\t'塞你娘',\n\t'塞你母',\n\t'塞你爸',\n\t'塞你老师',\n\t'塞你老母',\n\t'处女',\n\t'外阴',\n\t'大卵子',\n\t'大卵泡',\n\t'大鸡巴',\n\t'奶',\n\t'奶奶的熊',\n\t'奶子',\n\t'奸',\n\t'奸你',\n\t'她妈地',\n\t'她妈的',\n\t'她马的',\n\t'妈B',\n\t'妈个B',\n\t'妈个比',\n\t'妈个老比',\n\t'妈妈的',\n\t'妈比',\n\t'妈的',\n\t'妈的B',\n\t'妈逼',\n\t'妓',\n\t'妓女',\n\t'妓院',\n\t'妳她妈的',\n\t'妳妈的',\n\t'妳娘的',\n\t'妳老母的',\n\t'妳马的',\n\t'姘头',\n\t'姣西',\n\t'姦',\n\t'娘个比',\n\t'娘的',\n\t'婊子',\n\t'婊子养的',\n\t'嫖娼',\n\t'嫖客',\n\t'它妈地',\n\t'它妈的',\n\t'密洞',\n\t'射你',\n\t'小乳头',\n\t'小卵子',\n\t'小卵泡',\n\t'小瘪三',\n\t'小肉粒',\n\t'小骚比',\n\t'小骚货',\n\t'小鸡巴',\n\t'小鸡鸡',\n\t'屁眼',\n\t'屁股',\n\t'屄',\n\t'屌',\n\t'干x娘',\n\t'干七八',\n\t'干你',\n\t'干你妈',\n\t'干你娘',\n\t'干你老母',\n\t'干你良',\n\t'干妳妈',\n\t'干妳娘',\n\t'干妳老母',\n\t'干妳马',\n\t'干您娘',\n\t'干机掰',\n\t'干死CS',\n\t'干死GM',\n\t'干死你',\n\t'干死客服',\n\t'幹',\n\t'强奸',\n\t'强奸你',\n\t'性',\n\t'性器',\n\t'性无能',\n\t'性爱',\n\t'情色',\n\t'想上你',\n\t'懆您妈',\n\t'懆您娘',\n\t'懒8',\n\t'懒八',\n\t'懒叫',\n\t'懒教',\n\t'成人',\n\t'我操你祖宗十八代',\n\t'扒光',\n\t'打炮',\n\t'打飞机',\n\t'抽插',\n\t'招妓',\n\t'插你',\n\t'插死你',\n\t'撒尿',\n\t'操你',\n\t'操你全家',\n\t'操你奶奶',\n\t'操你妈',\n\t'操你娘',\n\t'操你祖宗',\n\t'操你老妈',\n\t'操你老母',\n\t'操妳',\n\t'操妳全家',\n\t'操妳妈',\n\t'操妳娘',\n\t'操妳祖宗',\n\t'操机掰',\n\t'操比',\n\t'操逼',\n\t'放荡',\n\t'日他娘',\n\t'日你',\n\t'日你妈',\n\t'日你老娘',\n\t'日你老母',\n\t'日批',\n\t'月经',\n\t'机八',\n\t'机巴',\n\t'机机歪歪',\n\t'杂种',\n\t'浪叫',\n\t'淫',\n\t'淫妇',\n\t'淫棍',\n\t'淫水',\n\t'淫秽',\n\t'淫荡',\n\t'淫西',\n\t'湿透的内裤',\n\t'激情',\n\t'灨你娘',\n\t'烂货',\n\t'烂逼',\n\t'爛',\n\t'狗屁',\n\t'狗日',\n\t'狗狼养的',\n\t'玉杵',\n\t'王八蛋',\n\t'瓜娃子',\n\t'瓜婆娘',\n\t'瓜批',\n\t'瘪三',\n\t'白烂',\n\t'白痴',\n\t'白癡',\n\t'祖宗',\n\t'私服',\n\t'笨蛋',\n\t'精子',\n\t'老二',\n\t'老味',\n\t'老母',\n\t'老瘪三',\n\t'老骚比',\n\t'老骚货',\n\t'肉壁',\n\t'肉棍子',\n\t'肉棒',\n\t'肉缝',\n\t'肏',\n\t'肛交',\n\t'肥西',\n\t'色情',\n\t'花柳',\n\t'荡妇',\n\t'賤',\n\t'贝肉',\n\t'贱B',\n\t'贱人',\n\t'贱货',\n\t'贼你妈',\n\t'赛你老母',\n\t'赛妳阿母',\n\t'赣您娘',\n\t'轮奸',\n\t'迷药',\n\t'逼',\n\t'逼样',\n\t'野鸡',\n\t'阳具',\n\t'阳萎',\n\t'阴唇',\n\t'阴户',\n\t'阴核',\n\t'阴毛',\n\t'阴茎',\n\t'阴道',\n\t'阴部',\n\t'雞巴',\n\t'靠北',\n\t'靠母',\n\t'靠爸',\n\t'靠背',\n\t'靠腰',\n\t'驶你公',\n\t'驶你娘',\n\t'驶你母',\n\t'驶你爸',\n\t'驶你老师',\n\t'驶你老母',\n\t'骚比',\n\t'骚货',\n\t'骚逼',\n\t'鬼公',\n\t'鸡8',\n\t'鸡八',\n\t'鸡叭',\n\t'鸡吧',\n\t'鸡奸',\n\t'鸡巴',\n\t'鸡芭',\n\t'鸡鸡',\n\t'龟儿子',\n\t'龟头'\n];\n"
  },
  {
    "path": "src/lib/helpers/chat/badwords.js",
    "content": "import { wordlist } from './badword-list';\n\nconst Badwords = {\n\t_filterWord(badword, stringToFilter) {\n\t\tconst wordExp = new RegExp(`\\\\b${badword.replace(/(\\W)/g, '\\\\$1')}\\\\b`, 'gi');\n\t\treturn wordExp.test(stringToFilter);\n\t},\n\t_isProfane(stringToFilter) {\n\t\tconst check = wordlist.filter((word) => this._filterWord(word, stringToFilter));\n\t\treturn check.length > 0 || false;\n\t},\n\t_replaceWord(string) {\n\t\tconst sensored = string.replace(/\\w/g, '*');\n\t\treturn sensored;\n\t},\n\n\thasBadword(string) {\n\t\treturn this._isProfane(string);\n\t},\n\n\tclean(string) {\n\t\tconst stringArray = string.split(/\\b/);\n\t\tconst replaced = stringArray.map((word) => {\n\t\t\treturn this._isProfane(word) ? this._replaceWord(word) : word;\n\t\t});\n\t\tconst delimiter = /\\b/.exec(string) ? /\\b/.exec(string)[0] : '';\n\t\tconst filteredWord = replaced.join(delimiter);\n\t\treturn filteredWord;\n\t}\n};\n\nexport default Badwords;\n\n"
  },
  {
    "path": "src/lib/helpers/chat/firebaseApp.js",
    "content": "import { initializeApp } from 'firebase/app';\nimport { initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';\nimport { getDatabase } from 'firebase/database';\nimport { v4 as uuidv4 } from 'uuid';\nimport { cookie } from '$lib/helpers/dataAPI/api-cookie';\nimport {\n\tAPI_KEY,\n\tAUTH_DOMAIN,\n\tBUCKET,\n\tMSG_SENDER_ID,\n\tDATABASE_URL,\n\tRECAPTCHA_PUBLIC_KEY\n} from '$lib/env';\n\nconst config = {\n\tapiKey: API_KEY,\n\tauthDomain: AUTH_DOMAIN,\n\tdatabaseURL: DATABASE_URL,\n\tstorageBucket: BUCKET,\n\tmessagingSenderId: MSG_SENDER_ID\n};\n\nconst app = initializeApp(config);\nconst db = getDatabase(app);\n\ninitializeAppCheck(app, {\n\tprovider: new ReCaptchaV3Provider(RECAPTCHA_PUBLIC_KEY),\n\tisTokenAutoRefreshEnabled: true\n});\n\nconst setCookieUuid = () => {\n\tconst uuid = uuidv4().split('-')[0];\n\tconst travelerID = `Traveler_${uuid}`;\n\tcookie.set('travelerID', travelerID);\n\treturn travelerID;\n};\n\nconst getCredential = async () => {\n\tconst currentUuid = cookie.get('travelerID');\n\tif (currentUuid) return currentUuid;\n\treturn setCookieUuid();\n};\n\nexport { getCredential, db };\n\n"
  },
  {
    "path": "src/lib/helpers/cssPosition.js",
    "content": "export const positionToStyle = (position) => {\n\tif (!position) return '';\n\tconst cssProps = ['width', 'height', 'top', 'bottom', 'left', 'right'];\n\tconst keyToChange = ['w', 'h', 't', 'b', 'l', 'r'];\n\tconst style = Object.keys(position).map((key) => {\n\t\tconst index = keyToChange.findIndex((v) => v === key);\n\t\tconst css = key.replace(key, cssProps[index]);\n\t\treturn `${css}:${position[key]}%`;\n\t});\n\treturn style.join(';');\n};\n\nconst getPropVal = (el, key) => {\n\tconst prop = getComputedStyle(el).getPropertyValue(key);\n\tconst num = prop.split('px')[0] || 0;\n\treturn parseFloat(num);\n};\n\nexport const getPercentagePosition = (zoomistImage, h = 0, w = 0) => {\n\t// Get Image Position in Percentage\n\tconst xPx = getPropVal(zoomistImage, '--translate-x');\n\tconst yPx = getPropVal(zoomistImage, '--translate-y');\n\tconst scale = getPropVal(zoomistImage, '--scale');\n\tconst x = (xPx / w) * 100;\n\tconst y = (yPx / h) * 100;\n\treturn { x, y, scale };\n};\n\nexport const getPxPosition = ({ x, y } = {}, h = 0, w = 0) => {\n\t// get PX value from PERCENTAGE\n\tconst X = !x ? null : (x / 100) * w;\n\tconst Y = !y ? null : (y / 100) * h;\n\treturn { x: X, y: Y };\n};\n\nexport const getCssVarPosition = ({ x, y, scale } = {}, h = 0, w = 0) => {\n\t// get PX value from PERCENTAGE\n\tconst X = !x ? '' : (x / 100) * w;\n\tconst Y = !y ? '' : (y / 100) * h;\n\n\t// Set CSS Variable\n\tconst varX = !X ? '' : `--translate-x:${X}px;`;\n\tconst varY = !Y ? '' : `--translate-y:${Y}px;`;\n\tconst varScale = !scale ? '' : `--scale:${scale};`;\n\treturn `${varX}${varY}${varScale}`;\n};\n"
  },
  {
    "path": "src/lib/helpers/currencies.js",
    "content": "import { currencies } from '$lib/data/pricelist.json';\nimport { pricelist } from '$lib/store/app-stores';\nimport { cookie } from './dataAPI/api-cookie';\nimport { checkLocale } from './i18n';\n\nexport const availableCurrencies = currencies.map(({ symbol, currency }) => ({ symbol, currency }));\nexport const formatNumber = (n) => n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\nexport const userCurrencies = {\n\tinit(currency = null) {\n\t\tconst { symbol, list, format } = this.checkUsedCurrency(currency);\n\t\tthis._symbol = symbol;\n\t\tthis._list = list;\n\t\tthis._format = format;\n\t\tconst { welkin, genesis } = list;\n\t\tconst prices = { genesis: {} };\n\n\t\tprices.welkin = this.formatPrice(welkin);\n\t\tObject.keys(genesis).forEach((key) => {\n\t\t\tprices.genesis[key] = this.formatPrice(genesis[key]);\n\t\t});\n\t\tpricelist.set(prices);\n\t},\n\n\tcheckUsedCurrency(curr) {\n\t\tconst used = curr || cookie.get('currency') || checkLocale();\n\t\tconst filtered = currencies.find(({ country, currency }) => {\n\t\t\tconst isCurrDetected = used === currency;\n\t\t\tconst isCountryAvailable = country.find((v) => used.toLocaleLowerCase().includes(v));\n\t\t\tconst isUsed = isCurrDetected || (used.length < 6 && isCountryAvailable);\n\t\t\treturn isUsed;\n\t\t});\n\t\treturn filtered || currencies.find(({ currency }) => currency === 'USD');\n\t},\n\n\tformatPrice(price) {\n\t\tconst decimal = price.toFixed(2).toString();\n\t\tconst formated = formatNumber(decimal);\n\t\treturn this._format.replace('{symbol}', this._symbol).replace('{nominal}', formated);\n\t},\n\n\tgetTotalSpend(totalPull) {\n\t\tconst pricePerUnit = this._list.genesis['60'] / 60;\n\t\tconst pullPrice = totalPull * 160 * pricePerUnit;\n\t\treturn this.formatPrice(pullPrice);\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/api-cookie.js",
    "content": "const _getAllCookies = () => {\n\tconst splitted = document.cookie.split('; ');\n\tconst cuuid = splitted.find((row) => row.startsWith(`WishSimulator=`));\n\treturn cuuid ? JSON.parse(cuuid.split('=')[1]) : {};\n};\n\nconst _setCookies = (value) => {\n\tconst stringToSet = JSON.stringify(value);\n\tconst d = new Date();\n\td.setTime(d.getTime() + 365 * 24 * 60 * 60 * 1000);\n\tlet expires = 'expires=' + d.toUTCString();\n\tdocument.cookie = `WishSimulator=${stringToSet};${expires};SameSite=Lax; Secure;path=/`;\n};\n\nexport const cookie = {\n\tget(cname) {\n\t\tconst result = _getAllCookies();\n\t\treturn result[cname];\n\t},\n\tset(cname, cvalue) {\n\t\tconst cookieNow = _getAllCookies();\n\t\tcookieNow[cname] = cvalue;\n\t\t_setCookies(cookieNow);\n\t},\n\tremove(cname) {\n\t\tconst cookieNow = _getAllCookies();\n\t\tdelete cookieNow[cname];\n\t\t_setCookies(cookieNow);\n\t},\n\n\tclean() {\n\t\tconst d = new Date();\n\t\td.setTime(d.getTime() - 1 * 24 * 60 * 60 * 1000);\n\t\tlet expires = 'expires=' + d.toUTCString();\n\t\tdocument.cookie = `WishSimulator=;${expires};SameSite=Lax; Secure;path=/`;\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/api-filesystem.js",
    "content": "import { AssetManager } from './api-indexeddb';\nimport {\n\tautoExport,\n\tfileData,\n\tfileHandle as storeHandle,\n\tsavingToSystem\n} from '$lib/store/filesystem-store';\nimport { browserDetect } from '../mobileDetect';\nimport { generateFileString, parseFileObj } from './export-import';\n\nexport const FSSupported = () => {\n\tconst { isSupported: browserSupported } = browserDetect();\n\tconst oldMethodSuppported = 'chooseFileSystemEntries' in window;\n\tconst newMethodSupported = 'showSaveFilePicker' in window;\n\treturn browserSupported && (oldMethodSuppported || newMethodSupported);\n};\n\nexport const calculateByteSize = (size) => {\n\tif (isNaN(size)) return '...B';\n\tconst mb = (size / (1024 * 1024)).toFixed(2);\n\treturn `${mb}MB`;\n};\n\nconst setFileStore = async (fileHandle) => {\n\tif (!fileHandle) return fileData.set({});\n\tconst { name, size, webkitRelativePath, lastModified } = await fileHandle.getFile();\n\tfileData.set({ name, size, webkitRelativePath, lastModified });\n};\n\nconst saveHandle = async (fileHandle) => {\n\tconst data = { key: 'savedFile', fileHandle };\n\tconst save = await AssetManager.put(data);\n\treturn save;\n};\n\nexport const readFileHandle = async () => {\n\tconst { fileHandle } = (await AssetManager.get('savedFile')) || {};\n\tif (!fileHandle) return null;\n\tfileData.set({ name: fileHandle.name });\n\tstoreHandle.set(fileHandle);\n};\n\nconst clearLocalFile = async () => {\n\tawait AssetManager.delete('savedFile');\n\tfileData.set({});\n\tautoExport.set(false);\n};\n\nexport const checkFileExist = async (fileHandle) => {\n\ttry {\n\t\tconst fileExist = await fileHandle.getFile();\n\t\treturn fileExist;\n\t} catch (e) {\n\t\tclearLocalFile();\n\t\treturn false;\n\t}\n};\n\nexport const verifyFSPermission = async (fileHandle, { checkOnly = false } = {}) => {\n\tif (!fileHandle) return false;\n\tconst opts = { writable: true, mode: 'readwrite' };\n\tif (checkOnly) return (await fileHandle.queryPermission(opts)) === 'granted';\n\tif ((await fileHandle.queryPermission(opts)) === 'granted') return true;\n\tif ((await fileHandle.requestPermission(opts)) === 'granted') return true;\n\treturn false;\n};\n\nconst getNewFileHandle = () => {\n\tconst date = new Date().toLocaleDateString();\n\tconst suggestedName = `WishSimulator.App_Backup_${date}.bin`;\n\t// For Chrome 86 and later...\n\tif ('showSaveFilePicker' in window) {\n\t\tconst opts = {\n\t\t\tsuggestedName,\n\t\t\ttypes: [\n\t\t\t\t{\n\t\t\t\t\tdescription: 'Text file',\n\t\t\t\t\taccept: { 'text/plain': ['.bin'] }\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t\treturn window.showSaveFilePicker(opts);\n\t}\n\n\t// For Chrome 85 and earlier...\n\tconst opts = {\n\t\ttype: 'save-file',\n\t\taccepts: [\n\t\t\t{\n\t\t\t\tdescription: 'Text file',\n\t\t\t\textensions: ['bin'],\n\t\t\t\tmimeTypes: ['text/plain']\n\t\t\t}\n\t\t]\n\t};\n\treturn window.chooseFileSystemEntries({ opts });\n};\n\nconst writeFile = async (fileHandle, contents) => {\n\t// Support for Chrome 82 and earlier.\n\tif (fileHandle.createWriter) {\n\t\tconst writer = await fileHandle.createWriter();\n\t\tawait writer.write(0, contents);\n\t\tawait writer.close();\n\t\treturn;\n\t}\n\t// For Chrome 83 and later.\n\tconst writable = await fileHandle.createWritable();\n\tawait writable.write(contents);\n\tawait writable.close();\n};\n\nexport const saveExport = async () => {\n\ttry {\n\t\tsavingToSystem.set(true);\n\t\tconst fileHandle = await getNewFileHandle();\n\t\tconst fileString = await generateFileString();\n\t\tawait writeFile(fileHandle, fileString);\n\t\tawait saveHandle(fileHandle);\n\n\t\tsetFileStore(fileHandle);\n\t\tstoreHandle.set(fileHandle);\n\t\tautoExport.set(true);\n\t\tsavingToSystem.set(false);\n\t\treturn fileHandle;\n\t} catch (e) {\n\t\tconsole.error('failed to save export', e);\n\t\tsavingToSystem.set(false);\n\t}\n};\n\nexport const renewSavedFile = async () => {\n\ttry {\n\t\tsavingToSystem.set(true);\n\t\tconst { fileHandle } = await AssetManager.get('savedFile');\n\t\tif (!fileHandle) return savingToSystem.set(false); //no filehandle detected\n\n\t\tconst isExist = await checkFileExist(fileHandle);\n\t\tif (!isExist) {\n\t\t\tthrow new Error('Destination File does not exist, Auto Export will be turned off');\n\t\t}\n\n\t\tconst fileString = await generateFileString();\n\t\tawait writeFile(fileHandle, fileString);\n\t\tawait setFileStore(fileHandle);\n\t\tsavingToSystem.set(false);\n\t} catch (e) {\n\t\tconsole.error('Auto Export Failed:', e.message);\n\t\tsavingToSystem.set(false);\n\t}\n};\n\n// Read Import File\nconst getFileData = async (handle) => {\n\tconst { fileHandle: currentHandle } = await AssetManager.get('savedFile');\n\tconst isSameHandle = await handle.isSameEntry(currentHandle);\n\tif (isSameHandle) throw new Error('You cannot import the currently exported file.');\n\n\tconst file = await handle.getFile();\n\tconst parsedFile = await parseFileObj(file);\n\treturn { handle, file, parsedFile };\n};\n\nexport const readDropedFile = async (items) => {\n\tconst fileHandlesPromises = [...items]\n\t\t.filter((item) => item.kind === 'file')\n\t\t.map((item) => item.getAsFileSystemHandle());\n\n\tfor await (const handle of fileHandlesPromises) {\n\t\tif (handle.kind !== 'file') continue;\n\t\treturn getFileData(handle);\n\t}\n};\n\n// export const showFilePicker = async () => {\n// \tconst pickerOptions = {\n// \t\ttypes: [\n// \t\t\t{\n// \t\t\t\taccept: {\n// \t\t\t\t\t'application/octet-stream': ['.bin'],\n// \t\t\t\t\t'application/json': ['.json'],\n// \t\t\t\t\t'text/plain': ['.txt']\n// \t\t\t\t}\n// \t\t\t}\n// \t\t],\n// \t\texcludeAcceptAllOption: true,\n// \t\tmultiple: false\n// \t};\n// \tconst [handle] = await window.showOpenFilePicker(pickerOptions);\n// \treturn getFileData(handle);\n// };\n\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/api-google.js",
    "content": "import { API_HOST, GOOGLE_API_KEY, GOOGLE_CLIENT_ID } from '$lib/env';\nimport { cookie } from './api-cookie';\nimport { isSignedIn, userEmail } from '$lib/store/drive-store';\n\nlet gapi = {};\nlet google = {};\nlet gsiToken = {};\n\nlet TOKEN = '';\nconst DISCOVERY_DOCS = ['https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'];\nconst SCOPES = 'https://www.googleapis.com/auth/drive.appdata';\n\n// export const GAPI = {\n// \tasync _initClient() {\n// \t\tawait gapi.client.init({\n// \t\t\tapiKey: GOOGLE_API_KEY,\n// \t\t\tdiscoveryDocs: DISCOVERY_DOCS\n// \t\t});\n\n// \t\tconst gapiToken = gapi.client.getToken();\n// \t\tconsole.log({ gapiToken });\n// \t\tif (gapiToken === null) return;\n// \t\treturn gsiToken.requestAccessToken({ prompt: '' });\n// \t},\n\n// \tasync _getToken(err) {\n// \t\t// Errors unrelated to authorization: server errors, exceeding quota, bad requests, and so on.\n// \t\tconst { code, status } = err.result.error;\n// \t\tconst isError = code === 401 || (code === 403 && status == 'PERMISSION_DENIED');\n// \t\tif (isError) throw new Error(err);\n\n// \t\t// The access token is missing, invalid, or expired, prompt for user consent to obtain one.\n// \t\tawait new Promise((resolve, reject) => {\n// \t\t\ttry {\n// \t\t\t\t// Settle this promise in the response callback for requestAccessToken()\n// \t\t\t\tgsiToken.callback = (response) => {\n// \t\t\t\t\tif (response.error !== undefined) return reject(response);\n// \t\t\t\t\tconsole.log('gapi.client access token: ' + JSON.stringify(gapi.client.getToken()));\n// \t\t\t\t\tresolve(response);\n// \t\t\t\t};\n// \t\t\t\tgsiToken.requestAccessToken();\n// \t\t\t} catch (err) {\n// \t\t\t\tconsole.log(err);\n// \t\t\t}\n// \t\t});\n// \t},\n\n// \tasync fileHandle(response) {\n// \t\tif (response.error !== undefined) throw response;\n// \t\tconsole.log('rrr', response);\n// \t\tGAPI._getFile();\n// \t},\n\n// \tasync _getFile() {\n// \t\ttry {\n// \t\t\tconst { result = {} } = await gapi.client.drive.files.list({\n// \t\t\t\tspaces: 'appDataFolder',\n// \t\t\t\tq: \"name = 'Genshin-WishSimulatorApp.json'\"\n// \t\t\t});\n\n// \t\t\tconst { files } = result;\n// \t\t\tif (!files || files.length == 0) {\n// \t\t\t\tconsole.log('no Files');\n// \t\t\t\treturn;\n// \t\t\t}\n// \t\t} catch (err) {\n// \t\t\tconsole.error(err);\n// \t\t}\n// \t},\n\n// \tscriptLoaded() {\n// \t\tgapi = window.gapi;\n// \t\tgapi.load('client', GAPI._initClient);\n// \t},\n\n// \tscriptError() {\n// \t\tconsole.log('error');\n// \t}\n// };\n\nconst GSI = {\n\tscriptLoaded() {\n\t\tgoogle = window.google;\n\t\tgsiToken = google.accounts.oauth2.initCodeClient({\n\t\t\tclient_id: GOOGLE_CLIENT_ID,\n\t\t\tscope: SCOPES,\n\t\t\tux_mode: 'popup',\n\t\t\tcallback: GSI._getToken\n\t\t});\n\n\t\tGSI._refreshToken();\n\t},\n\n\tasync _getToken(response) {\n\t\ttry {\n\t\t\tif (response.error !== undefined) return;\n\n\t\t\tconst { code } = response;\n\t\t\tconst tokenData = await fetch(API_HOST + '/auth/signin', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify({ code })\n\t\t\t});\n\n\t\t\tconst { access_token, refresh_token, userData } = await tokenData.json();\n\t\t\tcookie.set('rToken', refresh_token);\n\t\t\tTOKEN = access_token;\n\n\t\t\tisSignedIn.set(true);\n\t\t\tuserEmail.set(userData.email);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\t},\n\n\tasync _refreshToken() {\n\t\ttry {\n\t\t\tconst refresh_token = cookie.get('rToken');\n\t\t\tif (!refresh_token) return;\n\n\t\t\tconst tokenData = await fetch(API_HOST + '/auth/refresh', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify({ refresh_token })\n\t\t\t});\n\t\t\tconst { access_token, userData } = await tokenData.json();\n\t\t\tTOKEN = access_token;\n\n\t\t\tisSignedIn.set(true);\n\t\t\tuserEmail.set(userData.email);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\t}\n};\n\nexport const DRIVEAPI = {\n\tsync() {\n\t\t//\n\t}\n};\n\nexport const signIn = () => {\n\tgsiToken.requestCode({ prompt: 'consent' });\n\treturn;\n};\n\nexport const signOut = async () => {\n\ttry {\n\t\tconst token = cookie.get('rToken');\n\t\tif (token === null) return;\n\n\t\tawait google.accounts.oauth2.revoke(token);\n\t\tcookie.remove('rToken');\n\t\tisSignedIn.set(false);\n\t\tuserEmail.set('');\n\t} catch (e) {\n\t\tconsole.error(e);\n\t}\n};\n\nexport const initializeDriveAPI = () => {\n\tconst { scriptLoaded: gsiLoaded } = GSI;\n\tconst gsiScript = document.createElement('script');\n\tgsiScript.src = 'https://accounts.google.com/gsi/client';\n\tgsiScript.onload = gsiLoaded;\n\t// gsiScript.onerror = gapiError;\n\tdocument.head.appendChild(gsiScript);\n\n\t// const { scriptError: gapiError, scriptLoaded: gapiLoaded } = GAPI;\n\t// const gapiScript = document.createElement('script');\n\t// gapiScript.src = 'https://apis.google.com/js/api.js';\n\t// gapiScript.onload = gapiLoaded;\n\t// gapiScript.onerror = gapiError;\n\t// document.head.appendChild(gapiScript);\n};\n\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/api-indexeddb.js",
    "content": "import { browser } from '$app/environment';\nimport { openDB } from 'idb';\n\nconst version = 3;\nconst DBName = 'WishSimulator';\n\nlet IndexedDB;\n\nif (browser) {\n\tIndexedDB = openDB(DBName, version, {\n\t\tasync upgrade(db, oldVer, newVer, transaction) {\n\t\t\tif (!db.objectStoreNames.contains('history')) {\n\t\t\t\tconst historyStore = db.createObjectStore('history', {\n\t\t\t\t\tkeyPath: 'id',\n\t\t\t\t\tautoIncrement: true\n\t\t\t\t});\n\t\t\t\thistoryStore.createIndex('banner', 'banner', { unique: false });\n\t\t\t\thistoryStore.createIndex('itemID', 'itemID', { unique: false });\n\t\t\t} else {\n\t\t\t\tconst historyStore = transaction.objectStore('history');\n\t\t\t\tconst hasID = historyStore.indexNames.contains('itemID');\n\t\t\t\tif (!hasID) historyStore.createIndex('itemID', 'itemID', { unique: false });\n\t\t\t}\n\n\t\t\tif (!db.objectStoreNames.contains('assets')) {\n\t\t\t\tdb.createObjectStore('assets', { keyPath: 'key', autoIncrement: false });\n\t\t\t}\n\n\t\t\tif (!db.objectStoreNames.contains('custombanner')) {\n\t\t\t\tconst bnStore = db.createObjectStore('custombanner', {\n\t\t\t\t\tkeyPath: 'itemID',\n\t\t\t\t\tautoIncrement: false\n\t\t\t\t});\n\t\t\t\tbnStore.createIndex('status', 'status', { unique: false });\n\t\t\t}\n\t\t}\n\t});\n}\n\nconst createEvent = () => {\n\tconst event = new Event('storageUpdate');\n\tdocument.dispatchEvent(event);\n};\n\nexport const HistoryManager = {\n\tasync historyCount() {\n\t\treturn (await IndexedDB).count('history');\n\t},\n\tasync getListByBanner(banner) {\n\t\treturn (await IndexedDB).getAllFromIndex('history', 'banner', banner);\n\t},\n\n\tasync countItem(name) {\n\t\treturn (await IndexedDB).countFromIndex('history', 'name', name);\n\t},\n\n\tasync getByID(itemID) {\n\t\treturn (await IndexedDB).getAllFromIndex('history', 'itemID', itemID);\n\t},\n\n\tasync clearHistory(banner) {\n\t\ttry {\n\t\t\tconst idb = await IndexedDB;\n\t\t\tconst keys = await idb.getAllKeysFromIndex('history', 'banner', banner);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tawait idb.delete('history', keys[i]);\n\t\t\t}\n\t\t\treturn 'success';\n\t\t} catch (e) {\n\t\t\treturn 'failed';\n\t\t}\n\t},\n\n\tasync clearIDB() {\n\t\tconst idb = await IndexedDB;\n\t\tconst clear = await idb.clear('history');\n\t\tcreateEvent();\n\t\treturn clear;\n\t},\n\n\tasync getAllHistories() {\n\t\treturn (await IndexedDB).getAll('history');\n\t},\n\n\tasync addHistory(data) {\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tif (!data.hasOwnProperty('banner')) return;\n\t\tconst idb = await IndexedDB;\n\t\tconst put = await idb.put('history', data);\n\t\treturn put;\n\t},\n\n\tasync delete(id) {\n\t\tif (!id) return;\n\t\tconst idb = await IndexedDB;\n\t\tconst remove = await idb.delete('history', id);\n\t\treturn remove;\n\t}\n};\n\n// Assets Manager\nexport const AssetManager = {\n\tasync put(data) {\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tif (!data.hasOwnProperty('key')) return;\n\t\treturn (await IndexedDB).put('assets', data);\n\t},\n\n\tasync get(key) {\n\t\tif (!key) return null;\n\t\treturn (await IndexedDB).get('assets', key);\n\t},\n\n\tasync delete(key) {\n\t\tif (!key) return;\n\t\treturn (await IndexedDB).delete('assets', key);\n\t}\n};\n\n// Custom Banner\nexport const BannerManager = {\n\tasync getAll() {\n\t\treturn (await IndexedDB).getAll('custombanner');\n\t},\n\n\tasync put(data = {}) {\n\t\tif (!('itemID' in data)) return;\n\t\tconst lastModified = new Date().toISOString();\n\t\tconst idb = await IndexedDB;\n\t\tconst put = await idb.put('custombanner', { lastModified, ...data });\n\t\tcreateEvent();\n\t\treturn put;\n\t},\n\n\tasync get(itemID) {\n\t\tif (!itemID) return null;\n\t\treturn (await IndexedDB).get('custombanner', itemID);\n\t},\n\n\tasync getListByStatus(status) {\n\t\treturn (await IndexedDB).getAllFromIndex('custombanner', 'status', status);\n\t},\n\n\tasync delete(key) {\n\t\tif (!key) return;\n\t\tconst idb = await IndexedDB;\n\t\tconst remove = idb.delete('custombanner', key);\n\t\tcreateEvent();\n\t\treturn remove;\n\t},\n\n\tasync clear() {\n\t\tconst idb = await IndexedDB;\n\t\tconst remove = idb.clear('custombanner');\n\t\tcreateEvent();\n\t\treturn remove;\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/api-localstore.js",
    "content": "export const storageLocal = {\n\tgetData() {\n\t\tconst data = localStorage.getItem('WishSimulator.App');\n\t\tif (!data) return { data: {} };\n\t\tconst parsed = JSON.parse(data);\n\t\treturn parsed;\n\t},\n\n\tget(key) {\n\t\tconst { data } = this.getData();\n\t\treturn data[key] || {};\n\t},\n\n\tset(key, value) {\n\t\tconst { data } = this.getData();\n\t\tdata[key] = value;\n\t\tlocalStorage.setItem('WishSimulator.App', JSON.stringify({ data }));\n\t},\n\n\tinitEvent() {\n\t\tconst localStore = localStorage.setItem;\n\t\tlocalStorage.setItem = function (key) {\n\t\t\tif (key === 'WishSimulator.App') {\n\t\t\t\tconst event = new Event('storageUpdate');\n\t\t\t\tdocument.dispatchEvent(event);\n\t\t\t}\n\n\t\t\tlocalStore.apply(this, arguments);\n\t\t};\n\t}\n};\n\nexport const localPity = {\n\tget(pityBanner) {\n\t\tconst pity = storageLocal.get('pity');\n\t\treturn pity[pityBanner] || 0;\n\t},\n\n\tset(pityBanner, value) {\n\t\tconst pity = storageLocal.get('pity');\n\t\tpity[pityBanner] = value;\n\t\tstorageLocal.set('pity', pity);\n\t}\n};\n\nexport const localBalance = {\n\tall() {\n\t\tconst balance = storageLocal.get('balance');\n\t\treturn balance;\n\t},\n\tget(currency) {\n\t\tconst balance = storageLocal.get('balance');\n\t\treturn balance[currency] || 0;\n\t},\n\n\tset(currency, value) {\n\t\tconst balance = storageLocal.get('balance');\n\t\tbalance[currency] = value;\n\t\tstorageLocal.set('balance', balance);\n\t}\n};\n\nexport const rollCounter = {\n\tget(banner) {\n\t\tconst rollCount = storageLocal.get('rollCounter');\n\t\treturn rollCount[banner] || 0;\n\t},\n\tset(banner, rollNumber) {\n\t\tif (!banner) return;\n\t\tconst rollCount = storageLocal.get('rollCounter');\n\t\trollCount[banner] = rollNumber;\n\t\tstorageLocal.set('rollCounter', rollCount);\n\t},\n\tput(banner) {\n\t\tif (!banner) return;\n\t\tconst rollCount = storageLocal.get('rollCounter');\n\t\tconst before = rollCount[banner] || 0;\n\t\trollCount[banner] = before + 1;\n\t\tstorageLocal.set('rollCounter', rollCount);\n\t}\n};\n\nexport const guaranteedStatus = {\n\tget(banner) {\n\t\tconst guaranteedStatus = storageLocal.get('guaranteedStatus');\n\t\treturn guaranteedStatus[banner] || false;\n\t},\n\tset(banner, value) {\n\t\tconst guaranteedStatus = storageLocal.get('guaranteedStatus');\n\t\tguaranteedStatus[banner] = value;\n\t\tstorageLocal.set('guaranteedStatus', guaranteedStatus);\n\t}\n};\n\nexport const localConfig = {\n\tget(key) {\n\t\tconst config = storageLocal.get('config');\n\t\tconst isValue = config[key] !== null;\n\t\treturn isValue ? config[key] : null;\n\t},\n\tset(key, value) {\n\t\tconst config = storageLocal.get('config');\n\t\tconfig[key] = value;\n\t\tstorageLocal.set('config', config);\n\t}\n};\n\nexport const owneditem = {\n\tgetAll() {\n\t\tconst items = storageLocal.get('ownedItem');\n\t\treturn items;\n\t},\n\n\tget(itemID) {\n\t\tconst db = this.getAll();\n\t\tconst selected = db[itemID];\n\t\tif (!selected) return { qty: 0, itemID };\n\n\t\tconst { manual, wish } = selected;\n\t\treturn { itemID, qty: manual + wish };\n\t},\n\n\tput({ itemID, source = 'wish', qty = 1 }) {\n\t\tconst allItems = storageLocal.get('ownedItem');\n\t\tconst { manual = 0, wish = 0 } = allItems[itemID] || {};\n\t\tallItems[itemID] = {\n\t\t\tmanual: source === 'wish' ? manual : qty + manual,\n\t\t\twish: source === 'wish' ? qty + wish : wish\n\t\t};\n\n\t\tstorageLocal.set('ownedItem', allItems);\n\t\treturn allItems[itemID];\n\t}\n};\n\nexport const fatepointManager = {\n\tgetAll() {\n\t\tconst storedData = storageLocal.get('fatepoint');\n\t\tconst allPoint = Array.isArray(storedData) ? storedData : [];\n\t\treturn allPoint;\n\t},\n\n\trestore(data) {\n\t\tconst localData = this.getAll();\n\t\tlocalData.push(data);\n\t\tstorageLocal.set('fatepoint', localData);\n\t},\n\n\tinit({ version, phase, banner = 'weapon-event' } = {}) {\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\t\tthis._banner = banner;\n\t\tconst storedData = storageLocal.get('fatepoint');\n\t\tthis._db = Array.isArray(storedData) ? storedData : [];\n\t\tthis._recordIndex = this._db.findIndex(({ phase: p, version: v, banner: b }) => {\n\t\t\treturn p === phase && v === version && b === banner;\n\t\t});\n\t\treturn this;\n\t},\n\n\tset(point, selectedIndex, type = 'weapon') {\n\t\tconst { _recordIndex: i, _version: version, _phase: phase, _db: db, _banner: banner } = this;\n\t\tconst newData = { version, phase, banner, point, type, selected: selectedIndex };\n\n\t\tif (i < 0) db.push(newData);\n\t\telse db[i] = newData;\n\n\t\tstorageLocal.set('fatepoint', db);\n\t\treturn;\n\t},\n\n\tgetInfo() {\n\t\tconst { _recordIndex: i, _db: db } = this;\n\t\tif (i < 0) return { selected: null, point: null, banner: null, type: null };\n\t\tconst { selected, point, type = 'weapon', banner = 'weapon-event' } = db[i];\n\t\treturn { selected, point, banner, type };\n\t},\n\n\tremove() {\n\t\tconst { _recordIndex: i, _db: db } = this;\n\t\tconst afterRemoved = db.filter((d, index) => index !== i);\n\t\tstorageLocal.set('fatepoint', afterRemoved);\n\t}\n};\n\nexport const dailyWelkin = {\n\tgetData() {\n\t\tconst welkin = storageLocal.get('welkin');\n\t\tif (!welkin) return { remaining: 0, diff: 0 };\n\n\t\tconst utc = new Date().getTime() - 3 * 3600 * 1000;\n\t\tconst today = new Date(utc).toDateString();\n\t\tconst counter = Math.abs(new Date(today) - new Date(welkin.latestCheckIn));\n\t\twelkin.diff = Math.ceil(counter / (1000 * 60 * 60 * 24));\n\t\treturn welkin;\n\t},\n\n\tcheckin(action = 'checkin') {\n\t\tlet { remaining, latestCheckIn } = this.getData();\n\t\tconst time = new Date().getTime() - 3 * 3600 * 1000;\n\t\tconst today = new Date(time).toDateString();\n\n\t\t// Initial Purchase\n\t\tif (!latestCheckIn && action !== 'checkin') {\n\t\t\tconst object = { remaining: 29, latestCheckIn: today };\n\t\t\tstorageLocal.set('welkin', object);\n\t\t\treturn object;\n\t\t}\n\n\t\t// Buying More Welkin\n\t\tif (action !== 'checkin') {\n\t\t\tconst days = remaining < 1 ? 29 : 30;\n\t\t\tconst object = { remaining: days + remaining, latestCheckIn: today };\n\t\t\tstorageLocal.set('welkin', object);\n\t\t\treturn object;\n\t\t}\n\n\t\t// Daily Checkin\n\t\tconst counter = Math.abs(new Date(today) - new Date(latestCheckIn));\n\t\tconst diffDays = Math.ceil(counter / (1000 * 60 * 60 * 24));\n\n\t\tremaining = remaining - diffDays;\n\t\tremaining = remaining < 0 ? 0 : remaining;\n\t\tlatestCheckIn = today;\n\t\tconst object = { remaining, latestCheckIn };\n\t\tstorageLocal.set('welkin', object);\n\t\treturn object;\n\t}\n};\n\nexport const ownedOutfits = {\n\tgetAll() {\n\t\tconst items = storageLocal.get('ownedOutfits');\n\t\treturn Array.isArray(items) ? items : [];\n\t},\n\n\tget(outfitName) {\n\t\tconst outfits = this.getAll();\n\t\treturn outfits.find(({ name }) => name === outfitName);\n\t},\n\n\tgetByChar(charName) {\n\t\tconst outfits = this.getAll();\n\t\treturn outfits.filter(({ characterName }) => characterName === charName);\n\t},\n\n\tset({ outfitName, isSet = true, characterName = null } = {}) {\n\t\tconst outfits = this.getAll().map((outfit) => {\n\t\t\tif (outfit.characterName !== characterName) return outfit;\n\t\t\toutfit.isSet = false;\n\t\t\treturn outfit;\n\t\t});\n\n\t\tif (this.get(outfitName)) {\n\t\t\tconst index = outfits.findIndex(({ name }) => name === outfitName);\n\t\t\toutfits[index].isSet = isSet;\n\t\t} else {\n\t\t\toutfits.push({ name: outfitName, characterName, isSet });\n\t\t}\n\t\tstorageLocal.set('ownedOutfits', outfits);\n\t}\n};\n\nexport const localrate = {\n\tget(key) {\n\t\tconst rates = storageLocal.get('probabilityRates');\n\t\tconst isValue = rates[key] && rates[key] !== null && rates[key] !== undefined;\n\t\treturn isValue ? rates[key] : {};\n\t},\n\tset(key, value) {\n\t\tconst rates = storageLocal.get('probabilityRates');\n\t\trates[key] = value;\n\t\tstorageLocal.set('probabilityRates', rates);\n\t},\n\treset(key) {\n\t\tconst rates = storageLocal.get('probabilityRates');\n\t\tdelete rates[key];\n\t\tstorageLocal.set('probabilityRates', rates);\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/data-merger.js",
    "content": "import { initialAmount, version, wishPhase } from '$lib/data/wish-setup.json';\nimport * as stores from '$lib/store/app-stores';\nimport { BannerManager, HistoryManager } from './api-indexeddb';\nimport { cookie } from './api-cookie';\nimport {\n\tfatepointManager,\n\tlocalBalance,\n\towneditem,\n\tstorageLocal,\n\trollCounter as rq,\n\townedOutfits as costumeManager\n} from './api-localstore';\nimport { adKey } from '../accessKey';\nimport { onlineBanner } from '../banner-custom';\n\nexport const placeDataToAppDB = async (parsedFile, action) => {\n\tif (action === 'replace') await replaceData(parsedFile);\n\tif (action === 'merge') await mergeData(parsedFile);\n\n\tawait setAccessKey(parsedFile.accessKey);\n};\n\nconst setAccessKey = (key) => {\n\tconst hasKey = cookie.get('accessKey');\n\tif (hasKey) return;\n\treturn adKey.verify(key);\n};\n\nconst { clearIDB: clearHistories, addHistory, getAllHistories } = HistoryManager;\nconst { clear: clearCustomBanner, put: addCustomBanner, get: getCustomBanner } = BannerManager;\n\nconst replaceData = async ({ settings, histories, banners } = {}) => {\n\t// replace custom banner\n\tawait clearCustomBanner();\n\tfor (const banner of banners) {\n\t\tawait addCustomBanner(banner);\n\t}\n\n\t// Replace histories;\n\tawait clearHistories();\n\tfor (const history of histories) {\n\t\tawait addHistory(history);\n\t}\n\n\t// Reset Setting and Localstorage\n\tconst { date } = storageLocal.get('export');\n\tsettings.data.export.date = date;\n\tconst settingString = JSON.stringify(settings);\n\tlocalStorage.setItem('WishSimulator.App', settingString);\n\tupdateSiteSettings(settings.data);\n};\n\nconst mergeData = async ({ settings, histories, banners } = {}) => {\n\tawait mergeCustomBanner(banners);\n\tawait mergeHistories(histories);\n\tconst updatedSettings = mergeSettings(settings.data);\n\tupdateSiteSettings(updatedSettings);\n};\n\nconst updateSiteSettings = (settings = {}) => {\n\tconst { balance = {}, config = {}, rollcounter = {} } = settings;\n\n\t// Balance Update\n\tconst balanceKey = ['acquaint', 'intertwined', 'genesis', 'primogem', 'stardust', 'starglitter'];\n\tbalanceKey.forEach((key) => {\n\t\tif (key in balance) return stores[key].set(balance[key]); // restore values\n\t\tif (key.match('primo')) return stores[key].set(initialAmount['primogem']); // set default value\n\t\tif (!key.match(/(acquaint|intertwined)/)) return stores[key].set(0);\n\t\treturn stores[key].set(initialAmount['fates']); // default values for fates stone\n\t});\n\n\t// Beginner Banner\n\tconst { beginner = 0 } = rollcounter;\n\tconst starterRemain = 20 - beginner;\n\tstores.beginnerRemaining.set(starterRemain < 0 ? 0 : starterRemain);\n\tstores.showBeginner.set(beginner < 20);\n\n\t// other store setting\n\tconst { autoskip, wishAmount, multipull } = config;\n\tstores.autoskip.set(!!autoskip);\n\tstores.wishAmount.set(wishAmount);\n\tstores.multipull.set(multipull || 10);\n\tstores.isCustomBanner.set(false);\n\tstores.preloadVersion.set({ patch: version, phase: wishPhase });\n};\n\nconst mergeCustomBanner = async (banners = []) => {\n\tconst shareIDs = [];\n\tfor (const banner of banners) {\n\t\tconst { itemID: idFromImport, shareID: shareIDFormImport, dateFromImport } = banner;\n\t\tconst checkDB = await getCustomBanner(idFromImport);\n\t\tconst isNewerData = new Date(dateFromImport) > new Date(checkDB?.lastModified);\n\n\t\t// collect shareID to verify banner is available Online\n\t\tif (shareIDFormImport && !checkDB?.shareID) {\n\t\t\tshareIDs.push({ id: shareIDFormImport, itemID: idFromImport });\n\t\t}\n\n\t\t// add newer modified item\n\t\tif (!checkDB || isNewerData) {\n\t\t\tconst bannerData = isNewerData ? { ...banner, isChanged: true } : banner;\n\t\t\tawait addCustomBanner(bannerData);\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\tif (shareIDs.length < 1) return;\n\t// Renew if banner not detected in cloud\n\tconst ids = shareIDs.map(({ id }) => id).join(',');\n\tconst { success, data = [] } = (await onlineBanner.getData(ids, 'multi')) || {};\n\tif (!success) return;\n\n\tconst cloudBannerIDs = data.map(({ id }) => id);\n\tconst unAvailableBanner = shareIDs.filter(({ id }) => !cloudBannerIDs.includes(id));\n\n\tfor (let i = 0; i < unAvailableBanner.length; i++) {\n\t\tconst { itemID } = unAvailableBanner[i] || {};\n\t\tconst oldData = await getCustomBanner(itemID);\n\t\tdelete oldData.hostedImages;\n\t\tdelete oldData.imageHash;\n\t\tdelete oldData.shareID;\n\t\toldData.imgChanged = { artURL: true, faceURL: true, thumbnail: true };\n\t\toldData.lastModified = new Date().toISOString();\n\t\toldData.isChanged = true;\n\t\tawait addCustomBanner(oldData);\n\t}\n};\n\nconst mergeHistories = async (histories) => {\n\tconst currentHistories = await getAllHistories();\n\tconst compareArray = currentHistories.map(({ itemID, bannerName, pity, time }) => {\n\t\tconst dataString = `${itemID}/${bannerName}/${pity}/${time}`;\n\t\treturn dataString;\n\t});\n\n\tfor (let i = 0; i < histories.length; i++) {\n\t\tconst newData = histories[i];\n\t\tconst { itemID, bannerName, pity, time, banner } = newData;\n\t\tconst newDataString = `${itemID}/${bannerName}/${pity}/${time}`;\n\t\tconst isDuplicated = compareArray.includes(newDataString);\n\n\t\tif (isDuplicated) continue;\n\t\towneditem.put({ itemID });\n\t\tawait addHistory(newData);\n\t\trq.put(banner);\n\t}\n};\n\nconst mergeSettings = (settings = {}) => {\n\tconst { balance = {}, fatepoint = [], ownedOutfits = [] } = settings;\n\tObject.keys(balance).forEach((key) => {\n\t\tconst before = localBalance.get(key);\n\t\tconst after = before + balance[key];\n\t\tlocalBalance.set(key, after);\n\t});\n\n\t// Merge Fatepoint\n\tconst currentFatePoint = fatepointManager.getAll();\n\tconst comparePoint = currentFatePoint.map(({ version, phase }) => `${version}-${phase}`);\n\n\tfor (let i = 0; i < fatepoint.length; i++) {\n\t\tconst newPoint = fatepoint[i] || {};\n\t\tconst newDataString = `${newPoint.version}-${newPoint.phase}`;\n\t\tconst isDuplicated = comparePoint.includes(newDataString);\n\n\t\tif (isDuplicated) continue;\n\t\tfatepointManager.restore(newPoint);\n\t}\n\n\t// Merge outfit\n\tconst currentOutfit = costumeManager.getAll();\n\tconst compareOutfit = currentOutfit.map(({ name }) => name).filter((n) => n);\n\n\tfor (let i = 0; i < ownedOutfits.length; i++) {\n\t\tconst newOutfit = ownedOutfits[i];\n\t\tconst isDuplicated = compareOutfit.includes(newOutfit.name);\n\t\tif (isDuplicated) continue;\n\t\tnewOutfit.outfitName = newOutfit.name;\n\t\tcostumeManager.set(newOutfit);\n\t}\n\n\tconst { data: finalSettings } = storageLocal.getData();\n\treturn finalSettings;\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/export-import.js",
    "content": "import { BannerManager, HistoryManager } from './api-indexeddb';\nimport { cookie } from './api-cookie';\nimport { storageLocal } from './api-localstore';\nimport { randomNumber } from '../gacha/itemdrop-base';\n\nconst generateExportID = () => {\n\tconst { id } = storageLocal.get('export');\n\tconst exportID = id || `GI${randomNumber(111111111, 999999999)}`;\n\tconst date = new Date();\n\tstorageLocal.set('export', { id: exportID, date });\n};\n\nexport const generateFileString = async () => {\n\tconst banners = await BannerManager.getAll();\n\tconst histories = await HistoryManager.getAllHistories();\n\tconst accessKey = cookie.get('accessKey');\n\n\tgenerateExportID();\n\tconst settings = storageLocal.getData();\n\tconst dataToExport = { banners, histories, settings, accessKey };\n\treturn JSON.stringify(dataToExport);\n};\n\nexport const exportFileLegacy = async () => {\n\tconst text = await generateFileString();\n\tconst blob = new Blob([text], { type: 'text/plain' });\n\tconst anchor = document.createElement('a');\n\n\tconst date = new Date().toLocaleDateString();\n\tanchor.download = `WishSimulator.App_Backup_${date}.bin`;\n\tanchor.href = (window.webkitURL || window.URL).createObjectURL(blob);\n\tanchor.dataset.downloadurl = ['text/plain', anchor.download, anchor.href].join(':');\n\tanchor.click();\n};\n\nexport const allowedType = 'application/octet-stream, application/json, text/plain';\nconst isValidBackupFile = (file) => {\n\tconst checkType = allowedType.match(file.type);\n\tconst checkExt = file.name.match(/.(bin|json|txt)$/);\n\tconst isValidFile = checkType && checkExt;\n\treturn isValidFile;\n};\n\nconst verifyBackupFile = async (file) => {\n\ttry {\n\t\tconst fileContent = await file.text();\n\t\tconst parsed = JSON.parse(fileContent);\n\t\tconst { id } = parsed?.settings?.data?.export || {};\n\t\tif (!id) return null;\n\t\treturn parsed;\n\t} catch (e) {\n\t\treturn null;\n\t}\n};\n\nexport const parseFileObj = async (file) => {\n\tconst isValidFile = isValidBackupFile(file);\n\tif (!isValidFile) throw new Error('Not a valid Backup File');\n\n\tconst parsedFile = await verifyBackupFile(file);\n\tif (!parsedFile) throw new Error('Failed to parse imported file');\n\treturn parsedFile;\n};\n\nexport const importFileLegacy = async (files) => {\n\tconst file = files[0];\n\tconst parsedFile = await parseFileObj(file);\n\treturn { file, parsedFile };\n};\n\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/storage-reader.js",
    "content": "import { storageVersion, version as siteVersion, wishPhase } from '$lib/data/wish-setup.json';\nimport {\n\tautoskip,\n\tbeginnerRemaining,\n\twishAmount,\n\tprimogem,\n\tacquaint,\n\tstardust,\n\tgenesis,\n\tstarglitter,\n\tintertwined,\n\tmultipull,\n\tpreloadVersion\n} from '$lib/store/app-stores';\nimport { localBalance, rollCounter, localConfig } from './api-localstore';\nimport { noticeMark } from '../noticeMark';\n\n/**\n * Read Balance From LocalStorage\n * @param null\n */\nexport const importLocalConfig = () => {\n\tconst {\n\t\tprimogem: pr,\n\t\tintertwined: iw,\n\t\tacquaint: ac,\n\t\tgenesis: gs,\n\t\tstardust: sd,\n\t\tstarglitter: sg\n\t} = localBalance.all() || {};\n\tif (!isNaN(pr)) primogem.set(pr);\n\tif (!isNaN(ac)) acquaint.set(ac);\n\tif (!isNaN(iw)) intertwined.set(iw);\n\tif (!isNaN(gs)) genesis.set(gs);\n\tstardust.set(isNaN(sd) ? 0 : sd);\n\tstarglitter.set(isNaN(sg) ? 0 : sg);\n\n\tconst lWishAmount = localConfig.get('wishAmount') || 'default';\n\twishAmount.set(lWishAmount);\n\tconsole.log('Balance Updated');\n\n\tconst starterRollCount = rollCounter.get('beginner') || 0;\n\tbeginnerRemaining.set(20 - starterRollCount);\n\n\tconst lAutoSkip = localConfig.get('autoskip') || false;\n\tautoskip.set(lAutoSkip);\n\n\tnoticeMark.onLoadCheck();\n\n\tconst lMulti = localConfig.get('multipull');\n\tmultipull.set(lMulti || 10);\n};\n\n/**\n * Set Banner Version And Phase base on user Storage\n * @param null\n */\nexport const setBannerVersionAndPhase = () => {\n\tconst localstoreVersion = localConfig.get('storageVersion');\n\tconst localVersion = localConfig.get('version') || '';\n\tlet [patch, phase] = localVersion.split('-');\n\n\tif (localstoreVersion !== storageVersion) {\n\t\tlocalConfig.set('version', `${siteVersion}-${wishPhase}`);\n\t\tlocalConfig.set('storageVersion', storageVersion);\n\t\t[patch, phase] = [siteVersion, wishPhase];\n\t}\n\tpreloadVersion.set({ patch: patch, phase: parseInt(phase) });\n\n\tconsole.log(`Banner version set to ${patch} phase ${phase}`);\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/storage-reset.js",
    "content": "import { wishPhase, version, initialAmount, storageVersion } from '$lib/data/wish-setup.json';\nimport { HistoryManager } from './api-indexeddb';\nimport { localConfig, storageLocal } from './api-localstore';\nimport {\n\tacquaint,\n\tgenesis,\n\tintertwined,\n\tprimogem,\n\tstardust,\n\tstarglitter,\n\tshowBeginner,\n\twishAmount,\n\tbeginnerRemaining,\n\tcourse,\n\tactiveBanner,\n\tautoskip,\n\teditID,\n\teditorMode,\n\tcustomData,\n\tisCustomBanner,\n\tpreloadVersion\n} from '$lib/store/app-stores';\n\nconst { clearIDB } = HistoryManager;\n\nexport const clearCacheStorage = async () => {\n\tconst keys = await caches.keys();\n\tfor (const key of keys) await caches.delete(key);\n\treturn true;\n};\n\nexport const factoryReset = async ({ clearCache = false, keepSetting = false } = {}) => {\n\tawait clearIDB();\n\tif (clearCache) await clearCacheStorage();\n\n\tcourse.set({ point: null, selected: null });\n\tshowBeginner.set(true);\n\tbeginnerRemaining.set(20);\n\n\tif (keepSetting) {\n\t\tconst config = storageLocal.get('config');\n\t\tconst pity = storageLocal.get('pity');\n\t\tconst balance = storageLocal.get('balance');\n\t\tconst probabilityRates = storageLocal.get('probabilityRates');\n\t\tconst exportData = storageLocal.get('export');\n\t\tlocalStorage.removeItem('WishSimulator.App');\n\n\t\tstorageLocal.set('config', config);\n\t\tstorageLocal.set('pity', pity);\n\t\tstorageLocal.set('balance', balance);\n\t\tstorageLocal.set('probabilityRates', probabilityRates);\n\t\tif (exportData?.id) storageLocal.set('export', exportData);\n\t\treturn;\n\t}\n\n\t// Remove all Settings\n\tconst locale = localConfig.get('locale');\n\tconst exportData = storageLocal.get('export');\n\tlocalStorage.removeItem('WishSimulator.App');\n\tif (locale) localConfig.set('locale', locale);\n\tif (exportData?.id) storageLocal.set('export', exportData);\n\n\tconst { fates, genesis: igen, primogem: iprimo } = initialAmount;\n\tacquaint.set(fates);\n\tintertwined.set(fates);\n\tgenesis.set(igen);\n\tprimogem.set(iprimo);\n\tstardust.set(0);\n\tstarglitter.set(0);\n\n\teditID.set(0);\n\teditorMode.set(0);\n\tcustomData.set({});\n\tisCustomBanner.set(false);\n\n\tlocalConfig.set('storageVersion', storageVersion);\n\tlocalConfig.set('version', `${version}-${wishPhase}`);\n\tpreloadVersion.set({ patch: version, phase: wishPhase });\n\tactiveBanner.set(0);\n\n\t// Setting\n\tautoskip.set(false);\n\twishAmount.set('default');\n};\n"
  },
  {
    "path": "src/lib/helpers/dataAPI/sync.js",
    "content": "import { renewSavedFile } from './api-filesystem';\n\nexport const updateRemoteStorage = ({ to } = {}) => {\n\tif (to === 'local') return renewSavedFile();\n\tif (to == 'drive') return; //updateDrive()\n};\n\nconst localCooldown = 2500;\nconst driveCooldown = 30000;\nlet inSyncLocal = false;\nlet inSyncDrive = false;\n\nconst localSyncTimeout = async () => {\n\tif (inSyncLocal) return;\n\tinSyncLocal = true;\n\tawait updateRemoteStorage({ to: 'local' });\n\n\t// Start cooldown\n\tconst timeout = setTimeout(() => {\n\t\tinSyncLocal = false;\n\t\tclearTimeout(timeout);\n\t}, localCooldown);\n};\n\nconst driveSyncTimeout = async () => {\n\t//\n};\n\nexport const sync = (autoExport) => {\n\tdriveSyncTimeout();\n\n\tif (!autoExport) return;\n\tlocalSyncTimeout();\n};\n\n"
  },
  {
    "path": "src/lib/helpers/donation.js",
    "content": "const getFromSheet = async () => {\n\ttry {\n\t\tconst data = await fetch(\n\t\t\t'https://opensheet.elk.sh/1qQZXxfa8pKrjFkCh4cLYyEbPIaFLMWimVaQmvFkRzlU/1'\n\t\t);\n\t\tconst result = await data.json();\n\t\treturn result.reverse().map(({ message, name, amount, currency, timestamp, payment_type }) => {\n\t\t\tconst formatedAmount = setAmmount(amount, currency);\n\t\t\tconst date = formatDate(timestamp);\n\t\t\treturn { message, name, amount: formatedAmount, date, type: payment_type };\n\t\t});\n\t} catch (e) {\n\t\tconsole.error('failed to process data');\n\t\treturn [];\n\t}\n};\n\nexport const formatNumber = (n) => n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\nconst setAmmount = (amount, currency) => {\n\tconst amNumber = parseInt(amount).toFixed(2).toString();\n\tconst formated = formatNumber(amNumber);\n\treturn `${currency} ${formated}`;\n};\n\nconst formatDate = (date) => {\n\tconst dt = new Date(date);\n\treturn dt.toLocaleDateString();\n};\n\nexport const supporterList = async () => {\n\tconst raw = await getFromSheet();\n\tconst supporter = raw.filter((_, i) => i < 30);\n\treturn supporter;\n};\n"
  },
  {
    "path": "src/lib/helpers/gacha/Wish.js",
    "content": "import { standard } from '$lib/data/banners/standard.json';\nimport { fatepointManager } from '../dataAPI/api-localstore';\nimport { course as wpCourse, chronicledCourse } from '$lib/store/app-stores';\nimport characterWish from './wishCharacter';\nimport beginerWish from './wishBeginner';\nimport weaponWish from './wishWeapon';\nimport standardWish from './wishStandard';\nimport roll from './roll';\nimport chronicledWish from './wishChronicled';\n\nconst initLoadFatepoint = (version, phase) => {\n\t['weapon-event', 'chronicled'].forEach((banner) => {\n\t\tconst localFate = fatepointManager.init({ phase, version, banner });\n\t\tconst { selected, point, type } = localFate.getInfo();\n\t\tif (banner.match('weapon')) return wpCourse.set({ point, selected });\n\t\tchronicledCourse.set({ point, selected, type });\n\t});\n};\n\nconst WISH = {\n\tasync init(version, phase, customData) {\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\n\t\tif (version.match(/(custom|local)/gi)) return this._initCustom(customData);\n\t\tconst { data } = await import(`../../data/banners/events/${version}.json`);\n\t\tconst { standardVersion, weapons, events, chronicled } = data.find(\n\t\t\t(d) => d.phase === phase\n\t\t).banners;\n\t\tinitLoadFatepoint(version, phase);\n\n\t\tthis._characters = events;\n\t\tthis._isDualBanner = events.featured?.length > 1;\n\t\tthis._weapons = weapons;\n\t\tthis._chronicled = chronicled;\n\t\tthis._standardVer = standardVersion;\n\t\tthis._customData = {};\n\t\treturn this;\n\t},\n\n\t_initCustom(customData) {\n\t\tthis._customData = customData;\n\t\tthis._standardVer = standard.reverse()[0].version;\n\t\tconst { character = '', rateup = [], bannerName = '' } = customData;\n\t\tthis._characters = {\n\t\t\trateup,\n\t\t\tfeatured: [{ bannerName, character }]\n\t\t};\n\t\treturn this;\n\t},\n\n\t_characterWish(rarity, indexOfBanner) {\n\t\tconst { featured, rateup } = this._characters;\n\t\tconst eventBanner = characterWish.init({\n\t\t\tversion: this._version,\n\t\t\tphase: this._phase,\n\t\t\tstdver: this._standardVer,\n\t\t\tcustomData: this._customData,\n\t\t\tindexOfBanner,\n\t\t\tfeatured,\n\t\t\trateup\n\t\t});\n\n\t\tconst result = eventBanner.get(rarity);\n\t\tresult.bannerName = featured[indexOfBanner].bannerName;\n\t\treturn result;\n\t},\n\n\t_weaponWish(rarity) {\n\t\tconst { _weapons, _phase: phase, _version: version } = this;\n\t\tconst { fatepointsystem: fatesystem = false, featured, rateup } = _weapons;\n\t\tconst weaponBanner = weaponWish.init({\n\t\t\tfatesystemON: fatesystem,\n\t\t\tfeatured,\n\t\t\tphase,\n\t\t\tversion,\n\t\t\trateup\n\t\t});\n\t\tconst result = weaponBanner.get(rarity);\n\t\tresult.bannerName = _weapons.bannerName;\n\t\treturn result;\n\t},\n\n\t_chronicledWish(rarity) {\n\t\tconst { _chronicled } = this;\n\t\tconst { bannerName, characters, weapons, region } = _chronicled;\n\t\tconst chronicledBanner = chronicledWish.init({\n\t\t\tversion: this._version,\n\t\t\tphase: this._phase,\n\t\t\tstdver: this._standardVer,\n\t\t\tcharacters,\n\t\t\tweapons,\n\t\t\tregion\n\t\t});\n\t\tconst result = chronicledBanner.get(rarity);\n\t\tresult.bannerName = bannerName;\n\t\treturn result;\n\t},\n\n\t_beginnerWish(rarity) {\n\t\tconst result = beginerWish(rarity);\n\t\tresult.bannerName = 'beginner';\n\t\treturn result;\n\t},\n\n\t_standardWish(rarity) {\n\t\tconst { _standardVer: stdver, _phase: phase, _version: version } = this;\n\t\tconst standardBanner = standardWish.init({ stdver, phase, version });\n\t\tconst result = standardBanner.get(rarity);\n\t\tresult.bannerName = `wanderlust-invocation-${stdver}`;\n\t\treturn result;\n\t},\n\n\tgetItem(rarity, banner, indexOfBanner) {\n\t\tconst date = new Date();\n\t\tconst time = `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;\n\t\tconst resultObj = { time, banner };\n\n\t\tif (banner === 'beginner') return { ...resultObj, ...this._beginnerWish(rarity) };\n\t\tif (banner === 'standard') return { ...resultObj, ...this._standardWish(rarity) };\n\t\tif (banner === 'weapon-event') return { ...resultObj, ...this._weaponWish(rarity) };\n\t\tif (banner === 'chronicled') return { ...resultObj, ...this._chronicledWish(rarity) };\n\t\tif (banner === 'character-event') {\n\t\t\treturn { ...resultObj, ...this._characterWish(rarity, indexOfBanner) };\n\t\t}\n\n\t\treturn { type: null, rarity: 0, name: null };\n\t}\n};\n\nexport { roll };\nexport default WISH;\n"
  },
  {
    "path": "src/lib/helpers/gacha/itemdrop-base.js",
    "content": "import { standard } from '$lib/data/banners/standard.json';\nimport { data as weaponsDB } from '$lib/data/weapons.json';\nimport { data as charsDB, onlyStandard } from '$lib/data/characters.json';\nimport { getRate, prob } from './probabilities';\nimport { guaranteedStatus } from '../dataAPI/api-localstore';\n\nexport const regionElement = (region) => {\n\tconst base = {\n\t\tmondstadt: 'anemo',\n\t\tliyue: 'geo',\n\t\tinazuma: 'electro',\n\t\tsumeru: 'dendro',\n\t\tfontaine: 'hydro',\n\t\tnatlan: 'pyro',\n\t\tsnezhnaya: 'cryo'\n\t};\n\treturn base[region];\n};\n\nconst standardWeapons = (star, includes = []) => {\n\treturn getAllWeapons(star).filter(({ limited, name }) => !limited || includes.includes(name));\n};\n\nconst filterByReleased = (charlist, version = null, phase = null) => {\n\treturn charlist.filter(({ release }) => {\n\t\tif (!release) return true;\n\t\tconst [v, phs] = release.split('-');\n\t\tif (parseFloat(version) < parseFloat(v)) return false;\n\t\tif (parseFloat(version) === parseFloat(v) && phase <= parseInt(phs)) return false;\n\t\treturn true;\n\t});\n};\n\nexport const rand = (array) => {\n\tif (!Array.isArray(array)) return array;\n\tif (array.length < 2) return array[0];\n\treturn array[Math.floor(Math.random() * array.length)];\n};\n\nexport const randomNumber = (min = 1, max = 9) => {\n\treturn Math.floor(Math.random() * (max - min + 1) + min);\n};\n\nconst getAllChars = (star) => {\n\treturn charsDB\n\t\t.filter(({ rarity }) => rarity === star)\n\t\t.map((arr) => ({ type: 'character', ...arr }));\n};\n\nconst getAllWeapons = (star) => {\n\treturn weaponsDB\n\t\t.filter(({ rarity }) => rarity === star)\n\t\t.map((arr) => ({ type: 'weapon', ...arr }));\n};\n\nexport const getCharDetails = (charName) => {\n\tif (!charName) return {};\n\tconst findChar = charsDB.find(({ name }) => charName === name);\n\treturn findChar || {};\n};\n\nexport const getWpDetails = (weaponName) => {\n\tif (!weaponName) return {};\n\tconst findWP = weaponsDB.find(({ name }) => name === weaponName);\n\treturn findWP || {};\n};\n\nexport const getDetails = (itemName) => {\n\tif (!itemName) return {};\n\tconst characterList = charsDB.map((d) => ({ type: 'character', ...d }));\n\tconst weaponList = weaponsDB.map((d) => ({ type: 'weapon', ...d }));\n\tconst list = [...characterList, ...weaponList];\n\tconst findItems = list.find(({ name }) => itemName === name);\n\treturn findItems || {};\n};\n\nconst char4starList = (banner) => {\n\tif (banner === 'standard') return getAllChars(4);\n\treturn getAllChars(4).filter(({ name }) => !onlyStandard.includes(name));\n};\n\nexport const get3StarItem = () => standardWeapons(3);\n\nexport const get4StarItem = ({\n\tbanner = 'standard',\n\tregion = null,\n\tversion = null,\n\tphase = null,\n\ttype = null,\n\tuseRateup = false,\n\trateupNamelist = []\n} = {}) => {\n\t// Rateup Item\n\tif (useRateup) {\n\t\tconst isChar = banner === 'character-event' || banner === 'beginner';\n\t\tconst DBList = isChar ? getAllChars(4) : getAllWeapons(4);\n\t\tconst rateupList = DBList.filter(({ name }) => rateupNamelist.includes(name));\n\t\treturn rateupList;\n\t}\n\n\t// Beginner droplist\n\tif (banner === 'beginner') {\n\t\tconst charList = char4starList(banner).filter(({ release }) => release === '1.0-0');\n\t\treturn charList;\n\t}\n\n\t// General Wish Result\n\tlet items;\n\tconst isChron = banner === 'chronicled';\n\tconst lsChars = isChron ? getAllChars(4) : char4starList(banner);\n\tconst lsWp = isChron ? getAllWeapons(4) : standardWeapons(4);\n\n\tif (type == 'all') {\n\t\titems = [...lsChars, ...lsWp];\n\t} else if (type === 'character') {\n\t\titems = lsChars;\n\t} else if (type === 'weapon') {\n\t\titems = lsWp;\n\t} else {\n\t\tconst charRate = getRate(banner, 'charRate');\n\t\tconst { itemType } = prob([\n\t\t\t{ itemType: 'char', chance: charRate },\n\t\t\t{ itemType: 'wp', chance: 100 - charRate }\n\t\t]);\n\t\titems = itemType === 'wp' ? lsWp : lsChars;\n\t}\n\n\tconst result = filterByReleased(items, version, phase);\n\t// General Result\n\tif (!isChron) return result.filter(({ name }) => !rateupNamelist.includes(name));\n\t// chronicled Result\n\treturn result.filter(({ origin, name }) => origin === region || rateupNamelist.includes(name));\n};\n\nconst std5StarCharlist = (stdver = 1, includes = []) => {\n\tconst { characters: stdCharNames } = standard.find(({ version }) => version === stdver);\n\treturn getAllChars(5).filter(({ name }) => {\n\t\treturn stdCharNames.includes(name) || includes.includes(name);\n\t});\n};\n\nexport const get5StarItem = ({\n\tbanner = 'standard',\n\tregion = null,\n\tstdver = 1,\n\ttype = null,\n\tuseRateup = false,\n\trateupItem = [],\n\tcustomData = {}\n} = {}) => {\n\t// Featured or selected Character Result\n\tif (useRateup && banner.match(/character|chronicled/)) {\n\t\tif (Object.keys(customData).length > 0) {\n\t\t\tconst { vision, character, artPosition, itemID } = customData;\n\t\t\tconst result = { name: character, offset: artPosition || {}, type: 'character' };\n\t\t\treturn { vision, itemID, rarity: 5, custom: true, ...result };\n\t\t}\n\t\tconst loadItems = type === 'weapon' ? getAllWeapons : getAllChars;\n\t\tconst featured = loadItems(5).find(({ name }) => name === rateupItem[0]);\n\t\treturn featured || {};\n\t}\n\n\t// Losing Chronicled Result\n\tif (banner.match('chronicled')) {\n\t\tlet resultList = [];\n\t\tif (!type || type === 'all') {\n\t\t\tresultList = [...std5StarCharlist(stdver, rateupItem), ...standardWeapons(5, rateupItem)];\n\t\t} else if (type === 'weapon') {\n\t\t\tresultList = standardWeapons(5, rateupItem);\n\t\t} else {\n\t\t\tresultList = std5StarCharlist(stdver, rateupItem);\n\t\t}\n\n\t\tconst filtered = resultList.filter(({ origin, name }) => {\n\t\t\treturn rateupItem.includes(name);\n\t\t});\n\t\treturn filtered;\n\t}\n\n\t// Featured Weapon Result\n\tif (useRateup && banner === 'weapon-event') {\n\t\tconst featured = getAllWeapons(5).filter(({ name }) => rateupItem.includes(name));\n\t\treturn featured;\n\t}\n\n\t// Standard Weapon result\n\tif (banner === 'weapon-event') {\n\t\tconst rateupRemoved = standardWeapons(5).filter(({ name }) => !rateupItem.includes(name));\n\t\treturn rateupRemoved;\n\t}\n\n\t// Beginner Result\n\tif (banner === 'beginner') {\n\t\tconst result = std5StarCharlist(1);\n\t\treturn result;\n\t}\n\n\t// Standard Result\n\tif (banner === 'standard' || !banner) {\n\t\tlet resultList;\n\t\tif (type === 'all') {\n\t\t\tresultList = [...std5StarCharlist(stdver), ...standardWeapons(5)];\n\t\t} else if (type === 'character') {\n\t\t\tresultList = std5StarCharlist(stdver);\n\t\t} else if (type === 'weapon') {\n\t\t\tresultList = standardWeapons(5);\n\t\t} else {\n\t\t\tconst charRate = getRate(banner, 'charRate');\n\t\t\tconst { itemType } = prob([\n\t\t\t\t{ itemType: 'char', chance: charRate },\n\t\t\t\t{ itemType: 'wp', chance: 100 - charRate }\n\t\t\t]);\n\t\t\tresultList = itemType === 'wp' ? standardWeapons(5) : std5StarCharlist(stdver);\n\t\t}\n\t\treturn resultList;\n\t}\n\n\t// Character Banner Result while lose on character banner\n\treturn std5StarCharlist(stdver).filter(({ name }) => !rateupItem.includes(name));\n};\n\n// RateUp Probability\nexport const isRateup = (banner) => {\n\tconst winRate = getRate(banner, 'winRate');\n\tconst { item } = prob([\n\t\t{ item: 'rateup', chance: winRate },\n\t\t{ item: 'std', chance: 100 - winRate }\n\t]);\n\n\treturn item === 'rateup';\n};\n\n// CheckGuaranteed\nexport const checkGuaranteed = (banner, rarity) => {\n\tconst status = guaranteedStatus.get(`${banner}-${rarity}star`);\n\tconst guaranteedSystem = getRate(banner, 'guaranteed');\n\tconst never = guaranteedSystem === 'never';\n\tconst always = guaranteedSystem === 'always';\n\treturn { status, never, always };\n};\n"
  },
  {
    "path": "src/lib/helpers/gacha/probabilities.js",
    "content": "import { probabilityRates } from '$lib/data/wish-setup.json';\nimport { localrate } from '../dataAPI/api-localstore';\n\nexport const rates = ({\n\tcurrentPity = 0,\n\tmaxPity = 90,\n\tbaseRate = 0.6,\n\trateIncreasedAt = 74\n} = {}) => {\n\tif (baseRate <= 0 && currentPity < maxPity) return 0;\n\tif (currentPity < rateIncreasedAt) return baseRate;\n\n\tif (currentPity >= maxPity) return 100;\n\n\tconst rateIncreasedBy = (100 - baseRate) / (maxPity + 1 - rateIncreasedAt);\n\tconst rateBeforeCurrentPity = (currentPity + 1 - rateIncreasedAt) * rateIncreasedBy;\n\tconst increasedRate = rateBeforeCurrentPity + baseRate;\n\treturn increasedRate;\n};\n\n// Random Item by probability\nexport const prob = (items) => {\n\tlet chances = [];\n\tfor (let i = 0; i < items.length; i++) {\n\t\tchances[i] = items[i].chance + (chances[i - 1] || 0);\n\t}\n\tconst random = Math.random() * chances[chances.length - 1];\n\tconst result = items[chances.findIndex((chance) => chance > random)];\n\treturn result;\n};\n\n// Read Custom Probability\nexport const getRate = (banner, key) => {\n\tif (banner === 'beginner') {\n\t\tconst initial = probabilityRates['character-event'];\n\t\treturn initial[key];\n\t}\n\n\tconst initial = probabilityRates[banner];\n\tconst local = localrate.get(banner);\n\tif (!(local[key] || local[key] >= 0)) return initial[key] || 0;\n\n\tconst val = parseFloat(local[key]);\n\tif (isNaN(val)) return local[key] || 0;\n\treturn val || 0;\n};\n\nexport const setRate = (banner, key, val) => {\n\tconst local = localrate.get(banner);\n\tif (typeof val === 'boolean') {\n\t\tlocal[key] = val;\n\t} else {\n\t\tconst value = parseFloat(val);\n\t\tif (isNaN(value)) local[key] = val;\n\t\telse local[key] = value;\n\t}\n\n\tlocalrate.set(banner, local);\n};\n"
  },
  {
    "path": "src/lib/helpers/gacha/roll.js",
    "content": "import { beginnerRemaining, showBeginner } from '$lib/store/app-stores';\nimport { HistoryManager } from '../dataAPI/api-indexeddb';\nimport { localPity, owneditem, rollCounter } from '../dataAPI/api-localstore';\nimport { getRate, prob, rates } from './probabilities';\n\nconst { addHistory } = HistoryManager;\n\n/**\n * Roll and get result for the selected Banner\n * @param {string} banner Wich banner to do roll\n * @param {Object} WishInstance Wish Instance, init first, then put as argument here\n * @param {number} indexOfBanner Index Of active banner among the dual banner\n * @returns Wish Result Object\n */\nconst roll = async (banner, WishInstance, indexOfBanner) => {\n\tconst pity5 = localPity.get(`pity5-${banner}`) + 1;\n\tconst pity4 = localPity.get(`pity4-${banner}`) + 1;\n\tconst maxPity = getRate(banner, 'max5');\n\n\tconst rate5star = () => {\n\t\treturn rates({\n\t\t\tbaseRate: getRate(banner, 'baseRate5'),\n\t\t\trateIncreasedAt: getRate(banner, 'hard5'),\n\t\t\tcurrentPity: pity5,\n\t\t\tmaxPity\n\t\t});\n\t};\n\n\tconst rate4star = () => {\n\t\treturn rates({\n\t\t\tbaseRate: getRate(banner, 'baseRate4'),\n\t\t\tcurrentPity: pity4,\n\t\t\trateIncreasedAt: getRate(banner, 'hard4'),\n\t\t\tmaxPity: getRate(banner, 'max4')\n\t\t});\n\t};\n\n\tlet chance5star = rate5star();\n\tlet chance4star = rate4star();\n\tlet chance3star = 100 - chance4star - chance5star;\n\n\tif ((chance3star < 0 && pity5 >= maxPity) || chance5star === 100) chance4star = 0;\n\tif (chance3star < 0) chance3star = 0;\n\tif (chance4star === 100) chance5star = 0;\n\n\tconst item = [\n\t\t{\n\t\t\trarity: 3,\n\t\t\tchance: chance3star\n\t\t},\n\t\t{\n\t\t\trarity: 4,\n\t\t\tchance: chance4star\n\t\t},\n\t\t{\n\t\t\trarity: 5,\n\t\t\tchance: chance5star\n\t\t}\n\t];\n\n\tconst { rarity } = prob(item);\n\tlet pity = 1;\n\n\tconst rollQty = rollCounter.get(banner);\n\trollCounter.set(banner, rollQty + 1);\n\n\tif (banner === 'beginner') {\n\t\t// hide beginner banner after 20 roll\n\t\tbeginnerRemaining.update((v) => (v < 1 ? 0 : v - 1));\n\t\tif (rollQty >= 19) showBeginner.set(false);\n\t}\n\n\tif (rarity === 5) {\n\t\tlocalPity.set(`pity4-${banner}`, pity4);\n\t\tlocalPity.set(`pity5-${banner}`, 0);\n\t\tpity = pity5;\n\t}\n\n\tif (rarity === 4) {\n\t\tlocalPity.set(`pity4-${banner}`, 0);\n\t\tlocalPity.set(`pity5-${banner}`, pity5);\n\t\tpity = pity4;\n\t}\n\n\tif (rarity === 3) {\n\t\tlocalPity.set(`pity4-${banner}`, pity4);\n\t\tlocalPity.set(`pity5-${banner}`, pity5);\n\t}\n\n\t// Get Item\n\tconst randomItem = WishInstance.getItem(rarity, banner, indexOfBanner);\n\tconst { manual, wish } = owneditem.put({ itemID: randomItem.itemID });\n\tconst numberOfOwnedItem = manual + wish - 1;\n\tconst isNew = numberOfOwnedItem < 1;\n\n\t// storing item to storage\n\tawait saveResult({ pity, ...randomItem });\n\n\t// Set Constellation\n\tconst isFullConstellation = numberOfOwnedItem > 6;\n\tif (randomItem.type === 'character' && !isNew) {\n\t\trandomItem.stelaFortuna = !isFullConstellation;\n\t}\n\n\t// Milestone Bonus (Stardust or Starglitter)\n\tconst bonusType = randomItem.rarity === 3 ? 'stardust' : 'starglitter';\n\tconst bonusQty = getMilestoneQty(randomItem.rarity, randomItem.type, isFullConstellation, isNew);\n\n\tconst result = { pity, isNew, bonusType, bonusQty, ...randomItem };\n\treturn result;\n};\n\nconst saveResult = async (result) => {\n\tconst data = { ...result };\n\tdelete data.release;\n\tdelete data.limited;\n\tdelete data.offset;\n\tawait addHistory(data);\n};\n\nconst getMilestoneQty = (rarity, type, isFullConstellation, isNew) => {\n\t// Always give stargliter or stardust on obtaining weapons\n\tif (type === 'weapon') {\n\t\tif (rarity === 3) return 15; // *3\n\t\tif (rarity === 4) return 2; // *4\n\t\treturn 10; // *5\n\t}\n\n\t// Don't give Starglitter to newly obtained character\n\tif (isNew) return 0;\n\n\t// Give starglitter for duplicate characters\n\tif (rarity === 4) return isFullConstellation ? 5 : 2; // *4\n\treturn isFullConstellation ? 25 : 10; // *5\n};\n\nexport default roll;\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishBase.js",
    "content": "import weaponsDB from '$lib/data/weapons.json';\nimport charsDB from '$lib/data/characters.json';\n\nconst rand = (array) => array[Math.floor(Math.random() * array.length)];\n\nconst getAllChars = (star) =>\n\tcharsDB.data\n\t\t.filter(({ rarity }) => rarity === star)\n\t\t.map((arr) => {\n\t\t\tarr.type = 'character';\n\t\t\treturn arr;\n\t\t});\n\nconst getAllWeapons = (star) =>\n\tweaponsDB.data\n\t\t.filter(({ rarity }) => rarity === star)\n\t\t.map((arr) => {\n\t\t\tarr.type = 'weapon';\n\t\t\treturn arr;\n\t\t});\n\nconst standardChars5Star = (chars) => getAllChars(5).filter(({ name }) => chars.includes(name));\nconst standardWeapons = (star, exclude = []) => {\n\treturn getAllWeapons(star)\n\t\t.filter(({ limited }) => !limited)\n\t\t.filter(({ name }) => !exclude.includes(name));\n};\n\nconst get4StarChars = getAllChars(4).filter(({ name }) => {\n\treturn !charsDB.onlyStandard.includes(name);\n});\n\nconst filterCharByReleased = (charlist, version = null, phase = null) => {\n\treturn charlist.filter(({ release }) => {\n\t\tif (!release) return true;\n\t\tconst [v, phs] = release.split('-');\n\t\tif (parseFloat(version) < parseFloat(v)) return false;\n\t\tif (parseFloat(version) === parseFloat(v) && phase <= parseInt(phs)) return false;\n\t\treturn true;\n\t});\n};\n\nconst get3StarItem = () => rand(standardWeapons(3));\nconst get4StarItem = ({\n\tbanner = 'allExcludeStandard',\n\tversion = null,\n\tphase = null,\n\texclude = [],\n\tlist = []\n}) => {\n\tlet charList = get4StarChars;\n\n\tif (banner === 'beginner') {\n\t\tcharList = charList.filter(({ name }) => list.includes(name));\n\t\treturn rand(charList);\n\t}\n\n\tif (banner === 'standard') charList = getAllChars(4);\n\n\tconst itemType = rand(['wp', 'char']);\n\tconst items = itemType === 'wp' ? standardWeapons(4) : charList;\n\n\tlet filtered = filterCharByReleased(items, version, phase);\n\tif (exclude.length > 0) {\n\t\tfiltered = filtered.filter(({ name }) => !exclude.includes(name));\n\t}\n\n\treturn rand(filtered);\n};\n\nconst getStandard5StarItem = ({ exclude }) => {\n\tconst itemType = rand(['wp', 'char']);\n\tconst items = itemType === 'wp' ? standardWeapons(5) : standardChars5Star(exclude);\n\treturn rand(items);\n};\n\nexport {\n\trand,\n\tgetAllChars,\n\tgetAllWeapons,\n\tget3StarItem,\n\tget4StarItem,\n\tget4StarChars,\n\tgetStandard5StarItem,\n\tstandardWeapons,\n\tstandardChars5Star\n};\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishBeginner.js",
    "content": "import { guaranteedStatus } from '../dataAPI/api-localstore';\nimport { get3StarItem, get4StarItem, get5StarItem, rand } from './itemdrop-base';\n\nconst beginerWish = (rarity) => {\n\tconst alreadyGetFeatured = guaranteedStatus.get('beginner');\n\n\tif (rarity === 3) {\n\t\tconst droplist = get3StarItem();\n\t\treturn rand(droplist);\n\t}\n\n\tif (rarity === 4) {\n\t\t// Get Noelle as a first 4 star from beginner\n\t\tif (!alreadyGetFeatured) {\n\t\t\tconst result = get4StarItem({\n\t\t\t\trateupNamelist: ['noelle'],\n\t\t\t\tbanner: 'beginner',\n\t\t\t\tuseRateup: true\n\t\t\t});\n\t\t\tguaranteedStatus.set('beginner', true);\n\t\t\treturn rand(result);\n\t\t}\n\n\t\tconst droplist = get4StarItem({ banner: 'beginner' });\n\t\treturn rand(droplist);\n\t}\n\n\tif (rarity === 5) {\n\t\tconst droplist = get5StarItem({ banner: 'beginner' });\n\t\treturn rand(droplist);\n\t}\n};\n\nexport default beginerWish;\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishCharacter.js",
    "content": "import { guaranteedStatus, rollCounter } from '../dataAPI/api-localstore';\nimport { prob } from './probabilities';\nimport {\n\tget3StarItem,\n\tget4StarItem,\n\trand,\n\tget5StarItem,\n\tisRateup,\n\tcheckGuaranteed\n} from './itemdrop-base';\n\nconst characterWish = {\n\tinit({ indexOfBanner, featured, rateup, version, phase, stdver, customData }) {\n\t\tthis._featured = featured;\n\t\tthis._rateup = rateup;\n\t\tthis._indexOfBanner = indexOfBanner;\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\t\tthis._stdver = stdver;\n\t\tthis._customData = customData;\n\t\treturn this;\n\t},\n\n\tget(rarity) {\n\t\tif (rarity === 3) {\n\t\t\tconst droplist = get3StarItem();\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\tif (rarity === 4) {\n\t\t\tconst { _version: version, _phase: phase, _rateup: rateup } = this;\n\t\t\tconst { status: isGuaranteed, never, always } = checkGuaranteed('character-event', 4);\n\t\t\tconst useRateup = (isGuaranteed && !never) || always || isRateup('character-event');\n\n\t\t\tconst droplist = get4StarItem({\n\t\t\t\tbanner: 'character-event',\n\t\t\t\trateupNamelist: rateup,\n\t\t\t\tuseRateup,\n\t\t\t\tversion,\n\t\t\t\tphase\n\t\t\t});\n\n\t\t\tguaranteedStatus.set('character-event-4star', !useRateup);\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\tif (rarity === 5) {\n\t\t\tconst { _featured, _indexOfBanner, _stdver, _customData, _version } = this;\n\t\t\tconst { status: isGuaranteed, never, always } = checkGuaranteed('character-event', 5);\n\t\t\tconst useRateup = (isGuaranteed && !never) || always || isRateup('character-event');\n\n\t\t\t// capturing Radiance\n\t\t\tlet captured = false;\n\t\t\tif (_version >= 5.0 && !useRateup) {\n\t\t\t\tconst radianceRoll = (rollCounter.get('radiance') || 0) + 1;\n\t\t\t\tconst radianceRate = radianceRoll < 2 ? 0 : radianceRoll * 25;\n\t\t\t\tconst { captureRadiance } = prob([\n\t\t\t\t\t{ captureRadiance: 'lose', chance: 100 - radianceRate },\n\t\t\t\t\t{ captureRadiance: 'win', chance: radianceRate }\n\t\t\t\t]);\n\t\t\t\tcaptured = captureRadiance === 'win';\n\t\t\t\trollCounter.set('radiance', captured ? 0 : radianceRoll);\n\t\t\t}\n\n\t\t\tconst droplist = get5StarItem({\n\t\t\t\tbanner: 'character-event',\n\t\t\t\tstdver: _stdver,\n\t\t\t\trateupItem: [_featured[_indexOfBanner].character],\n\t\t\t\tcustomData: _customData,\n\t\t\t\tuseRateup: useRateup || captured\n\t\t\t});\n\t\t\tconst result = rand(droplist);\n\n\t\t\tconst statusGuarateed = (isGuaranteed && !never) || always;\n\t\t\tconst rateUpStatus = statusGuarateed ? 'guaranteed' : 'win';\n\t\t\tconst regularStatus = useRateup ? rateUpStatus : 'lose';\n\t\t\tconst status = captured ? 'captured' : regularStatus;\n\t\t\tguaranteedStatus.set('character-event-5star', !(useRateup || captured));\n\t\t\tif (status === 'win') rollCounter.set('radiance', 0);\n\t\t\treturn { ...result, status, captured };\n\t\t}\n\t}\n};\n\nexport default characterWish;\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishChronicled.js",
    "content": "import { chronicledCourse } from '$lib/store/app-stores';\nimport { fatepointManager } from '../dataAPI/api-localstore';\nimport { get3StarItem, get4StarItem, get5StarItem, rand } from './itemdrop-base';\nimport { getRate, prob } from './probabilities';\n\nconst fatepoint = {\n\tinit({ version, phase }) {\n\t\tthis._fatepointManager = fatepointManager.init({ version, phase, banner: 'chronicled' });\n\t\treturn this;\n\t},\n\n\tcheck() {\n\t\tthis._info = this._fatepointManager.getInfo();\n\t\treturn this._info;\n\t},\n\n\tverify(result) {\n\t\tconst { _info, _fatepointManager } = this;\n\t\tconst { selected, point, type } = _info;\n\t\tif (!selected) return false;\n\n\t\t// Reset Fatepoint\n\t\tif (result.name === selected) {\n\t\t\t_fatepointManager.set(0, null, result.type);\n\t\t\tchronicledCourse.set({ point: 0, selected: null, type: null });\n\t\t\treturn point === 1;\n\t\t}\n\n\t\t// Update Fatepoint if not a selected item\n\t\t_fatepointManager.set(1, selected, type);\n\t\tchronicledCourse.set({ point: 1, selected, type });\n\t\treturn false;\n\t}\n};\n\nconst chronicledWish = {\n\tinit({ version, phase, stdver, characters, weapons, region } = {}) {\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\t\tthis._characters = characters;\n\t\tthis._weapons = weapons;\n\t\tthis._stdver = stdver;\n\t\tthis._region = region;\n\n\t\tthis._epitomized = fatepoint.init({ version, phase, characters, weapons });\n\t\treturn this;\n\t},\n\n\tget(rarity) {\n\t\tconst { _characters: ch, _weapons: wp } = this;\n\t\t// 3 star items\n\t\tif (rarity === 3) {\n\t\t\tconst droplist = get3StarItem();\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\t// 4 star items (Character or Weapon)\n\t\tif (rarity === 4) {\n\t\t\tconst droplist = get4StarItem({\n\t\t\t\tbanner: 'chronicled',\n\t\t\t\tversion: this._version,\n\t\t\t\tphase: this._phase,\n\t\t\t\tregion: this._region,\n\t\t\t\trateupNamelist: [...ch['4star'], ...wp['4star']]\n\t\t\t});\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\t// 5 Star Weapon\n\t\tif (rarity === 5) {\n\t\t\tconst { _characters: ch, _weapons: wp, _region, _stdver, _epitomized } = this;\n\t\t\tconst { point, selected, type } = _epitomized.check();\n\n\t\t\tconst rateUpNameList = type === 'weapon' ? wp['5star'] : ch['5star'];\n\t\t\tconst rateupList = rateUpNameList.filter((name) => name !== selected);\n\t\t\tlet useRateup = point > 0 && !!selected;\n\n\t\t\t// Probability to get Selected Item\n\t\t\tif (point < 1 && !!selected) {\n\t\t\t\tconst selectedRate = getRate('chronicled', 'selectedRate');\n\t\t\t\tconst { item } = prob([\n\t\t\t\t\t{ item: 'selected', chance: selectedRate },\n\t\t\t\t\t{ item: 'random', chance: 100 - selectedRate }\n\t\t\t\t]);\n\t\t\t\tuseRateup = item === 'selected';\n\t\t\t}\n\n\t\t\t// list all available\n\t\t\tconst droplist = get5StarItem({\n\t\t\t\tbanner: 'chronicled',\n\t\t\t\tregion: _region,\n\t\t\t\tstdver: _stdver,\n\t\t\t\trateupItem: useRateup ? [selected] : rateupList,\n\t\t\t\tuseRateup,\n\t\t\t\ttype\n\t\t\t});\n\n\t\t\tconst result = rand(droplist);\n\t\t\tconst isFatepointFull = _epitomized?.verify(result);\n\t\t\tconst randomStatus = !selected ? 'unset' : 'lose';\n\t\t\tconst fatepointstatus = isFatepointFull ? 'selected' : randomStatus;\n\t\t\tresult.status = point < 1 && result?.name === selected ? 'win' : fatepointstatus;\n\t\t\treturn result;\n\t\t}\n\t}\n};\n\nexport default chronicledWish;\n\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishStandard.js",
    "content": "import { get3StarItem, get4StarItem, get5StarItem, rand } from './itemdrop-base';\n\nconst standardWish = {\n\tinit({ stdver, version, phase }) {\n\t\tthis._stdver = stdver;\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\t\treturn this;\n\t},\n\n\tget(rarity) {\n\t\tif (rarity === 3) {\n\t\t\tconst droplist = get3StarItem();\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\tif (rarity === 4) {\n\t\t\tconst droplist = get4StarItem({\n\t\t\t\tbanner: 'standard',\n\t\t\t\tversion: this._version,\n\t\t\t\tphase: this._phase\n\t\t\t});\n\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\tif (rarity === 5) {\n\t\t\tconst droplist = get5StarItem({\n\t\t\t\tbanner: 'standard',\n\t\t\t\tstdver: this._stdver\n\t\t\t});\n\n\t\t\treturn rand(droplist);\n\t\t}\n\t}\n};\n\nexport default standardWish;\n\n"
  },
  {
    "path": "src/lib/helpers/gacha/wishWeapon.js",
    "content": "// import { fatePoint, selectedCourse } from '$lib/store/stores';\nimport { course } from '$lib/store/app-stores';\nimport { fatepointManager, guaranteedStatus } from '../dataAPI/api-localstore';\nimport {\n\trand,\n\tget3StarItem,\n\tget4StarItem,\n\tget5StarItem,\n\tisRateup,\n\tcheckGuaranteed\n} from './itemdrop-base';\nimport { getRate, prob } from './probabilities';\n\nconst fatepoint = {\n\tinit({ version, phase, featured, fatesystemON }) {\n\t\tthis._fatesystemON = fatesystemON;\n\t\tif (!fatesystemON) return null;\n\t\tthis._featured = featured;\n\t\tthis._version = version;\n\t\tthis._fatepointManager = fatepointManager.init({ version, phase });\n\t\treturn this;\n\t},\n\n\tcheck() {\n\t\tthis._info = this._fatepointManager.getInfo();\n\t\treturn this._info;\n\t},\n\n\tverify(result) {\n\t\tif (!this._fatesystemON) return null;\n\t\tconst { _featured, _info, _fatepointManager, _version } = this;\n\t\tconst { selected, point } = _info;\n\t\tif (selected === null) return false;\n\n\t\tconst { name: resultName } = result;\n\t\tconst { name: selectedWeapon } = _featured[selected];\n\n\t\t// Reset Fatepoint\n\t\tif (resultName === selectedWeapon) {\n\t\t\t_fatepointManager.remove();\n\t\t\tcourse.set({ point: 0, selected: null });\n\t\t\tconst maxPoint = _version >= 5.0 ? 1 : 2;\n\t\t\treturn point === maxPoint;\n\t\t}\n\n\t\t// Update Fatepoint if not a selected item\n\t\t_fatepointManager.set(point + 1, selected);\n\t\tcourse.set({ point: point + 1, selected });\n\t\treturn false;\n\t}\n};\n\nconst weaponWish = {\n\tinit({ rateup, version, phase, featured, fatesystemON } = {}) {\n\t\tthis._version = version;\n\t\tthis._phase = phase;\n\t\tthis._rateup = rateup;\n\t\tthis._featured = featured;\n\n\t\tthis._fatesystem = fatepoint.init({ version, phase, featured, fatesystemON });\n\t\treturn this;\n\t},\n\n\tget(rarity) {\n\t\t// 3 star items\n\t\tif (rarity === 3) {\n\t\t\tconst droplist = get3StarItem();\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\t// 4 star items (Character or Weapon)\n\t\tif (rarity === 4) {\n\t\t\tconst { _version: version, _phase: phase, _rateup: rateup } = this;\n\t\t\tconst { status: isGuaranteed, never, always } = checkGuaranteed('weapon-event', 4);\n\t\t\tconst useRateup = (isGuaranteed && !never) || always || isRateup('weapon-event');\n\n\t\t\tconst droplist = get4StarItem({\n\t\t\t\tbanner: 'weapon-event',\n\t\t\t\trateupNamelist: rateup,\n\t\t\t\tuseRateup,\n\t\t\t\tversion,\n\t\t\t\tphase\n\t\t\t});\n\n\t\t\tguaranteedStatus.set('weapon-event-4star', !useRateup);\n\t\t\treturn rand(droplist);\n\t\t}\n\n\t\t// 5 Star Weapon\n\t\tif (rarity === 5) {\n\t\t\tconst { _featured, _fatesystem, _version: version } = this;\n\t\t\tconst { status: isGuaranteed, never, always } = checkGuaranteed('weapon-event', 5);\n\t\t\tlet useRateup = (isGuaranteed && !never) || always || isRateup('weapon-event');\n\n\t\t\tlet calculateFatepoint = false;\n\t\t\tlet rateupItem = _featured.map(({ name }) => name);\n\n\t\t\t// Epitomized path is Active and Weapon is Selected\n\t\t\tif (_fatesystem) {\n\t\t\t\tconst { selected, point } = _fatesystem.check();\n\t\t\t\tcalculateFatepoint = selected !== null && selected > -1;\n\t\t\t\tlet useSelected = false;\n\n\t\t\t\t// Probability to get selected Weapon\n\t\t\t\tif (calculateFatepoint && useRateup) {\n\t\t\t\t\tconst selectedRate = getRate('weapon-event', 'selectedRate');\n\t\t\t\t\tconst { item } = prob([\n\t\t\t\t\t\t{ item: 'selected', chance: selectedRate },\n\t\t\t\t\t\t{ item: 'random', chance: 100 - selectedRate }\n\t\t\t\t\t]);\n\t\t\t\t\tuseSelected = item === 'selected';\n\t\t\t\t}\n\n\t\t\t\t// Guaranteed after max point\n\t\t\t\tconst maxPoint = version >= 5.0 ? 1 : 2;\n\t\t\t\tif (useSelected || (calculateFatepoint && point >= maxPoint)) {\n\t\t\t\t\tuseRateup = true;\n\t\t\t\t\trateupItem = [rateupItem[selected]];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst droplist = get5StarItem({\n\t\t\t\tbanner: 'weapon-event',\n\t\t\t\trateupItem,\n\t\t\t\tuseRateup\n\t\t\t});\n\n\t\t\tconst result = rand(droplist);\n\t\t\tconst isFatepointFull = _fatesystem?.verify(result);\n\n\t\t\tconst statusGuarateed = (isGuaranteed && !never) || always;\n\t\t\tconst rateUpStatus = statusGuarateed ? 'guaranteed' : 'win';\n\t\t\tconst fatepointstatus = calculateFatepoint && isFatepointFull ? 'selected' : rateUpStatus;\n\t\t\tconst status = useRateup ? fatepointstatus : 'lose';\n\t\t\tguaranteedStatus.set('weapon-event-5star', !useRateup);\n\n\t\t\treturn { ...result, status };\n\t\t}\n\t}\n};\n\nexport default weaponWish;\n"
  },
  {
    "path": "src/lib/helpers/i18n.js",
    "content": "import { browser } from '$app/environment';\nimport { init, register, getLocaleFromNavigator } from 'svelte-i18n';\nimport { localConfig } from './dataAPI/api-localstore';\n\nconst supportedLocales = [\n\t'zh-CN',\n\t'zh-TW',\n\t'de-DE',\n\t'en-US',\n\t'fr-FR',\n\t'id-ID',\n\t'it-IT',\n\t'ja-JP',\n\t'ko-KR',\n\t'pt-BR',\n\t'ru-RU',\n\t'th-TH',\n\t'vi-VN'\n];\n\nconst itemLocales = [\n\t'zh-CN',\n\t'zh-TW',\n\t'en-US',\n\t'de-DE',\n\t'it-IT',\n\t'ja-JP',\n\t'ko-KR',\n\t'pt-BR',\n\t'ru-RU',\n\t'vi-VN'\n];\n\nconst checkLocale = () => {\n\tconst savedLocale = browser ? localConfig.get('locale') : null;\n\tconst browserLocale = savedLocale || getLocaleFromNavigator();\n\tconst usedLocale = supportedLocales.find((langID) => langID.includes(browserLocale));\n\treturn usedLocale || 'en-US';\n};\n\nconst mountLocale = () => {\n\tsupportedLocales.forEach((langID) => {\n\t\tregister(langID, () => import(`../../locales/${langID}.json`));\n\t});\n\n\titemLocales.forEach((langID) => {\n\t\tregister(langID, () => import(`../../locales/items/${langID}.json`));\n\t});\n\n\tconst usedLocale = checkLocale();\n\tinit({\n\t\tfallbackLocale: 'en-US',\n\t\tinitialLocale: usedLocale\n\t});\n};\n\nexport { mountLocale, checkLocale };\n"
  },
  {
    "path": "src/lib/helpers/lazyload.js",
    "content": "const options = {\n\troot: null,\n\trootMargin: '0px',\n\tthreshold: 0\n};\n\nexport const lazyLoad = (image, src) => {\n\timage.style.opacity = '0';\n\tconst placeholder = image.getAttribute('data-placeholder');\n\tconst imageSrc = src || placeholder;\n\n\tif (!imageSrc) return;\n\n\tconst loaded = () => {\n\t\timage.style.opacity = '1';\n\t};\n\tconst observer = new IntersectionObserver((entries) => {\n\t\tif (entries[0].isIntersecting) {\n\t\t\t// image Loaded\n\t\t\timage.src = imageSrc;\n\t\t\tif (image.complete) {\n\t\t\t\timage.style.transition = 'unset';\n\t\t\t\tloaded();\n\t\t\t} else image.addEventListener('load', loaded);\n\t\t}\n\t}, options);\n\n\tobserver.observe(image);\n\n\treturn {\n\t\tdestroy() {\n\t\t\timage.removeEventListener('load', loaded);\n\t\t}\n\t};\n};\n"
  },
  {
    "path": "src/lib/helpers/meteor-loader.js",
    "content": "import { writable } from 'svelte/store';\nimport { assets } from '$lib/store/app-stores';\nimport { AssetManager } from './dataAPI/api-indexeddb';\nimport { isSafari } from './mobileDetect';\n\nconst itemRarity = [3, 3, 4, 4, 5, 5];\nconst meteorList = [\n\t'bg.webm',\n\t'3star-single.mp4',\n\t'4star-single.mp4',\n\t'4star-multi.mp4',\n\t'5star-single.mp4',\n\t'5star-multi.mp4',\n\t'capturing-radiance.mp4'\n];\n\nexport const check = async () => {\n\tconst loadedData = [];\n\n\t// Load video from network directly if user use Safari browser\n\tif (isSafari()) return safariMeteorLoader();\n\n\t// Read blob data from storage if using chrome\n\tfor (let i = 0; i < meteorList.length; i++) {\n\t\tconst key = meteorList[i];\n\t\tconst storedData = await AssetManager.get(key);\n\t\tif (!storedData) continue;\n\t\tloadedData.push(storedData);\n\t}\n\n\tconst allComplete = loadedData.length === meteorList.length;\n\tif (allComplete) {\n\t\tconst DOMURL = window.URL || window.webkitURL;\n\t\tassets.update((v) => {\n\t\t\tloadedData.forEach(({ key, blob }) => (v[key] = DOMURL.createObjectURL(blob)));\n\t\t\treturn v;\n\t\t});\n\t}\n\treturn allComplete;\n};\n\nconst safariMeteorLoader = () => {\n\tassets.update((v) => {\n\t\tmeteorList.forEach((vid) => (v[vid] = `/videos/${vid}`));\n\t\treturn v;\n\t});\n\treturn true;\n};\n\nexport const loadProggress = writable({ rarity: '', progress: 0, totalItem: 0, itemNumber: 0 });\n\nexport const loadAnimation = async () => {\n\tconst results = [];\n\tconst totalItem = meteorList.length;\n\tfor (let i = 0; i < totalItem; i++) {\n\t\tloadProggress.set({ rarity: itemRarity[i], progress: 0, totalItem, itemIndex: i });\n\t\tconst response = await fetch(`/videos/${meteorList[i]}`);\n\t\tconst data = new Response(streamResponse(response));\n\t\tconst blob = await data.blob();\n\n\t\t// Save to IDB\n\t\tawait AssetManager.put({ key: meteorList[i], blob });\n\n\t\tconst DOMURL = window.URL || window.webkitURL;\n\t\tconst blobUrl = DOMURL.createObjectURL(blob);\n\t\tconst resultObj = { asset: meteorList[i], url: blobUrl };\n\t\tresults.push(resultObj);\n\t}\n\n\treturn results;\n};\n\nconst streamResponse = (response) => {\n\tconst contentLength = response.headers.get('content-length');\n\treturn new ReadableStream({\n\t\tstart(controller) {\n\t\t\tconst reader = response.body.getReader();\n\t\t\treadStream(controller, reader, contentLength);\n\t\t}\n\t});\n};\n\nlet loaded = 0;\nconst readStream = (controller, reader, contentLength) => {\n\treader.read().then((progressEvent) => {\n\t\tif (progressEvent.done) {\n\t\t\tcontroller.close();\n\t\t\tloaded = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tloadProggress.update((v) => {\n\t\t\tloaded += progressEvent.value.byteLength;\n\t\t\tv.progress = Math.round((loaded / contentLength) * 100);\n\t\t\treturn v;\n\t\t});\n\t\tcontroller.enqueue(progressEvent.value);\n\t\treadStream(controller, reader, contentLength);\n\t});\n};\n"
  },
  {
    "path": "src/lib/helpers/migrator/IDBUpdater.js",
    "content": "// import { deleteDB } from 'idb';\nimport { data as charDB } from '$lib/data/characters.json';\nimport { data as wpDB } from '$lib/data/weapons.json';\nimport { BannerManager, HistoryManager } from '../dataAPI/api-indexeddb';\nimport { cookie } from '../dataAPI/api-cookie';\nimport { localConfig } from '../dataAPI/api-localstore';\nimport { retriveOldData } from './collect-old-data';\nimport { clearCacheStorage } from '../dataAPI/storage-reset';\n\nconst { addHistory, getAllHistories } = HistoryManager;\nconst { getAll: getAllCustomBanner, put: putCustomBanner } = BannerManager;\n\nexport const IDBUpdater = async () => {\n\tconst idbVer = localConfig.get('idbVer');\n\n\tif (idbVer < 3) {\n\t\tconst accessKey = cookie.get('adKey');\n\t\tif (accessKey) cookie.set('accessKey', accessKey);\n\n\t\t// Clear Storage\n\t\tawait clearCacheStorage();\n\n\t\t// Update IDB\n\t\tconst itemIDs = {};\n\t\tcharDB.forEach(({ itemID, name }) => (itemIDs[name] = itemID));\n\t\twpDB.forEach(({ itemID, name }) => (itemIDs[name] = itemID));\n\t\tconst historyData = await getAllHistories();\n\n\t\tfor (let i = 0; i < historyData.length; i++) {\n\t\t\tconst data = historyData[i];\n\t\t\tdata.itemID = itemIDs[data.name];\n\t\t\tawait addHistory(data);\n\n\t\t\tif (i < historyData.length - 1) continue;\n\t\t\tawait retriveOldData();\n\t\t\tlocalConfig.set('idbVer', 3);\n\t\t}\n\t}\n\n\tif (idbVer < 4) {\n\t\tconst customBannerData = await getAllCustomBanner();\n\t\tfor (let i = 0; i < customBannerData.length; i++) {\n\t\t\tconst data = customBannerData[i];\n\t\t\tif (!data.id) continue;\n\t\t\tdata.shareID = data.id;\n\t\t\tdelete data.id;\n\t\t\tawait putCustomBanner(data);\n\t\t}\n\t\tlocalConfig.set('idbVer', 4);\n\t\tconsole.log('IDB Updated');\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/migrator/collect-old-data.js",
    "content": "import { HistoryManager } from '../dataAPI/api-indexeddb';\nimport {\n\tguaranteedStatus,\n\tlocalBalance,\n\towneditem,\n\tstorageLocal,\n\tlocalPity,\n\trollCounter,\n\tlocalConfig\n} from '../dataAPI/api-localstore';\nimport { getSplashArtData } from '../outfit';\n\nconst { getListByBanner } = HistoryManager;\n\nconst migrateWishHistory = async () => {\n\tconst beginner = await getListByBanner('beginner');\n\tconst character = await getListByBanner('character-event');\n\tconst weapons = await getListByBanner('weapon-event');\n\tconst standard = await getListByBanner('standard');\n\tconst list = [...beginner, ...character, ...weapons, ...standard];\n\tif (list.length < 1) return;\n\tlist.map(({ itemID }) => owneditem.put({ itemID }));\n};\n\nconst migratePity = () => {\n\tconst pityList = {\n\t\t'pity4-character-event': 'events4sPity',\n\t\t'pity5-character-event': 'events5sPity',\n\t\t'pity4-weapon-event': 'weapons4sPity',\n\t\t'pity5-weapon-event': 'weapons5sPity',\n\t\t'pity4-beginner': 'beginner4sPity',\n\t\t'pity5-beginner': 'beginner5sPity',\n\t\t'pity4-standard': 'standard4sPity',\n\t\t'pity5-standard': 'standard5sPity'\n\t};\n\n\tObject.keys(pityList).forEach((key) => {\n\t\tconst oldPity = localStorage.getItem(pityList[key]);\n\t\tlocalStorage.removeItem(pityList[key]);\n\t\tif (!oldPity) return;\n\t\tlocalPity.set(key, parseInt(oldPity));\n\t});\n};\n\nconst migrateRollCounter = () => {\n\tconst rollCount = localStorage.getItem('beginnerRoll');\n\tlocalStorage.removeItem('beginnerRoll');\n\tif (!rollCount) return;\n\trollCounter.set('beginner', parseInt(rollCount));\n};\n\nconst migrateGuaranteedStatus = () => {\n\tconst keyList = {\n\t\tbeginner: 'beginner',\n\t\tevents4Star: 'character-event-4star',\n\t\tevents: 'character-event-5star',\n\t\tweapons4Star: 'weapon-event-4star',\n\t\tweapons: 'weapon-event-5star'\n\t};\n\n\tconst objString = localStorage.getItem('guaranteedStatus');\n\tif (!objString) return;\n\n\tlocalStorage.removeItem('guaranteedStatus');\n\tconst { status: oldObj } = JSON.parse(objString);\n\tObject.keys(oldObj).forEach((key) => {\n\t\tconst status = oldObj[key];\n\t\tguaranteedStatus.set(keyList[key], status);\n\t});\n};\n\nconst migrateBalance = () => {\n\tconst balanceKeys = ['primogem', 'genesis', 'intertwined', 'acquaint', 'starglitter', 'stardust'];\n\tbalanceKeys.forEach((key) => {\n\t\tconst balance = localStorage.getItem(key);\n\t\tlocalStorage.removeItem(key);\n\t\tif (!balance) return;\n\t\tlocalBalance.set(key, parseInt(balance));\n\t});\n};\n\nconst migrateFatePoint = () => {\n\tconst oldPoints = localStorage.getItem('fatepoint');\n\tlocalStorage.removeItem('fatepoint');\n\tif (!oldPoints) return;\n\n\tconst { data } = JSON.parse(oldPoints);\n\tconst newData = data.map(({ patch, phase, selected, point }) => {\n\t\treturn { version: patch, phase, selected, point };\n\t});\n\tstorageLocal.set('fatepoint', newData);\n};\n\nconst migrateWelkinData = () => {\n\tconst oldWelkin = localStorage.getItem('welkin');\n\tlocalStorage.removeItem('welkin');\n\tif (!oldWelkin) return;\n\tconst { latestCheckIn, remaining } = JSON.parse(oldWelkin);\n\tconst newObj = { latestCheckIn, remaining };\n\tstorageLocal.set('welkin', newObj);\n};\n\nconst migrateOutfits = () => {\n\tconst oldData = localStorage.getItem('outfits');\n\tlocalStorage.removeItem('outfits');\n\tif (!oldData) return;\n\tconst { outfits: oldObj } = JSON.parse(oldData);\n\tconst newObj = oldObj.map(({ isSet, name }) => {\n\t\tconst { name: characterName } = getSplashArtData(name);\n\t\treturn { isSet, name, characterName };\n\t});\n\tstorageLocal.set('ownedOutfits', newObj);\n};\n\nconst migrateConfig = () => {\n\tconst oldObj = localStorage.getItem('config');\n\tlocalStorage.removeItem('config');\n\tif (!oldObj) return;\n\n\tconst { config: oldConfig } = JSON.parse(oldObj);\n\tconst configKey = {\n\t\tadKey: 'adKey',\n\t\twishAmount: 'wishAmount',\n\t\ttopupBonus: 'topupBonus',\n\t\tanimatedBG: 'animatedBG'\n\t};\n\n\tObject.keys(configKey).forEach((key) => {\n\t\tconst config = oldConfig[key];\n\t\tif (config === undefined || config === null) return;\n\t\tlocalConfig.set(configKey[key], config);\n\t});\n};\n\nconst migrateFirstTimeShare = () => {\n\tconst firstTimeShare = localStorage.getItem('firstshare');\n\tlocalStorage.removeItem('firstshare');\n\tif (!firstTimeShare) return;\n\tlocalConfig.set('firstTimeShare', firstTimeShare === 'yes');\n};\n\nexport const retriveOldData = async () => {\n\t// LocalStorage\n\tlocalStorage.removeItem('storageVersion');\n\tlocalStorage.removeItem('version');\n\tmigratePity();\n\tmigrateRollCounter();\n\tmigrateBalance();\n\tmigrateGuaranteedStatus();\n\tmigrateFatePoint();\n\tmigrateWelkinData();\n\tmigrateOutfits();\n\tmigrateConfig();\n\tmigrateFirstTimeShare();\n\n\t// IDB\n\tconst wish = await migrateWishHistory();\n\treturn wish;\n};\n"
  },
  {
    "path": "src/lib/helpers/mobileDetect.js",
    "content": "const regex1 = new RegExp(\n\t/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i\n);\n\nconst regex2 = new RegExp(\n\t/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i\n);\nconst checkUserAgent = (a) => regex1.test(a) || regex2.test(a.substr(0, 4));\n\nconst userAgentPlaceholder =\n\t'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54';\n\nconst checkViewport = () => {\n\tconst angle = screen.orientation?.angle;\n\tconst rotate = angle === 90 || angle === 270;\n\treturn !rotate && window.matchMedia('screen and (max-width: 760px)').matches;\n};\nexport const mobileDetect = () => {\n\tconst userAgent = navigator.userAgent || navigator.vendor || window.opera || userAgentPlaceholder;\n\treturn navigator?.userAgentData?.mobile || checkUserAgent(userAgent) || checkViewport();\n};\n\nexport const browserDetect = () => {\n\tconst winNav = window.navigator;\n\tconst userAgent = winNav.userAgent;\n\tconst isIOSChrome = userAgent.match('CriOS');\n\n\tif (isIOSChrome) return { isSupported: true, ios: true };\n\n\tconst chromium = window.chrome;\n\tconst vendorName = winNav.vendor;\n\tconst isOpera = typeof window.opr !== 'undefined';\n\tconst isIEedge = userAgent.indexOf('Edg') > -1;\n\tconst isFirefox = userAgent.indexOf('Firefox') > -1;\n\n\tconst isChromium = chromium !== null && typeof chromium !== 'undefined';\n\tconst isBrowserSupport =\n\t\tisChromium || vendorName === 'Google Inc.' || isOpera || isIEedge || isFirefox;\n\n\tif (isBrowserSupport) return { isSupported: true };\n\n\treturn { isSupported: false };\n};\n\nexport const isSafari = () => {\n\tconst userAgent = window.navigator?.userAgent?.toLowerCase();\n\tconst safariAgent = /^((?!chrome|android).)*safari/i.test(userAgent);\n\tconst iosDevice = /ipad|iphone|ipod|macintosh/.test(userAgent) && !window?.MSStream;\n\tconst isSafariBrowser = safariAgent || iosDevice;\n\treturn isSafariBrowser;\n};\n\nexport const isFirefox = () => {\n\tconst winNav = window.navigator;\n\tconst userAgent = winNav.userAgent;\n\tconst isFirefox = userAgent.indexOf('Firefox') > -1;\n\treturn isFirefox;\n}"
  },
  {
    "path": "src/lib/helpers/nameText.js",
    "content": "const getBannerName = (banner) => {\n\tconst split = banner.split('-');\n\treturn { name: split.slice(0, -1).join('-'), number: split[split.length - 1] };\n};\n\nconst getName = (name) => {\n\tif (!name) return name;\n\tconst removedDelimiter = name.replace(/-/g, ' ').replace(new RegExp('_'), \"'\");\n\treturn removedDelimiter\n\t\t.split(' ')\n\t\t.map((t) => t.charAt(0).toUpperCase() + t.slice(1))\n\t\t.join(' ');\n};\n\nconst getSlug = (name) => name.replace(/ /g, '-').replace(new RegExp(/'/g), '_');\n\nconst copy = (text) => {\n\tif (navigator.clipboard) {\n\t\tnavigator.clipboard.writeText(text);\n\t\treturn;\n\t}\n\tconst textArea = document.createElement('textarea');\n\ttextArea.setAttribute('style', 'position: fixed; top: -200%');\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.focus();\n\ttextArea.select();\n\treturn new Promise((res, rej) => {\n\t\tdocument.execCommand('copy') ? res() : rej();\n\t\ttextArea.remove();\n\t});\n};\n\nexport const randomLetter = (length) => {\n\tlet result = '';\n\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\tconst charactersLength = characters.length;\n\tlet counter = 0;\n\twhile (counter < length) {\n\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\n\t\tcounter += 1;\n\t}\n\treturn result;\n};\n\nconst highLightMethod2 = (name, vision) => {\n\tconst splited = name.replaceAll(/(#)/gi, '').trim().split(' ');\n\tconst wordCount = splited.length - 1;\n\tif (wordCount < 1) return `<span class=\"${vision}-flat block\">${name}</span>`;\n\n\tconst modulo = wordCount % 2;\n\tconst halfOfTextIndex = (wordCount - modulo) / 2;\n\tconst frontText = splited.filter((w, i) => i <= halfOfTextIndex).join(' ');\n\tconst endText = splited.filter((w, i) => i > halfOfTextIndex).join(' ');\n\n\treturn `<span class=\"${vision}-flat block\">${frontText}</span> ${endText}`;\n};\n\nexport const highlightBannerName = (name, vision) => {\n\tconst method1 = name.trim().split('#');\n\tif (method1.length !== 3) return highLightMethod2(name, vision);\n\tconst [front, colored, back] = method1;\n\treturn `${front}<span class=\"${vision}-flat\">${colored}</span>${back}`;\n};\n\nexport { getName, getSlug, copy, getBannerName };\n"
  },
  {
    "path": "src/lib/helpers/noticeMark.js",
    "content": "import { notice } from '$lib/store/app-stores';\nimport { cookie } from './dataAPI/api-cookie';\n\nconst getNotices = () => cookie.get('notice') || [];\nconst setNotices = (data = []) => cookie.set('notice', data);\n\nexport const noticeMark = {\n\topenNotice(key) {\n\t\tconst openedNotice = getNotices();\n\t\tconst isAlreadyOpen = openedNotice.includes(key);\n\t\tif (isAlreadyOpen) return;\n\t\topenedNotice.push(key);\n\t\tsetNotices(openedNotice);\n\t\tnotice.set(openedNotice);\n\t\treturn;\n\t},\n\n\tonLoadCheck() {\n\t\tconst openedNotice = getNotices();\n\t\tnotice.set(openedNotice);\n\t}\n};\n"
  },
  {
    "path": "src/lib/helpers/outfit.js",
    "content": "import { outfits } from '$lib/data/outfits.json';\nimport { ownedOutfits } from './dataAPI/api-localstore';\n\nexport const setActiveOutfit = (obj = {}) => {\n\tif (!obj.name) return obj;\n\tconst { name: outfitName } = ownedOutfits.getByChar(obj.name)?.find(({ isSet }) => isSet) || {};\n\tif (!outfitName) return obj;\n\tconst { offset = {} } = getSplashArtData(outfitName);\n\treturn { ...obj, offset, outfitName, useOutfit: true };\n};\n\nexport const getSplashArtData = (outfitName) => {\n\tconst findOutfit = outfits.find(({ name }) => name === outfitName);\n\tconst { characterName, rarity, offset } = findOutfit || {};\n\tconst data = { name: characterName, rarity, outfitName, offset, type: 'outfit' };\n\treturn data;\n};\n\nexport const outfitListForChar = (charName) => {\n\tconst list = outfits.filter(({ characterName }) => characterName === charName);\n\tconst setStatus = list.map((o) => {\n\t\tconst localOutfit = ownedOutfits.get(o.name);\n\t\to.owned = !!localOutfit || !o.release;\n\t\to.isSet = localOutfit?.isSet || false;\n\t\treturn o;\n\t});\n\treturn setStatus;\n};\n\nexport const outfitsForThisPatch = ({ patch }) => {\n\tconst filtered = outfits.filter(({ release }) => release <= parseFloat(patch));\n\tconst setOwned = filtered.map((outfit) => {\n\t\toutfit.isOwned = !!ownedOutfits.get(outfit.name);\n\t\treturn outfit;\n\t});\n\treturn setOwned;\n};\n\nexport const isNewOutfitReleased = (patch) => {\n\tconst filtered = outfits.filter(({ release }) => release === parseFloat(patch));\n\treturn filtered.length > 0;\n};\n"
  },
  {
    "path": "src/lib/helpers/shareable-link.js",
    "content": "const encodeAndMakeLink = (string, path = 'wishitem') => {\n\tconst encoded = window.btoa(string);\n\tconst link = `${window.location.origin}/screen/${path}?a=${encoded}`;\n\treturn link;\n};\n\nexport const decodeAndReadData = {\n\t_read(decoded) {\n\t\t// prettier-ignore\n\t\tlet [name, rarity, vision, stelaFortuna, bonusQty, bonusType, useOutfit, type, isNew] = decoded.split('/');\n\n\t\trarity = parseInt(rarity);\n\t\tstelaFortuna = !!parseInt(stelaFortuna);\n\t\tbonusQty = parseInt(bonusQty);\n\t\tisNew = !!parseInt(isNew);\n\t\tuseOutfit = !!parseInt(useOutfit);\n\t\treturn { name, rarity, vision, stelaFortuna, bonusQty, bonusType, useOutfit, type, isNew };\n\t},\n\n\tsingle(encoded) {\n\t\tconst decoded = window.atob(encoded);\n\t\treturn this._read(decoded);\n\t},\n\n\tmulti(encoded) {\n\t\tconst decoded = window.atob(encoded);\n\t\tconst arrData = decoded.split('|');\n\t\tconst readData = arrData.map(this._read);\n\t\treturn readData;\n\t}\n};\n\nconst encodeData = {\n\t_createStringData(data) {\n\t\t// prettier-ignore\n\t\tconst { bonusQty, bonusType, vision, rarity, name, stelaFortuna, type, isNew, useOutfit } = data;\n\t\tconst string = `${name}/${rarity}/${vision}/${+!!stelaFortuna}/${bonusQty}/${bonusType}/${+!!useOutfit}/${type}/${+!!isNew}`;\n\t\treturn string;\n\t},\n\n\tsingle(data) {\n\t\tconst stringData = this._createStringData(data[0]);\n\t\treturn encodeAndMakeLink(stringData);\n\t},\n\n\tmulti(data) {\n\t\tconst arrayDataStr = data.map(this._createStringData);\n\t\tconst stringData = arrayDataStr.join('|');\n\t\treturn encodeAndMakeLink(stringData, 'wishlist');\n\t}\n};\n\nexport const createLink = (data = []) => {\n\tif (data.length > 1) return encodeData.multi(data);\n\treturn encodeData.single(data);\n};\n\n"
  },
  {
    "path": "src/lib/helpers/timeago.js",
    "content": "//Date Formats must be be ordered smallest -> largest and must end in a format with ceiling of null\nconst date_formats = {\n\tpast: [\n\t\t{ ceiling: 60, text: '$seconds seconds ago' },\n\t\t{ ceiling: 3600, text: '$minutes minutes ago' },\n\t\t{ ceiling: 86400, text: '$hours hours ago' },\n\t\t{ ceiling: 2629744, text: '$days days ago' },\n\t\t{ ceiling: 31556926, text: '$months months ago' },\n\t\t{ ceiling: null, text: '$years years ago' }\n\t],\n\tfuture: [\n\t\t{ ceiling: 60, text: 'in $seconds seconds' },\n\t\t{ ceiling: 3600, text: 'in $minutes minutes' },\n\t\t{ ceiling: 86400, text: 'in $hours hours' },\n\t\t{ ceiling: 2629744, text: 'in $days days' },\n\t\t{ ceiling: 31556926, text: 'in $months months' },\n\t\t{ ceiling: null, text: 'in $years years' }\n\t]\n};\n\n//Time units must be be ordered largest -> smallest\nconst time_units = [\n\t[31556926, 'years'],\n\t[2629744, 'months'],\n\t[86400, 'days'],\n\t[3600, 'hours'],\n\t[60, 'minutes'],\n\t[1, 'seconds']\n];\n\nconst depluralize_time_ago_text = (time_ago_text, breakdown) => {\n\tfor (const i in breakdown) {\n\t\tif (breakdown[i] === 1) {\n\t\t\tconst regexp = new RegExp('\\\\b' + i + '\\\\b');\n\t\t\ttime_ago_text = time_ago_text.replace(regexp, (arg) => arg.replace(/s\\b/g, ''));\n\t\t}\n\t}\n\treturn time_ago_text;\n};\n\nconst get_time_breakdown = (diff) => {\n\tlet seconds = diff;\n\tconst breakdown = {};\n\tfor (let i = 0; i < time_units.length; i++) {\n\t\tconst occurences_of_unit = Math.floor(seconds / time_units[i][0]);\n\t\tseconds = seconds - time_units[i][0] * occurences_of_unit;\n\t\tbreakdown[time_units[i][1]] = occurences_of_unit;\n\t}\n\treturn breakdown;\n};\n\nconst render_date = (date_format, diff) => {\n\tconst breakdown = get_time_breakdown(diff);\n\tconst time_ago_text = date_format.text.replace(/\\$(\\w+)/g, (a, b) => breakdown[b]);\n\treturn depluralize_time_ago_text(time_ago_text, breakdown);\n};\n\nfunction get_format(diff, tense) {\n\tfor (let i = 0; i < date_formats[tense].length; i++) {\n\t\tconst noCeiling = date_formats[tense][i].ceiling === null;\n\t\tconst lessThanCeiling = diff <= date_formats[tense][i].ceiling;\n\t\tif (noCeiling || lessThanCeiling) return date_formats[tense][i];\n\t}\n\treturn null;\n}\n\nexport const timeAgo = (pastDate, dateLater = null) => {\n\tconst date = new Date(pastDate);\n\tif (isNaN(date.getTime())) return 'Invalid Date';\n\n\tconst ref_date = dateLater ? new Date(dateLater) : new Date();\n\tconst seconds_diff = (ref_date - date) / 1000;\n\n\tconst isFutureTime = seconds_diff < 0;\n\tconst tense = isFutureTime ? 'future' : 'past';\n\tconst diff = isFutureTime ? 0 - seconds_diff : seconds_diff;\n\n\tconst timeFormat = get_format(diff, tense);\n\treturn render_date(timeFormat, diff);\n};\n"
  },
  {
    "path": "src/lib/helpers/toast.js",
    "content": "import { toastMsg } from '$lib/store/app-stores';\n\nexport const pushToast = ({\n\ttype = 'info',\n\tdismissible = false,\n\tautoclose = true,\n\ttimeout = 3000,\n\tmessage = ''\n}) => {\n\tconst id = Math.floor(Math.random() * 10000);\n\tconst toastData = { id, dismissible, autoclose, timeout, type, message };\n\n\t// Push the toast to the top of the list of toasts\n\ttoastMsg.update((all) => [toastData, ...all]);\n\tif (autoclose && timeout > 1) setTimeout(() => dismissToast(id), timeout);\n};\n\nexport const dismissToast = (id) => {\n\ttoastMsg.update((all) => all.filter((t) => t.id !== id));\n};\n\n"
  },
  {
    "path": "src/lib/helpers/transition.js",
    "content": "import { crossfade } from 'svelte/transition';\nimport { cubicOut } from 'svelte/easing';\n\nexport const [morphOut, morphIn] = crossfade({\n\tduration: 6400,\n\teasing: cubicOut\n});\n\nexport const removeAnimClass = (el) => {\n\tel.addEventListener('animationend', () => {\n\t\tel.classList.remove('animate');\n\t\tel.classList.remove('anim');\n\t});\n};\n\n"
  },
  {
    "path": "src/lib/helpers/wakeLock.js",
    "content": "let screenLock;\n\nconst wakelockHandle = async ({ release = false } = {}) => {\n\ttry {\n\t\tif (!release) {\n\t\t\tscreenLock = await navigator.wakeLock.request('screen');\n\t\t\treturn;\n\t\t}\n\n\t\tawait screenLock.release();\n\t\tscreenLock = null;\n\t} catch (e) {\n\t\t// console.log('error');\n\t}\n};\n\nexport const wakeLock = () => {\n\tconst isWakeLockSupport = 'wakeLock' in navigator;\n\tif (!isWakeLockSupport) return;\n\n\twakelockHandle();\n\twindow.addEventListener('focus', () => wakelockHandle());\n\twindow.addEventListener('blur', () => wakelockHandle({ release: true }));\n};\n"
  },
  {
    "path": "src/lib/store/app-stores.js",
    "content": "import { writable } from 'svelte/store';\nimport { initialAmount, version, wishPhase } from '$lib/data/wish-setup.json';\n\nconst { fates, genesis: igen, primogem: ipri } = initialAmount;\n\nexport const preloadVersion = writable({ patch: version, phase: wishPhase });\nexport const activeVersion = writable({ patch: version, phase: wishPhase });\nexport const bannerList = writable([]);\nexport const activeBanner = writable(0);\n\n// Beginner\nexport const showBeginner = writable(true);\nexport const beginnerRemaining = writable(20);\n\n// Epitomized Path\nexport const isFatepointSystem = writable(false); // Weapon\nexport const course = writable({ selected: null, point: 0 });\nexport const chronicledCourse = writable({ selected: null, type: null, point: 0 });\n\n// Game Currencies\nexport const genesis = writable(igen);\nexport const primogem = writable(ipri);\nexport const acquaint = writable(fates);\nexport const intertwined = writable(fates);\nexport const stardust = writable(0);\nexport const starglitter = writable(0);\nexport const pricelist = writable({});\n\n// Settings\nexport const autoskip = writable(false);\nexport const wishAmount = writable('default');\nexport const multipull = writable(10);\n\n// other\nexport const proUser = writable(false);\nexport const showAd = writable(false);\nexport const mobileMode = writable(false);\nexport const isMobile = writable(false);\nexport const isPWA = writable(false);\nexport const viewportHeight = writable(0);\nexport const viewportWidth = writable(0);\n\nexport const notice = writable([]);\nexport const assets = writable([]);\nexport const toastMsg = writable([]);\n\nexport const editorMode = writable(false);\nexport const editID = writable(0);\nexport const customData = writable({});\nexport const isCustomBanner = writable(false);\n"
  },
  {
    "path": "src/lib/store/drive-store.js",
    "content": "import { writable } from 'svelte/store';\n\nexport const isSignedIn = writable(false);\nexport const syncProccess = writable(false);\nexport const syncSuccess = writable(false);\nexport const userEmail = writable('');\n\n"
  },
  {
    "path": "src/lib/store/filesystem-store.js",
    "content": "import { writable } from 'svelte/store';\n\nexport const fileData = writable({});\nexport const fileHandle = writable(null);\nexport const autoExport = writable(false);\nexport const savingToSystem = writable(false);\n\n"
  },
  {
    "path": "src/locales/README.md",
    "content": "# Guide to Add new Locale\n\n1. To add a language, just duplicate `en-US.json`, rename to your locale then edit it, change everythings that need to change.\n2. Some languages keep character and weapon names in English, if the language you want to add has its own name for the characters/weapons you can localize it by duplicating the `en-US.json` file from the `items` folders too.\n3. Then open `/src/lib/data/country.json`, insert the Locale Name and Flag here. You can take the base46 flag from this gist [https://gist.github.com/CodeTheInternet/9312404](https://gist.githubusercontent.com/CodeTheInternet/9312404/raw/4987ca07c4032bb6262a65794f428b350e1d86a1/gistfile1.json)\n4. Last Step, navigate to `/src/lib/helpers/i18n.js`. Insert the new locale into `supportedLocales` array, if you have localized characters/weapons too, insert the new locale name to `itemLocales` array as well.\n   https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator/blob/121bcf712dcab9b55c9b87a708a7ef889def879a/src/lib/helpers/i18n.js#L4-L5\n\nIf you are not familiar with javascript especially sveltekit or don't know how to use github and can't do development, don't worry, you can still contribute just by creating a new json file based on `en-US.json` and attach it in [new issue](https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator/issues/new), next I will combine it with the main program. I really appreciate your works.\n\n---\n\n## It might take a long time to type all the text manually, so here are some links from the official site that you can open and copy the text\n\n> Replace `LANGUAGE` with language that you want to add, such as **en**, **es**, **fr**, **vi**, **ja**, **th** or others language that available in Genhsin Impact game.\n\n1. [Beginners' Wish](https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?lang=en&region=os_asia#/newbiegacha)\n   ```\n   https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?lang=LANGUAGE&region=os_asia#/newbiegacha\n   ```\n2. [Standard Wish](https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=fecafa7b6560db5f3182222395d88aaa6aaac1bc&lang=en&region=os_asia#/)\n   ```\n   https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=fecafa7b6560db5f3182222395d88aaa6aaac1bc&lang=LANGUAGE&region=os_asia#/\n   ```\n3. [Character Event Wish](https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=d7d9d26fd678245ee04bec46b4bab7a8f5359c90&lang=en&region=os_asia#/) (Yoimiya Banner)\n   ```\n   https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=d7d9d26fd678245ee04bec46b4bab7a8f5359c90&lang=LANGUAGE&region=os_asia#/\n   ```\n4. [Weapon Wish](https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=38aa9125d7f6a5c4cdaceff8ac720b22ad9236b3&lang=en&region=os_asia#/)\n\n   ```\n   https://webstatic-sea.hoyoverse.com/genshin/event/e20190909gacha/index.html?gacha_id=38aa9125d7f6a5c4cdaceff8ac720b22ad9236b3&lang=LANGUAGE&region=os_asia#/\n   ```\n\n5. [Cronicled Wish](https://gs.hoyoverse.com/genshin/event/e20190909gacha-v3/index.html?gacha_id=8b10b48c52dd6870f92d72e9963b44bb8968ed2f&lang=en&region=os_asia#/)\n   ```\n   https://gs.hoyoverse.com/genshin/event/e20190909gacha-v3/index.html?gacha_id=8b10b48c52dd6870f92d72e9963b44bb8968ed2f&lang=LANGUAGE&region=os_asia#/\n   ```\n\n## Thanks to all contributors who have carried out localization\n\n<table>\n   <thead>\n      <tr>\n         <th> Language </th>\n         <th> Contributor </th>\n      </tr>\n   <thead>\n   <tbody>\n      <tr>\n         <td> Chinese (Simplified) </td>\n         <td>\n            <a href=\"https://github.com/SleepyAsh0191\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/64446140?s=20\" />\n               SleepyAsh0191\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Chinese (Traditional) </td>\n         <td>\n            <a href=\"https://github.com/wibe01204 \">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/90883053?s=20\" />\n               wibe01204\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Deutsch </td>\n         <td>\n            <a href=\"https://github.com/LA1211\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/70387228?s=20\" />\n               LA1211\n            </a>,\n            <a href=\"https://github.com/Alextocode\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/11820339?s=20\" />\n               Alexander Schüßler\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Français </td>\n         <td>\n            <a href=\"https://github.com/Rapi-shiny\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/14368641?s=20\" />\n               Rapi-shiny\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Italiano </td>\n         <td>\n            <a href=\"https://github.com/OCTIPI1\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/64631735?s=20\" />\n               OCTIPI1\n            </a>,\n            <a href=\"https://github.com/ScarletSeal\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/118117643?s=20\" />\n               ScarletSeal\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Japanese </td>\n         <td>\n            <a href=\"https://github.com/Sunny-JP\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/122193933?s=20\" />\n               Sunny-JP\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Korean </td>\n         <td>\n            <a href=\"https://github.com/jwdjk392\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/108386744?s=20\" />\n               jwdjk392\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Portuguese </td>\n         <td>\n            <a href=\"https://github.com/natrodrigo\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/57020127?s=20\" />\n               Natã Pereira\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Russian </td>\n         <td>\n            <a href=\"https://github.com/ArtMuxomor\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/27068331?s=20\" />\n               ArtMuxomor\n            </a>\n         </td>\n      </tr>\n      <tr>\n         <td> Vietnamese </td>\n         <td>\n            <a href=\"https://github.com/bibi0019\">\n               <img width=\"20px\" src=\"https://avatars.githubusercontent.com/u/49600231?s=20\" />\n               bibi0019\n            </a>\n         </td>\n      </tr>\n   </tbody>\n</table>\n"
  },
  {
    "path": "src/locales/de-DE.json",
    "content": "{\n\t\"title\": \"Genshin Impact Gebets-Simulator\",\n\t\"item\": \"Item\",\n\t\"character\": \"Charakter\",\n\t\"weapon\": \"Waffe\",\n\t\"vision\": \"Göttliches Auge\",\n\t\"anemo\": \"Anemo\",\n\t\"cryo\": \"Kryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Elektro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Geo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Bogen\",\n\t\"catalyst\": \"Katalysator\",\n\t\"claymore\": \"Zweihänder\",\n\t\"sword\": \"Schwert\",\n\t\"polearm\": \"Stangenwaffe\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Erhalten\",\n\t\"waiting\": \"Warten\",\n\t\"connectionFailed\": \"Verbindung fehlgeschlagen!\",\n\t\"confirmButton\": \"Bestätigen\",\n\t\"cancelButton\": \"Abbrechen\",\n\t\"disclaimer\": \"Alle Medien, die auf dieser Seite benutzt wurden, gehören miHoYo.\",\n\t\"fanmade\": \"Dies ist eine reine Fananwendung, viel Spaß damit!\",\n\t\"pressToContinue\": \"Klicke in den leeren Bereich um fortzufahren!\",\n\t\"installInstruction\": \"Anleitung zum Installieren auf dem Startbildschirm/Desktop\",\n\t\"share\": \"Teilen\",\n\t\"screenshot\": \"Screenshot machen\",\n\t\"capturing\": \"Erfassen\",\n\t\"rewardFirstShare\": \"Belohnung für erstes Mal teilen: {qty}\",\n\t\"version\": \"Version\",\n\t\"donate\": \"Spenden\",\n\t\"banner\": {\n\t\t\"beginner\": \"Anfängergebet\",\n\t\t\"wanderlust\": \"Wanderlust\",\n\t\t\"epitome-invocation\": \"Göttliches Werk\",\n\t\t\"ode-to-the-dawn-breeze\": \"#Ballade# der Morgenbrise\",\n\t\t\"adrift-in-the-harbor\": \"#Flüchtige# Bekanntschaft\",\n\t\t\"ambrosial-essence\": \"Ambrosische Essenz\",\n\t\t\"ancient-flame-ablaze\": \"#Alte Flamme# lodernd hell\",\n\t\t\"astral-actuation\": \"Astrale Aktivierung\",\n\t\t\"auric-blaze\": \"#Sengende Sonne# und glühendes Gold\",\n\t\t\"azure-excursion\": \"#Fluss# der blassen Blätter\",\n\t\t\"ballad-in-goblets\": \"Balladen in #Bechern#\",\n\t\t\"born-of-ocean-swell\": \"Stunde der #Wogen#\",\n\t\t\"caution-in-confidence\": \"#Verhaltene# Zuversicht\",\n\t\t\"chanson-of-many-waters\": \"Chanson der #Ströme#\",\n\t\t\"conjuring-chiaroscuro\": \"Zauber zwischen #Licht und Schatten#\",\n\t\t\"cornucopia-of-contention\": \"#Füllhorn# des Wettstreits\",\n\t\t\"dance-of-lantern\": \"Tanz der #Laternen#\",\n\t\t\"dawns-drifting-reverie\": \"#Träumerei# zur Morgenstund\",\n\t\t\"decree-of-the-deeps\": \"Gebot über die #Meerestiefen#\",\n\t\t\"dewlit-tranquility\": \"Quelle des #Taus#\",\n\t\t\"discerner-of-enigmas\": \"Lüftung himmlischer #Geheimnisse#\",\n\t\t\"drifting-luminescence\": \"Treibende #Perle#\",\n\t\t\"everbloom-violet\": \"Violette #Blütenwolken#\",\n\t\t\"farewell-of-snezhnaya\": \"Lebe wohl, #winterliche Stadt#\",\n\t\t\"forgefires-blessing\": \"Segen des #Schmiedefeuers#\",\n\t\t\"from-ashes-reborn\": \"Aus der #Glut# wiedergeboren\",\n\t\t\"gentry-of-hermitage\": \"Abgeschiedener #Adel#\",\n\t\t\"harmonious-abundance\": \"Aurora des #Überflusses#\",\n\t\t\"illuminating-lightning\": \"#Blitzjagd# durch die Nacht\",\n\t\t\"immaculate-pulse\": \"Pulsierendes #Leben#\",\n\t\t\"in-the-name-of-the-rosula\": \"Im Namen der #Rosula#\",\n\t\t\"invitation-to-mundane-life\": \"Bombastische #Einladung#\",\n\t\t\"la-chanson-cerise\": \"La Chanson #Cerise#\",\n\t\t\"leaves-in-the-wind\": \"#Blätter# im Wind\",\n\t\t\"moment-of-bloom\": \"#Augenblick# des Erblühens\",\n\t\t\"moonsong-of-the-groves\": \"#Mondgesang# der Wälder\",\n\t\t\"of-silken-clouds-woven\": \"Gewebt aus #seidenen Wolken#\",\n\t\t\"oni_s-royale\": \"#Oni#bankett\",\n\t\t\"piercing-shots-crimson-wake\": \"Sprudelndes Rot am #Ende des Pfeils#\",\n\t\t\"reign-of-serenity\": \"Im Schatten der #Welt#\",\n\t\t\"remembrance-of-jade-and-stone\": \"Gedenken an #Jade und Stein#\",\n\t\t\"romaritime-meluserenity\": \"#Sanfte# Meluseele\",\n\t\t\"roving-chalice-of-dewgrass\": \"Wanderkelch #des Taugrases#\",\n\t\t\"rubedo-of-white-stone-born\": \"Rubedo, aus #weißem Stein# geboren\",\n\t\t\"sharktacular-surfari\": \"Haiterer Wellenritt\",\n\t\t\"secretum-secretorum\": \"#Rätselhafte# Worte\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Flammenjäger# der Geheimnisse\",\n\t\t\"somnias-a-luna\": \"Somnias a #Luna#\",\n\t\t\"sparkling-steps\": \"#Flammende# Schritte\",\n\t\t\"starry-nights-whispers\": \"#Flüstern der# Sternennacht\",\n\t\t\"tapestry-of-golden-flames\": \"Flammengalaxie\",\n\t\t\"tempestuous-destiny\": \"Stürmisches #Schicksal#\",\n\t\t\"temptation-of-the-crimson-sands\": \"Verführung der #roten Sande#\",\n\t\t\"the-crane-soars-skyward\": \"#Kranichsilhouette# inmitten der Wolken\",\n\t\t\"the-hearths-ashen-shadow\": \"#Schattenasche# am Kamin\",\n\t\t\"the-heron_s-court\": \"#Kranich#hof\",\n\t\t\"the-lone-light-knocks-at-night\": \"Nachtbesuch des #einsamen Lichts#\",\n\t\t\"the-moongrass-enlightenment\": \"Erleuchtung des #Mondgrases#\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"Triumphlied des #Nordwinds#\",\n\t\t\"the-transcendent-one-returns\": \"Rückkehr aus der #Abgeschiedenheit#\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Donnerhall# durchzieht die Himmel\",\n\t\t\"twilight-arbiter\": \"#Schiedsspruch# der Dämmerung\",\n\t\t\"twirling-lotus\": \"Wirbelnder #Lotos#\",\n\t\t\"viridescent-vigil\": \"Wachgang im #Dickicht#\",\n\t\t\"void-stars-advent\": \"Ankunft des #Sterns der Leere#\",\n\t\t\"ya-hoho-compendium\": \"Enzyklopädie #Ja-hoho!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Einstellung\",\n\t\t\"baseRate\": \"{rarity}-Sterne Basiswahrscheinlichkeit:\",\n\t\t\"maxPity\": \"{rarity}-Sterne Hard Pity:\",\n\t\t\"hardPity\": \"Soft Pity für {rarity}-Sterne ab Pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Derzeitiger Pity:\",\n\t\t\"winRate\": \"Wahrscheinlichkeit für Aktionsobjekt:\",\n\t\t\"charRate\": \"Wahrscheinlichkeit, Figur statt Waffe zu ziehen\",\n\t\t\"radRate\": \"Wahrscheinlichkeit für \\\"Strahlender Fang\\\"\",\n\t\t\"radTrigger\": \"(wird bei einer verlorenen 50:50 ausgelöst)\",\n\t\t\"nonRateup\": \"(wenn 50:50 bei 4-Sterneobjekt verloren)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Garantiemechanik\",\n\t\t\"backToDefault\": \"Auf Standard setzen\",\n\t\t\"resetPrompt\": \"Möchtest du die Einstellungen des <b>\\\"{banner}\\\"s</b> wirklich auf die Standardeinstellungen zurücksetzen?\",\n\t\t\"default\": \"Standard\",\n\t\t\"never\": \"Niemals\",\n\t\t\"always\": \"Immer\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Banner entwerfen\",\n\t\t\"byTraveler\": \"Erstellt von einem Reisenden\",\n\t\t\"deletePrompt\": \"Möchtst du dieses Banner wirklich löschen?\",\n\t\t\"ownerDeleteNote\": \"Wenn du dieses Banner veröffentlicht hast, werden Reisende, die auf dein Banner bereits gezogen haben, keinen Zugriff mehr darauf haben.\",\n\t\t\"userDeleteNote\": \"Der Gebetsverlauf für dieses Banner wird beibehalten, aber man kann nicht mehr auf das Banner ziehen.\",\n\t\t\"retry\": \"Erneut versuchen\",\n\t\t\"findBanner\": \"Durchsuche Banner..\",\n\t\t\"networkError\": \"Netzwerkfehler. Bitte überprüfe deine Internetverbindung.\",\n\t\t\"bannerNotFound\": \"Das Banner wurde nicht gefunden. Vermutlich ist entweder die <u>Banner-ID </u> falsch oder der Ersteller hat das Banner entfernt.\",\n\t\t\"invalidBanner\": \"Ungütlige Banner-ID\",\n\t\t\"identifying\": \"Identifiziere Banner\",\n\t\t\"loadOwnedBanner\": \"Das Banner \\\"{ownedBanner}\\\" ist dein privates Banner, daher wird nur auf lokale Daten zugegriffen und nicht auf das Internet.\",\n\t\t\"loadReady\": \"Du kannst nun auf dein Banner \\\"{banner}\\\" ziehen!\",\n\t\t\"uploading\": \"Lade {item} hoch\",\n\t\t\"uploadFailed\": \"Konnte Grafik nicht hochladen, bitte versuche es später erneut.\",\n\t\t\"close\": \"Schließen\",\n\t\t\"almostDone\": \"Fast fertig\",\n\t\t\"shareText\": \"Lust dein Glück zu versuchen? Ziehe nun auf meinen {character} Banner im WishSimulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Splash Art ändern\",\n\t\t\"adjustSplashArt\": \"Splash Art anpassen\",\n\t\t\"dropHere\": \"Hierher ziehen\",\n\t\t\"preview\": \"Bannervorschau\",\n\t\t\"generateImage\": \"Bild generieren\",\n\t\t\"notAnImage\": \"Das ist keine Bilddatei!\",\n\t\t\"imageTooLarge\": \"Das Bild ist zu groß. Maximal erlaubte Größe: {maxSize}\",\n\t\t\"faceIcon\": \"Gesichtsthumbnail\",\n\t\t\"addBanner\": \"Neues Banner\",\n\t\t\"delete\": \"Löschen\",\n\t\t\"deleteFailed\": \"Das Banner konnte nicht gelöscht werden.\",\n\t\t\"bannerRemoved\": \"Das Banner wurde entfernt.\",\n\t\t\"edit\": \"Bearbeiten\",\n\t\t\"editInfo\": \"Details bearbeiten\",\n\t\t\"editBanner\": \"Bannerdetails bearbeiten\",\n\t\t\"bannerName\": \"Bannername\",\n\t\t\"titleOfBanner\": \"Der #Titel# des Banners\",\n\t\t\"titleNote\": \"Zwischen #_# gesetzte Buchstaben/Worte werden hervorgehoben\",\n\t\t\"charName\": \"Name der Figur\",\n\t\t\"charTitle\": \"Titel der Figur\",\n\t\t\"watermark\": \"Wasserzeichen\",\n\t\t\"completeAllField\": \"Nicht alle Felder sind gefüllt\",\n\t\t\"finishAndWish\": \"Fertig, lass mich ziehen!\",\n\t\t\"publish\": \"Banner veröffentlichen\",\n\t\t\"updateAndShare\": \"Veröffentlichen & Teilen\",\n\t\t\"rateupChar\": \"4-Sterne Aktionsfiguren\",\n\t\t\"rateupNote\": \"Mindestens 1 4-Sterneaktionsfigur\",\n\t\t\"yourBanners\": \"Deine Banner\",\n\t\t\"createBanner\": \"Erstelle eigenes Banner\",\n\t\t\"limitation\": \"Du bist kein Premiummitglied. Bitte lösche zunächst einige Banner.\",\n\t\t\"memberToUnlock\": \"Werde Premiummitglied, um beliebig viele Banner zu erstellen\",\n\t\t\"incomplete\": \"Unvollständig\",\n\t\t\"inappropriate\": \"Unangemessene Inhalte!\",\n\t\t\"lastSync\": \"Letzte Synchronisation: {time}\",\n\t\t\"inactive\": \"Deaktiviert\",\n\t\t\"unshared\": \"Nicht freigegeben\",\n\t\t\"create\": \"Banner erstellen\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloudsicherung\",\n\t\t\"localSync\": \"Lokal sichern/wiederherstellen\",\n\t\t\"import\": \"Daten importieren\",\n\t\t\"export\": \"Daten exportieren\",\n\t\t\"importAction\": \"{fileInfo} wird in die App eingefügt, bitte wähle die auszuführende Aktion!\",\n\t\t\"mergeAction\": \"Daten zusammen führen <small>Duplikate werden automatisch entfernt und nur neue Objekte zusätzlich hinzugefügt</small>\",\n\t\t\"replaceAction\": \"Daten ersetzen <small> Löscht die vorhandenen Daten und ersetzt diese mit den importierten Daten</small>\",\n\t\t\"dropFiles\": \"Datei hierher ziehen\",\n\t\t\"autoExport\": \"Automatischer Export\",\n\t\t\"destination\": \"Zielpfad wählen\",\n\t\t\"lastExport\": \"Zuletzt exportiert\",\n\t\t\"fileSize\": \"Dateigröße\",\n\t\t\"desNotFound\": \"Kann Exportpfad nicht finden, bitte versuche den Export erneut.\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Göttlicher Kurs\",\n\t\t\"fatePoint\": \"Schicksalspunkte\",\n\t\t\"confirm\": \"Auswahl bestätigen\",\n\t\t\"viewDetails\": \"Details anzeigen\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Willst du den aktuellen Kurs abbrechen?\",\n\t\t\"cancelDesc\": \"Nach dem Abbrechen werden deine gesammelten Schicksalspunkte zurückgesetzt.\",\n\t\t\"selectWeapon\": \"Gewählte Waffe\",\n\t\t\"chartCourseOf\": \"Kurs zu {target} setzen\",\n\t\t\"cancelCourse\": \"Kurs abbrechen\",\n\t\t\"chartCourse\": \"Kurs setzen\",\n\t\t\"courseSetFor\": \"Aktueller Kurs: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Göttlicher Kurs\\\" ist ein besonderer Gebetsmechanismus des neusten Aktionsgebets \\\"Göttliches Werk\\\".\",\n\t\t\t\"Sobald du einen Kurs zu deiner gewählten Waffe gesetzt hast, erhältst du einen Schicksalspunkt, <span> wenn du eine 5-Sterne-Waffe erhältst, die nicht von dir gewählt ist</span>.\",\n\t\t\t\"Sobald du genug Schicksalspunkte gesammelt hast, wird deine nächste 5-Sterne-Waffe diejenige sein, du die durch \\\"Göttlicher Kurs\\\" gewählt hast.\",\n\t\t\t\"<span>Deine Schicksalspunkte werden zurückgesetzt</span>, wenn du eine Waffe von \\\"Göttlicher Kurs\\\" während des Aktionsgebets \\\"Göttliches Werk\\\" erhältst.\",\n\t\t\t\"Wenn du keine Waffe auswählst, werden deine Gebete keine Schicksalspunkte ansammeln.\",\n\t\t\t\"Du kannst deine Auswahl ändern oder abbrechen. Dadurch werden deine gesammelten Schicksalspunkte zurückgesetzt.\",\n\t\t\t\"Wenn das Aktionsgebet \\\"Göttliches Werk\\\" beendet ist, werden auch deine gesammelten Schicksalspunkte zurückgesetzt.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Gebet\",\n\t\t\"rollButton\": \"Gebet {count}\",\n\t\t\"stellaFortuna\": \"Stella Fortuna\",\n\t\t\"loadFailed\": \"Laden des Banners fehlgeschlagen! <br /> Bitte wechsel zu einem anderen Banner oder überprüfe deine Internetverbindung, um Fehler zu verhindern!\",\n\t\t\"loadMeteor\": \"Animationen laden\",\n\t\t\"skipMeteor\": \"Animation überspringen\",\n\t\t\"loadMeteorMsg\": \"Lade <span>{star} Star Pull Animation</span>\",\n\t\t\"meteorNotLoaded\": \"Kann keine Pullanimationen lokal finden. <span> Lade die Animationen zunächst herunter/span> bevor du ziehst oder <span> aktiviere </span> die Option, um Animationen zu überspringen!\",\n\t\t\"preloadFilesMsg\": \"* Die geladenen Animationen werden lokal gespeichert, sodass sie nicht erneut herunter geladen werden müssen.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"Alle Banner\",\n\t\t\t\"previous\": \"Vorheriger Banner\",\n\t\t\t\"findBanner\": \"Finde einen Banner\",\n\t\t\t\"group\": \"Gruppe\",\n\t\t\t\"beginner\": \"Anfängergebet\",\n\t\t\t\"character-event\": \"Figurenaktionsgebet\",\n\t\t\t\"weapon-event\": \"Waffenaktionsgebet\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Standardgebet\",\n\t\t\t\"wishDescription\": \"Alle 10 Ziehungen erhältst du sicher Objekte mit mindestens vier Sternen\",\n\t\t\t\"novice\": \"Gebet für Anfänger\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"20% Rabatt auf 10er-Set. Bei erster Zehnerziehung erhältst du sicher folgende Figur: {character}.\",\n\t\t\t\"beginnerNote\": \"\\\"Ich weiß genau wie man sich als Magd zu verhalten hat\\\"\",\n\t\t\t\"beginnerChance\": \"Verbleibende Möglichkeiten: {chances}\",\n\t\t\t\"standardNote\": \"Standardgebet haben kein Zeitlimit.\",\n\t\t\t\"allWeaponTypes\": \"Alle Waffentypen\",\n\t\t\t\"etc\": \"etc.\",\n\t\t\t\"probIncreased\": \"Höhere Wahrscheinlichkeit!\",\n\t\t\t\"eventNote\": \"Die limitierten Figuren mit fünft Sternen gibt es nur während des jeweiligen Aktionszeitraums über das entsprechende Gebet.\",\n\t\t\t\"viewDetails\": \"Wähle 'Details', um mehr zu erfahren.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Überspringen\",\n\t\t\t\"meteorFailed\": \"Meteor Animation lädt nicht\",\n\t\t\t\"new\": \"Neu\",\n\t\t\t\"convertion\": \"Umgewandelt\",\n\t\t\t\"title\": \"Ergebnis des Gebets für {item} und andere\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Figurenzierde\",\n\t\t\"default\": \"Standard\",\n\t\t\"setOutfit\": \"Outfit auswählen\",\n\t\t\"owned\": \"Bereits vorhanden\",\n\t\t\"purchasePrompt\": \"Du hast die Figur für dieses Outfit nicht, bist du sicher das du es kaufen möchtest?\",\n\t\t\"promptInfo\": \"Du kannst dieses Outfit verwenden, nachdem du die Figur freigeschaltet hast\",\n\t\t\"obtained\": \"Neues Outfit erhalten\",\n\t\t\"unlocked\": \"{character}: Outfit freigeschaltet\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Sterne-Kundschafter\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Ritterliche Hingabe\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Fließendes Schicksal\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Vollstreckerdornen\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Traum von der Meeresbrise\",\n\t\t\t\t\"description\": \"Jeans Sommerkleidung. Leicht und kühl, aber deswegen nicht weniger elegant. Die perfekte Wahl für einen Ausflug ans Meer.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Glänzende Darbietung\",\n\t\t\t\t\"description\": \"Barbaras Strandmode. Dieser hübsche Rock strotzt vor sommerlicher Lebensfreude und trägt eine kühle Meeresbrise mit sich.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Üppige Pracht\",\n\t\t\t\t\"description\": \"Keqings formelle Kleidung. Inmitten der wunderschönen Morgendämmerung des Laternenrituals verflechten sich die in tagelanger harter Arbeit gewebten Fäden zu einer leichten und doch prächtigen Erscheinung.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Orchideen-Abendkleid\",\n\t\t\t\t\"description\": \"Ningguangs formelle Kleidung. Der lange türkisfarbene Rock umspielt ihre eleganten Kurven, und die Schmetterlingsflügel an ihren Knöcheln verleihen dem Outfit einen Hauch von leichter Anmut.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Ein Immernachtstraum\",\n\t\t\t\t\"description\": \"Ein festliches Gewand für die Prinzessin. Möge sie, die Edle, für immer ihren Mut, ihre Aufrichtigkeit und ihre Güte bewahren, so dass kein Übel sie je überwältigen kann.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Blutrote Nacht\",\n\t\t\t\t\"description\": \"Eines der Outfits, die Diluc bei verdeckten Aktionen trägt, gleicht einer Flamme, die in den Schatten tanzt. Die purpurroten Spuren, die sie an den Rändern der Sicht des Feindes hinterlässt, werden ihn für immer in seinen Albträumen verfolgen.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"Weisheit unter dem Grün\",\n\t\t\t\t\"description\": \"Die Kleidung, die Lisa eigens bestellt hat, als sie Sumeru wieder besuchte. Das Kleid ist praktisch, aber auch elegant und hat eine leichte Ähnlichkeit mit ihrer Studentenuniform.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Botschaft der Blütezeit\",\n\t\t\t\t\"description\": \"Kamisato Ayakas Kleidung. Das Kleid orientiert sich an der Kleidung der Frauen in Fontaine, welche auf den Illustrationen einer kurzen Erzählung zu sehen ist, und gibt einen kurzen Einblick ins Leben der dortigen Adeligen.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Blütenreines Sternenlicht\",\n\t\t\t\t\"description\": \"Klees exquisites Kostüm, welches sie nur zu den wichtigsten Aufführungen trägt. Mit seinen leuchtenden Farben erinnert es an eine mit cremefarbenen Blumen und roten Kerzen verzierte Torte. Hiermit trägt Klee Freude und ein Lächeln in jede Ecke dieser Welt, wohin ihr Abenteuer sie auch führen mag.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Schatten flatternder Segel\",\n\t\t\t\t\"description\": \"Kaeyas Kostüm aus seiner Darbietung als „Großer Räuber Kurzklinge“. Ein prächtiges Kleidungsstück, das als absoluter „Hingucker“ entworfen wurde. Das Kostüm selbst ist nicht aufwendig anzuziehen; ganz anders sieht es da allerdings mit den Accessoires und dem Messer aus.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Cencellada rociofloral\",\n\t\t\t\t\"description\": \"Dieses Geschenk vom Laternenritual, das Shenhe erhalten hat, ist eine elegante Festkleidung, die ihre Meisterin, die Fürstin der stehenden Wolken und des stillen Windes, für sie in Auftrag gegeben hatte. Rote Seile zieren noch immer ihre Arme, doch die Kälte in Shenhes Herzen wurde gelindert.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Zwielichtblüte\",\n\t\t\t\t\"description\": \"Ein leichtes und anmutiges Festtagsgewand, bei dem vor allem in dunklem Violett und Himmelblau Akzente gesetzt worden sind. Der Haarschmuck ist ebenso strahlend wie eine Qingxin, eine Kombination, die Ganyu am liebsten hat.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Bambusregen\",\n\t\t\t\t\"description\": \"Eine formelle Kleidung, die die Händlergilde Feiyun für Xingqiu hat anfertigen lassen. Die Bambusdrucke sind raffiniert und der Schnitt ist sehr schmeichelhaft, aber Xingqius Lieblingsaspekt dieser Kleidung sind die Innentaschen, in die man einen dünnen Roman stecken kann.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Gestiefeltes Phantom\",\n\t\t\t\t\"description\": \"Kiraras Kleidung. Die märchenhaft, nobel das Schwert schwingende Nekomata, die junge Botin der Wünsche bestellt ihre besten Grüße!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Atem des Sabaa\",\n\t\t\t\t\"description\": \"Nilous elegante Kleidung. Ein federleichtes, scheinbar aus tausend Blumen gewobenes Kleid, das wie der Ostwind zur Morgendämmerung von einem feinen Duft begleitet gute Wünsche aus dem Land der Märchen mitbringt.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Schneebedeckte Kirschen\",\n\t\t\t\t\"description\": \"Hu Taos Kleidung. Sie ist in einer helleren Farbe gehalten als die dunkle Zeremonienkleidung des Bestattungsinstituts Wangsheng und ein besonderes Geschenk ihrer guten Freundin Xiangling. Die Sonnenbrille wiederum stammt aus der persönlichen Sammlung von Hu Tao.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Neujahrsjubel\",\n\t\t\t\t\"description\": \"Xianglings Kleidung. Der rote Mantel leuchtet wie ein angeheizter Herd im kalten Wind und wird von einer Mütze gekrönt, die auf Anregung von Hu Tao von Guobas Aussehen inspiriert wurde, was Xiangling natürlich sehr gefällt.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Ruhiges Festmah\",\n\t\t\t\t\"description\": \"Yelans Kleidung für Feiertage, elegant und dennoch schick. Sie vermittelt eine entspannte Stimmung, ist aber gleichzeitig auch eine Art „aggressiver“ Tarnung …\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Feurige Wanderung\",\n\t\t\t\t\"description\": \"Bennetts Kleidung für seine Reise durch Natlan. In einem glücksbringenden Seeblau mit einem Hauch von leuchtendem Orange gefärbt, strahlt diese Kleidung eine überbordende Vitalität aus, die zu dem Land passt, in dem sie getragen wird.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Geschenk der Melusinen\",\n\t\t\t\t\"description\": \"Ein Überraschungsgeschenk für Neuvillette. Die Überraschung war nicht nur das Geschenk selbst, sondern auch die vielen kleinen helfenden Hände, die an seiner Herstellung beteiligt waren. Wie Flüsse ins weite Meer münden, können sich auch Tautropfen zu einem Wunder ansammeln, das in allen sieben Farben schimmert.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Ein Traum von Regen und Bambus\",\n\t\t\t\t\"description\": \"Yaoyaos Kleidung. Klare Schatten der jungen Triebe fallen auf den Schreibtisch, manchmal ist der hereinkommende Gast nicht der spielerische Wind.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Detailierte Erläuterung\",\n\t\t\"promotional\": \"Höhere Wahrscheinlichkeit\",\n\t\t\"itemlist\": \"Objektliste\",\n\t\t\"increasedRate\": \"Bessere Wahrscheinlichkeiten!\",\n\t\t\"percentageDrop\": \"Wahrscheinlichkeit für {rarity}-Sterne-Objekte: {percentage}\",\n\t\t\"wishDetails\": \"Details\",\n\t\t\"probInfo\": \"Basiswahrscheinlichkeit für {rarity}-Sterne-Objekte: {singlePercentage} (Garantie: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Objekte, die bei den Gebeten zu erhalten sind:\",\n\t\t\"itemType\": \"Kategorie\",\n\t\t\"itemName\": \"Name\",\n\t\t\"beginnerInfo\": \"Kein Zeitlimit (Endet nach 20 Gebeten)\",\n\t\t\"limited\": \"Zeitlich begrenzte Aktion\",\n\t\t\"permanent\": \"Permanent\",\n\t\t\"alert\": \"※ Dies ist ein {wishName}. Die Anzahl der Wünsche, die garantiert werden, wird nur innerhalb dieses Ereignisses kumuliert und ist unabhängig von der Garantie bei anderen Gebeten.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"Verfügbare 5-Sterneobjekte in dieser Aktion\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"Das Anfängergebet hat keine zeitliche Begrenzung und richtet sich an Reisende, die kürzlich in Teyvat gelandet sind. Nur Nicht-exklusive Figuren und Waffen sind hier erhältlich. <br /> In Anfängerwunsch kosten 10-Wunsch-Sets <span> 20%</span> weniger Vorbestimmtes Schicksal, und dein erstes 10-Wünsche-Set enthält garantiert {character}, und dein zweites 10-Wünsche-Set enthält garantiert einen <span> anderen </span> min. 4-Sterne Charakter! <br/> Das Anfängergebet endet nach <span> 20 </span> Gebeten. Nachdem es geendet hat, wird das Gebet verschwinden.\",\n\t\t\t\"※Im Normalfall besteht dieselbe Basiswahrscheinlichkeit für alle Figuren oder Waffen. Richte dich bei erhöhten Wahrscheinlichkeiten, Garantien oder Ähnlichem bitte nach den jeweiligen Regeln.\",\n\t\t\t\" Regeln \",\n\t\t\t\"Basiswahrscheinlichkeit zum Ziehen von 5-Sterne-Objekten = <span> 0.600%</span> <br /> Basiswahrscheinlichkeit zum Ziehen von 4-Sterne-Objekten = <span> 5.100%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) = <span> 13.000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"Das Standardwgebet \\\"{bannerName}\\\" ist immer verfügbar. Hier können Reisende nicht limitierte Figuren und Waffen ziehen.<br/> Alle 10 Ziehungen bei diesem Gebet gibt es <span>auf jeden Fall</span> mindestens 1 Objekt mit 4 oder mehr Sternen.\",\n\t\t\t\"※Im Normalfall besteht dieselbe Basiswahrscheinlichkeit für alle Figuren oder Waffen. Richte dich bei erhöhten Wahrscheinlichkeiten, Garantien oder Ähnlichem bitte nach den jeweiligen Regeln.\",\n\t\t\t\"〓Regeln〓\",\n\t\t\t\"Basiswahrscheinlichkeit zum Ziehen von 5-Sterne-Objekten = <span>0.600%</span>; Basiswahrscheinlichkeit zum Ziehen von 5-Sterne-Figuren = <span>0.300%</span>, und die Basiswahrscheinlichkeit zum Ziehen von 5-Sterne-Waffen = <span>0.300%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) für Ziehen von 5-Sterne Gegenstand = <span>1.600%</span>; Nach höchstens <span>90</span> Gebeten erhältst du aufgrund der Garantie auf jeden Fall ein 5-Sterne-Objekt. <br> Basiswahrscheinlichkeit zum Ziehen von 4-Sterne-Objekten = <span>5.100%</span>; Basiswahrscheinlichkeit zum Ziehen von 4-Sterne-Figuren = <span>2.550%</span>, und Basiswahrscheinlichkeit zum Ziehen von 4-Sterne-Waffen = <span>2.550%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) für Ziehen von 4-Sterne-Gegenständen  = <span>13.000%</span>; Nach höchstens <span>10</span> Gebeten erhältst du aufgrund der Garantie auf jeden Fall ein 4-Sterne-Objekt.; Wahrscheinlichkeit ein 4-Sterne-Objekt durch die Garantie zu erhalten = <span>99.400%</span>, und Wahrscheinlichkeit ein 5-Sterne-Objekt durch die Garantie zu erhalten = <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Das Aktionsgebet \\\"{bannerName}\\\" ist jetzt verfügbar. Während des Aktionszeitraums, steigt die Wahrscheinlichkeit zum Ziehen der <span>limitierten</span> 5-Sterne-Figur {featuredCharacter} sowie der 4-Sterne-Figuren {rateupCharacters} <span>stark an</span>! <br/> <span> ※ Hinweis: Die limitierten Figuren dieser Aktion werden nicht im Standardgebet \\\"Wanderlust\\\" verfügbar sein.</span>\",\n\t\t\t\"※ Im Normalfall besteht dieselbe Basiswahrscheinlichkeit für alle Figuren oder Waffen. Richte dich bei erhöhten Wahrscheinlichkeiten, Garantien oder Ähnlichem bitte nach den jeweiligen Regeln.\",\n\t\t\t\"〓Regeln〓\",\n\t\t\t\"5-Sterne-Objekte\",\n\t\t\t\"Für Aktionsgebet \\\"{bannerName}\\\": Basiswahrscheinlichkeit eine 5-Sterne-Figur zu erhalten = <span> 0.600% </span>; Gesamtwahrscheinlichkeit (inkl. Garantie) = <span>1.600%</span>; e-Figuren = <span>0.300%</span>, und die Basiswahrscheinlichkeit zum Ziehen von 5-Sterne-Waffen = <span>0.300%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) für Ziehen von 5-Sterne Gegenstand = <span>1.600%</span>; Nach höchstens <span>90</span> Gebeten erhältst du aufgrund der Garantie auf jeden Fall ein 5-Sterne-Objekt.<br/> Sobald du bei einem Gebet eine 5-Sterne-Figur ziehst, besteht die Wahrscheinlichkeit von <span> 50.000%</span>, die Aktionsfigur {featuredCharacter} zu erhalten. Wenn du bei diesem Gebet eine 5-Sterne-Figure ziehst, die keine Aktionsfigur ist, bekommst du beim nächsten Ziehen einer 5-Sterne-Figur <span>auf jeden Fall</span> eine Aktionsfigur.\",\n\t\t\t\"4-Sterne-Objekte\",\n\t\t\t\"Für das Aktionsgebet \\\"{bannerName}\\\": Basiswahrscheinlichkeit ein 4-Sterne-Objekt zu erhalten = <span> 5.100%</span>; Basiswahrscheinlichkeit eine 4-Sterne-Figur zu erhalten = <span>2.550%</span>, und Basiswahrscheinlichkeit eine 4-Sterne-Waffe zu erhalten = <span>2.550%</span>; Basiswahrscheinlichkeit einen 4-Sterne-Gegenstand zu erhalten = <span> 13.000%</span>; Nach höchsten <span>10<span> Gebeten erhältst du aufgrund der Garantie mindestens 1 4-Sterne-Objekt.; Wahrscheinlichkeit ein 4-Sterne-Objekt durch die Garantie zu erhalten = <span>99.400%</span>, und Wahrscheinlichkeit ein 5-Sterne-Objekt durch die Garantie zu erhalten = <span>0.600%</span>. <br/> Sobald du bei einem Gebet eine 5-Sterne-Figur ziehst, besteht die Wahrscheinlichkeit von <span>50.000%</span> eine der Aktionsfiguren {rateupCharacters} zu erhalten. Wenn du bei diesem Gebet ein 4-Sterne-Objekt ziehst, das keine Aktionsfigur ist, bekommst du beim nächsten Ziehen eines 4-Sterne-Objektes <span>auf jeden Fall</span> eine Aktionsfigur. Wenn du beim Gebet ein 4-Sterne-Aktionsobjekt erhältst, ist die Wahrscheinlichkeit zum Erhalten aller 4-Sterne-Aktionsfiguren bei diesem Gebet identisch.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Das Aktionsgebet \\\"{bannerName}\\\" ist nun verfügbar. Während des Aktionszeitraums, steigt die Wahrscheinlichkeit zum Ziehen der <span>limitierten</span> 5-Sterne-Waffen {featuredWeapon1} und {featuredWeapon2} sowie der <span>limitierten</span> 4-Sterne-Waffen {rateupWeapons} <span>stark an</span>! <br/> <span> ※ Hinweis: Die limitierten Waffen dieser Aktion werden nicht im Standardgebet \\\"Wanderlust\\\" verfügbar sein.</span>\",\n\t\t\t\"※ Im Normalfall besteht dieselbe Basiswahrscheinlichkeit für alle Figuren oder Waffen. Richte dich bei erhöhten Wahrscheinlichkeiten, Garantien oder Ähnlichem bitte nach den jeweiligen Regeln.\",\n\t\t\t\" Regeln \",\n\t\t\t\"5-Sterne-Objekte\",\n\t\t\t\"Für Aktionsgebet \\\"{bannerName}\\\": Basiswahrscheinlichkeit eine 5-Sterne-Waffe zu erhalten = <span>0.700%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) = <span>1.850%</span>; Nach höchstens <span>80</span> Gebeten erhältst du aufgrund der Garantie auf jeden Fall eine 5-Sterne-Waffe<br/> Sobald du beim Gebet eine 5-Sterne-Waffe ziehst, besteht die Wahrscheinlichkeit von <span>75.000%</span>, eine der 5-Sterne-Aktionswaffen {featuredWeapon1} oder {featuredWeapon2} zu bekommen. Wenn du eine 5-Sterne-Waffe ziehst die keine Aktionswaffe ist, bekommst du beim nächsten Ziehen einer 5-Sterne-Waffe <span>auf jeden Fall</span> eine 5-Sterne-Aktionswaffe. Wenn du beim Aktionsgebet \\\"Göttliches Werk\\\" nach dem Setzen eines Kurses auf eine Waffe mithilfe von \\\"Göttlicher Kurs\\\" eine 5-Sterne-Waffe erhältst, die nicht die ist, auf die du den Kurs gesetzt hast, erhältst du 1 Schicksalspunkt. Sobald du die <span>maximale</span> Menge an Schicksalspunkten gesammelt hast, wird die nächste 5-Sterne-Waffe, die du bei dem Gebet ziehst, <span>auf jeden Fall</span> die Waffe sein, auf die du den Kurs gesetzt hast. Sobald du beim Gebet die Waffe erhältst, auf die du den Kurs gesetzt hast, werden alle Schicksalspunkte wieder auf <span>0</span> gesetzt, egal ob du bereits die maximale Menge an Schicksalspunkten erreicht hast oder nicht. Danach kannst du erneut Schicksalspunkte sammeln. Wenn du nicht mithilfe von \\\"Göttlicher Kurs\\\" auf eine bestimmte Waffe setzt, sammelst du auch <span>keine</span> Schicksalspunkte an.<br/> Die Waffe, auf die du den Kurs gesetzt hast, kannst du wechseln oder komplett zurücksetzen. Bei beiden Vorgängen werden die bisher gesammelten Schicksalspunkte auf <span>0</span> zurückgesetzt. Danach kannst du erneut Schicksalspunkte sammeln.<br/> ※ Hinweis: Die Schicksalspunkte dieses Gebets sind nur für das aktuelle Aktionsgebet \\\"Göttliches Werk\\\" gültig. Sobald das Gebet endet, werden die Schicksalspunkte wieder auf <span>0</span> gesetzt und du kannst sie erneut sammeln.\",\n\t\t\t\"4-Sterne-Objekte\",\n\t\t\t\"Für Aktionsgebet \\\"{bannerName}\\\": Basiswahrscheinlichkeit ein 4-Sterne-Objekt zu erhalten = <span>6.000%</span>; Basiswahrscheinlichkeit ein 4-Sterne-Charakter zu erhalten = <span>3.000%</span>, und Basiswahrscheinlichkeit eine 4-Sterne-Waffe zu erhalten = <span>3.000%</span>; Gesamtwahrscheinlichkeit (inkl. Garantie) für Ziehen von 4-Sterne Gegenstand = <span>14.500%</span>; Nach höchsten <span>10<span> Gebeten erhältst du aufgrund der Garantie mindestens 1 4-Sterne-Objekt.; Wahrscheinlichkeit ein 4-Sterne-Objekt durch die Garantie zu erhalten = <span>99.300%</span>, und Wahrscheinlichkeit ein 5-Sterne-Objekt durch die Garantie zu erhalten = <span>0.700%</span>. <br/> Sobald du bei einem Gebet ein 4-Sterne-Gegenstand ziehst, besteht die Wahrscheinlichkeit von <span>75.000%</span> eine der Aktionswaffen {rateupWeapons} zu erhalten. Wenn du bei diesem Gebet ein 4-Sterne-Objekt ziehst, das keine Aktionswaffe ist, bekommst du beim nächsten Ziehen eines 4-Sterne-Objektes <span>auf jeden Fall</span> eine Aktionswaffe. Wenn du beim Gebet eine 4-Sterne-Aktionswaffe erhältst, ist die Wahrscheinlichkeit zum Erhalten aller 4-Sterne-Aktionswaffen bei diesem Gebet identisch.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"Wenn du 5-Sterne-Waffen bei diesem Gebet erhältst, bekommst du zusätzlich {starglitter} x10;\",\n\t\t\t\"fourStar\": \"Wenn du 4-Sterne-Waffen bei diesem Gebet erhältst, bekommst du zusätzlich {starglitter} x2;\",\n\t\t\t\"threeStar\": \"Wenn du 3-Sterne-Waffen bei diesem Gebet erhältst, bekommst du zusätzlich {stardust} x15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \" Vorhandene Characters〓\",\n\t\t\t\"text\": \"Sobald du eine {rarity}-Sterne Figur das zweite bis siebte Mal, auf welche Weise auch immer, erhältst, wird diese Figur in je 1 {stellaFortuna} der jeweiligen Figur und {starglitter} {constBonus} umgewandelt; Beim achten Mal wird die Figur in {starglitter} {fullConstBonus} umgewandelt.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Gebetsverlauf\",\n\t\t\"text\": \"Verlauf\",\n\t\t\"resetButton\": \"Löschen\",\n\t\t\"resetPromptTitle\": \"Verlauf löschen?\",\n\t\t\"resetPrompt\": \"Es werden auch alle Figuren und Waffen des \\\"{bannerName}\\\" Banners aus deinem Inventar gelöscht. <br /> Bist du sicher, dass du alles zurücksetzen möchtest?\",\n\t\t\"resetSuccess\": \"Erfolgreich zurückgesetzt!\",\n\t\t\"keepPity\": \"Pity und Garantiemechanik nicht zurücksetzen\",\n\t\t\"selectWish\": \"Gebetskategorie:\",\n\t\t\"disclaimer\": \"Wir speichern niemals Daten im Cloudspeicher. Alle Daten werden bei IndexedDB gespeichert, das heißt die Daten werden in deinem Browserspeicher gespeichert. Sie gehen niemals verloren, außer du löschst sie manuell durch den Löschen/Zurücksetzen Knopf oder leerst deinen Browserspeicher.\",\n\t\t\"currentPity\": \"Aktueller Pity:\",\n\t\t\"totalPull\": \"Zuge insgesamt:\",\n\t\t\"totalSpend\": \"Insgesamt ausgegeben:\",\n\t\t\"filterTxt\": \"Filter\",\n\t\t\"filter\": \"{rarity} Sterne\",\n\t\t\"filterAll\": \"Alle\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Erhalten am\",\n\t\t\"waiting\": \"Warte\",\n\t\t\"noData\": \"Keine Daten verfügbar.\",\n\t\t\"untracked\": \"Kein Verlauf\",\n\t\t\"win\": \"Gewonnenes 50/50\",\n\t\t\"lose\": \"Verlorenes 50/50\",\n\t\t\"guaranteed\": \"Garantiert\",\n\t\t\"captured\": \"Strahlender Fang\",\n\t\t\"selected\": \"Ausgewählte Waffe\",\n\t\t\"olderLayout\": \"Altes Layout\",\n\t\t\"switchv2\": \"Wechsel zum neuen Layout\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Shop\",\n\t\t\"paimonBargains\": \"Rares für Staub und Glanz\",\n\t\t\"fateNeeded\": \"{rollQty} {currency} zu wenig.\",\n\t\t\"primoNeeded\": \"Mit {primoPrice} Urgestein kaufen?\",\n\t\t\"purchaseUpto\": \"1x erhältlich\",\n\t\t\"purchaseConfirm\": \"Kauf bestätigen\",\n\t\t\"exchangeHeading\": \"Items umwandeln\",\n\t\t\"purchaseHeading\": \"Items kaufen\",\n\t\t\"purchaseButton\": \"Kaufen\",\n\t\t\"pay\": \"Zahlen\",\n\t\t\"product\": \"Produkt\",\n\t\t\"consume\": \"Verbrauchen\",\n\t\t\"selectPayment\": \"Zahlungsart wählen\",\n\t\t\"unrealWallet\": \"Keine reale Währung\",\n\t\t\"convertPrimo\": \"Automatisch in Urgestein umwandeln?\",\n\t\t\"proceedPayment\": \"Zahlung abschließen\",\n\t\t\"qty\": \"Anzahl\",\n\t\t\"insufficient\": \"Unzureichende Zahlmittel\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Kristalle aufladen\",\n\t\t\"initialBonus\": \"Inklusive Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Kaufe Schöpfungskristalle\",\n\t\t\"recomendedHeading\": \"Empfohlene Waren\",\n\t\t\"paimonHeading\": \"Händler\",\n\t\t\"welkinNote\": \"Kann mehrmals gekauft werden\",\n\t\t\"limitedOffer\": \"Zeitlich begrenztes Angebot\",\n\t\t\"noLimitTime\": \"Keine limitierten Angebote verfügbar\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Mondsegen\",\n\t\t\t\"newOutfit\": \"Neue Figurenzierde\",\n\t\t\t\"dayRemaining\": \"Tage verbleibend: {days}\",\n\t\t\t\"alreadyClaimed\": \"Heute bereits gekauft\",\n\t\t\t\"instantlyGet\": \"Sofort erhältlich\",\n\t\t\t\"dailyGift\": \"Tägliches Geschenk\",\n\t\t\t\"obtainTotal\": \"Erhalte insgesamt {totalGenesis} Schöpfungskristalle und {totalPrimo} Urgestein über 30 Tage verteilt\",\n\t\t\t\"claimingBlessing\": \"Klicke um deinen täglichen Mondsegen abzuholen!\",\n\t\t\t\"issuedPurchase\": \"Fehler beim Kauf\",\n\t\t\t\"collect\": \"Sammle für 30 Tage tägliche Login-Belohnungen\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Mit Sternenglanz kaufen\",\n\t\t\t\"stardust\": \"Mit Sternenstaub kaufen\",\n\t\t\t\"primogem\": \"Mit Urgestein kaufen\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Schöpfungskristalle\",\n\t\t\t\"primogem\": \"Urgestein\",\n\t\t\t\"intertwined\": \"Verwobenes Schicksal\",\n\t\t\t\"acquaint\": \"Vorbestimmtes Schicksal\",\n\t\t\t\"starglitter\": \"Herrenloser Sternenglanz\",\n\t\t\t\"stardust\": \"Herrenloser Sternenstaub\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Ein Samen des Schicksals, der Träume verbindet. Sein Glanz kann Schicksale miteinander verflechten und die Träume von Menschen zusammenführen. Es ist dieser Glanz, der die Sterne Bilder des Herzens formen lässt.\",\n\t\t\t\"acquaint\": \"Ein Samen, des Hoffnung zwischen den Sternen aufblinken lässt. Egal wie weit Menschen voneinander entfernt sind, so wird dieser Schein den Menschen, die füreinander bestimmt sind, den Weg weisen, sodass sie sich unter dem Sternenhimmel treffen.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventar\",\n\t\t\"unsetOutfit\": \"Outfit ablegen\",\n\t\t\"setOutfit\": \"Outfit anlegen\",\n\t\t\"refinement\": \"Verfeinerung {count}\",\n\t\t\"constellation\": \"Konstellation {count}\",\n\t\t\"extra\": \"{count} Zusätzlich\",\n\t\t\"firstSummon\": \"Erstmals erhalten am: {date}\",\n\t\t\"notOwned\": \"Noch nicht erhalten\",\n\t\t\"sort\": \"Sortieren\",\n\t\t\"rarity\": \"Seltenheit\",\n\t\t\"name\": \"Name\",\n\t\t\"quantity\": \"Menge\",\n\t\t\"element\": \"Element\",\n\t\t\"release\": \"Erscheinungsdatum\",\n\t\t\"type\": \"Typ\",\n\t\t\"owned\": \"In Besitz\",\n\t\t\"showAllOption\": \"Zeige alle {item}s\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Nein\",\n\t\t\"yes\": \"Ja\",\n\t\t\"text\": \"Menü\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Optionen\",\n\t\t\"updates\": \"Updateverlauf\",\n\t\t\"customBanner\": \"Eigene Banner\",\n\t\t\"backupRestore\": \"Sichern & Wiederherstellen\",\n\t\t\"language\": \"Sprache\",\n\t\t\"currency\": \"Währung\",\n\t\t\"fates\": \"Anzahl der Gebete\",\n\t\t\"unlimited\": \"Unbegrenzt\",\n\t\t\"manual\": \"Benutzerdefiniert\",\n\t\t\"mute\": \"Audio & Soundeffekte stummschalten\",\n\t\t\"switchBanner\": \"Banner wechseln\",\n\t\t\"showAllitems\": \"Alle Gegenstände im Inventar zeigen\",\n\t\t\"autoskip\": \"Splash Art automatisch überspringen\",\n\t\t\"animatedbg\": \"Animierter Hintergrund\",\n\t\t\"multiRoll\": \"Anzahl Gebete bei Multigebet\",\n\t\t\"factoryReset\": \"Daten löschen und Ausgangszustand wiederherstellen\",\n\t\t\"resetTitle\": \"Auf Werkseinstellungen zurücksetzen\",\n\t\t\"rotate\": \"Drehe dein Gerät für ein besseres Erlebnis\",\n\t\t\"keepSetting\": \"Einstellungen behalten? <small> Aktueller Pity, Kontostände und Einstellungen werden nicht zurück gesetzt.</small>\",\n\t\t\"clearCache\": \"Zwischenspeicher leeren ( {size} )? <small>Zwischengespeicherten Dateien werden danach erneut heruntergeladen! </small>\",\n\t\t\"resetButton\": \"Jetzt Zurücksetzen\",\n\t\t\"resetPrompt\": \"Bist du dir sicher dass du <strong> alle Daten </strong> löschen willst and zu den Standardeinstellungen zurückkehren möchtest?\",\n\t\t\"resetSuccess\": \"Erfolgreich zurückgesetzt!\",\n\t\t\"proAccess\": \"Premiumzugang\",\n\t\t\"getpro\": \"Hier freischalten\",\n\t\t\"removeKey\": \"Premiumschlüssel löschen\",\n\t\t\"removeKeyConfirm\": \"Möchtest du deinen aktuellen Oremiumschlüssel wirklich löschen? Du verlierst alle Vorteile des Premiumzugangs, solange du keinen neuen Schlüssel hinterlegst!\",\n\t\t\"getNewKey\": \"Neuen Schlüssel hier erhalten!\",\n\t\t\"noKey\": \"Du hast keinen Schlüssel?\",\n\t\t\"verifyFail\": \"Verifizierung des AdKeys fehlgeschlagen, Überprüfe deine Verbindung!\",\n\t\t\"invalidKey\": \"Dein Schlüssel ist ungültig\",\n\t\t\"keyExpired1\": \"Schlüssel abgelaufen!\",\n\t\t\"keyExpired2\": \"Dein Schlüssel: \\\"{key}\\\" ist seit dem {date} abgelaufen!\",\n\t\t\"adFreeUser\": \"Dein Premiumzugang ist bereits freigeschaltet!\",\n\t\t\"inputKeyPlaceholder\": \"Schlüssel eingeben\",\n\t\t\"inputKeyTxt\": \"Gebe hier deinen Premimumschlüssel ein\",\n\t\t\"checkingKey\": \"Verifiziere hinterlegten Premimumschlüssel\",\n\t\t\"benefit\": \"Vorteile\",\n\t\t\"authorNotes\": [\n\t\t\t\"Keine Werbung!\",\n\t\t\t\"Beliebig viele eigene Banner!\",\n\t\t\t\"Der Premiumschlüssel kann auch für {HSRWishSim} verwendet werden, um die gleichen Vorteile freizuschalten!\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/en-US.json",
    "content": "{\n\t\"title\": \"Genshin Impact Wish Simulator\",\n\t\"item\": \"Item\",\n\t\"character\": \"Character\",\n\t\"weapon\": \"Weapon\",\n\t\"vision\": \"Vision\",\n\t\"anemo\": \"Anemo\",\n\t\"cryo\": \"Cryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Electro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Geo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Bow\",\n\t\"catalyst\": \"Catalyst\",\n\t\"claymore\": \"Claymore\",\n\t\"sword\": \"Sword\",\n\t\"polearm\": \"Polearm\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Obtained\",\n\t\"waiting\": \"Waiting\",\n\t\"connectionFailed\": \"Connection Failed!\",\n\t\"confirmButton\": \"Confirm\",\n\t\"cancelButton\": \"Cancel\",\n\t\"disclaimer\": \"All assets used in this site are owned by miHoYo.\",\n\t\"fanmade\": \"This is purely a fan made Application, enjoy it !\",\n\t\"pressToContinue\": \"Press anywhere in the blank area to continue\",\n\t\"installInstruction\": \"Instructions to Install to Home Screen/Desktop\",\n\t\"share\": \"Share\",\n\t\"screenshot\": \"Take Picture\",\n\t\"capturing\": \"Capturing\",\n\t\"rewardFirstShare\": \"Reward for first share : {qty}\",\n\t\"version\": \"Version\",\n\t\"donate\": \"Donate\",\n\t\"banner\": {\n\t\t\"beginner\": \"Beginners' Wish\",\n\t\t\"wanderlust\": \"Wanderlust Invocation\",\n\t\t\"epitome-invocation\": \"Epitome Invocation\",\n\t\t\"ode-to-the-dawn-breeze\": \"Ode to the #Dawn Breeze#\",\n\t\t\"adrift-in-the-harbor\": \"#Adrift# in The Harbor\",\n\t\t\"ambrosial-essence\": \"Ambrosial Essence\",\n\t\t\"ancient-flame-ablaze\": \"#Ancient# Flame Ablaze\",\n\t\t\"astral-actuation\": \"Astral Actuation\",\n\t\t\"auric-blaze\": \"#Auric# Blaze\",\n\t\t\"azure-excursion\": \"#Azure# Excursion\",\n\t\t\"ballad-in-goblets\": \"#Ballad# in Goblets\",\n\t\t\"born-of-ocean-swell\": \"Born of #Ocean Swell#\",\n\t\t\"caution-in-confidence\": \"#Caution# in Confidence\",\n\t\t\"chanson-of-many-waters\": \"Chanson of #Many Waters#\",\n\t\t\"conjuring-chiaroscuro\": \"Conjuring #Chiaroscuro#\",\n\t\t\"cornucopia-of-contention\": \"#Cornucopia# of Contention\",\n\t\t\"dance-of-lantern\": \"#Dance# of Lantern\",\n\t\t\"dawns-drifting-reverie\": \"#Dawn's# Drifting Reverie\",\n\t\t\"decree-of-the-deeps\": \"Decree of the #Deeps#\",\n\t\t\"dewlit-tranquility\": \"#Dewlit# Tranquility\",\n\t\t\"discerner-of-enigmas\": \"Discerner of #Enigmas#\",\n\t\t\"drifting-luminescence\": \"#Drifting# Luminescence\",\n\t\t\"everbloom-violet\": \"#Everbloom# Violet\",\n\t\t\"farewell-of-snezhnaya\": \"Farewell of #Snezhnaya#\",\n\t\t\"forgefires-blessing\": \"#Forgefire#'s Blessing\",\n\t\t\"from-ashes-reborn\": \"From #Ashes# Reborn\",\n\t\t\"gentry-of-hermitage\": \"#Gentry# of Hermitage\",\n\t\t\"harmonious-abundance\": \"Harmonious #Abundance#\",\n\t\t\"illuminating-lightning\": \"Illuminating Lightning\",\n\t\t\"immaculate-pulse\": \"Immaculate #Pulse#\",\n\t\t\"in-the-name-of-the-rosula\": \"In the Name of the #Rosula#\",\n\t\t\"invitation-to-mundane-life\": \"Invitation to #Mundane Life#\",\n\t\t\"la-chanson-cerise\": \"La Chanson #Cerise#\",\n\t\t\"leaves-in-the-wind\": \"#Leaves# in The Wind\",\n\t\t\"moment-of-bloom\": \"#Moment of# Bloom\",\n\t\t\"moonsong-of-the-groves\": \"Moonsong of the #Groves#\",\n\t\t\"of-silken-clouds-woven\": \"Of #Silken Clouds# Woven\",\n\t\t\"oni_s-royale\": \"#Oni's# Royale\",\n\t\t\"piercing-shots-crimson-wake\": \"#Piercing Shot's# Crimson Wake\",\n\t\t\"reign-of-serenity\": \"Reign of #Serenity#\",\n\t\t\"remembrance-of-jade-and-stone\": \"Remembrance of #Jade and Stone#\",\n\t\t\"romaritime-meluserenity\": \"Romaritime Meluserenity\",\n\t\t\"roving-chalice-of-dewgrass\": \"Roving Chalice of #Dewgrass#\",\n\t\t\"rubedo-of-white-stone-born\": \"Rubedo, of #White# Stone-Born\",\n\t\t\"sharktacular-surfari\": \"Sharktacular Surfari\",\n\t\t\"secretum-secretorum\": \"#Secretum# Secretorum\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Seeker# of Flame-Wrought Secrets\",\n\t\t\"somnias-a-luna\": \"Somnias a #Luna#\",\n\t\t\"sparkling-steps\": \"#Sparkling# Steps\",\n\t\t\"starry-nights-whispers\": \"#Starry# Night's Whispers\",\n\t\t\"tapestry-of-golden-flames\": \"Tapestry of #Golden Flames#\",\n\t\t\"tempestuous-destiny\": \"Tempestuous #Destiny#\",\n\t\t\"temptation-of-the-crimson-sands\": \"Temptation of the #Crimson Sands#\",\n\t\t\"the-crane-soars-skyward\": \"The Crane Soars #Skyward#\",\n\t\t\"the-hearths-ashen-shadow\": \"The #Hearth's# Ashen Shadow\",\n\t\t\"the-heron_s-court\": \"#The Heron's# Court\",\n\t\t\"the-lone-light-knocks-at-night\": \"The #Lone Light# Knocks at Night\",\n\t\t\"the-moongrass-enlightenment\": \"The #Moongrass'# Enlightenment\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"The #Northerly Wind's# Song of Triumph\",\n\t\t\"the-transcendent-one-returns\": \"The #Transcendent One# Returns\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Thunder# Rends the Plains on High\",\n\t\t\"twilight-arbiter\": \"Twilight #Arbiter#\",\n\t\t\"twirling-lotus\": \"#Twirling# Lotus\",\n\t\t\"viridescent-vigil\": \"Viridescent #Vigil#\",\n\t\t\"void-stars-advent\": \"#Void Star's# Advent\",\n\t\t\"ya-hoho-compendium\": \"#Ya-Hoho!# Compendium\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity:\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Epitomized Path\",\n\t\t\"fatePoint\": \"Fate Points\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Do you wish to cancel your curent Course ?\",\n\t\t\"cancelDesc\": \"Cancelation will reset your accumulated Fate Points\",\n\t\t\"selectWeapon\": \"Select Weapon\",\n\t\t\"chartCourseOf\": \"Chart Course of {target}\",\n\t\t\"cancelCourse\": \"Cancel Course\",\n\t\t\"chartCourse\": \"Chart Course\",\n\t\t\"courseSetFor\": \"Course Set For: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Epitomized Path\\\" is a wish mechanic in \\\"Epitome Invocation\\\". Travelers can chart a course towards a specific 5-Star promotional weapon they hope to obtain.\",\n\t\t\t\"Once you have charted a course towards your chosen weapon, you will obtain 1 Fate Point upon <span> receiving a 5-Star weapon that is not the one that you chose</span>. You can obtain a maximum of 2 Fate Points.\",\n\t\t\t\"Once you've reached the maximum amount of Fate Points, the next 5-Star weapon you choose will be the one you have chosen through \\\"Epitomized Path\\\".\",\n\t\t\t\"When you obtain the chosen weapon in Epitome Invocation through Epitomized Path, <span> the accumulated Fate Points will be cleared </span>.\",\n\t\t\t\"If you do not use Epitomized Path to obtain a weapon, you will not accumulate Fate Points.\",\n\t\t\t\"The charted course towards a certain weapon can be changed or cancelled. However, after doing so, any current Fate Points will be cleared.\",\n\t\t\t\"At the end of the current period of Epitome Invocation, any current Fate Points will be cleared.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Wish\",\n\t\t\"rollButton\": \"Wish {count}\",\n\t\t\"stellaFortuna\": \"Stella Fortuna\",\n\t\t\"loadFailed\": \"Failed to load Banner! <br /> Please switch to other banner or reconnect to the internet to avoid errors!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"All Banners\",\n\t\t\t\"previous\": \"Previous Banner\",\n\t\t\t\"findBanner\": \"Find a Banner\",\n\t\t\t\"group\": \"Group\",\n\t\t\t\"beginner\": \"Beginners' Wish\",\n\t\t\t\"character-event\": \"Character Event Wish\",\n\t\t\t\"weapon-event\": \"Weapons Wish\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Standard Wish\",\n\t\t\t\"wishDescription\": \"Every 10 wishes is guaranteed to include at least one 4-star or higher item\",\n\t\t\t\"novice\": \"Novice Wishes\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"10-set 20% off. First 10-set will receive {character}.\",\n\t\t\t\"beginnerNote\": \"\\\"As a dutiful maid would.\\\"\",\n\t\t\t\"beginnerChance\": \"Chances Remaining: {chances}\",\n\t\t\t\"standardNote\": \"Standard wishes have no time limit.\",\n\t\t\t\"allWeaponTypes\": \"All Weapon Types\",\n\t\t\t\"etc\": \"etc.\",\n\t\t\t\"probIncreased\": \"Probability increased !\",\n\t\t\t\"eventNote\": \"5-Star event-exclusive characters can only be obtained in the specified wish during the specified time period(s).\",\n\t\t\t\"viewDetails\": \"View Details for more.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Skip\",\n\t\t\t\"meteorFailed\": \"Meteor Animation Failed to Load\",\n\t\t\t\"new\": \"New\",\n\t\t\t\"convertion\": \"Convert\",\n\t\t\t\"title\": \"Wish Result for {item} et al\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Character Outfits\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"Set Outfit\",\n\t\t\"owned\": \"Already Owned\",\n\t\t\"purchasePrompt\": \"You don't have a character for this costume yet, are you sure to purchase this costume?\",\n\t\t\"promptInfo\": \"You still can use this costume after getting the right character\",\n\t\t\"obtained\": \"New Outfit Obtained\",\n\t\t\"unlocked\": \"{character}: Outfit Unlocked\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Sea Breeze Dandelion\",\n\t\t\t\t\"description\": \"Jean's summer wear. Light and cool, but no less elegant for it. The perfect choice for a trip to the seaside.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Summertime Sparkle\",\n\t\t\t\t\"description\": \"Barbara's beach attire. This pretty skirt brims with summer vitality and carries with it a cool ocean breeze.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Opulent Splendor\",\n\t\t\t\t\"description\": \"Keqing's formal wear. Amidst the beautiful dawn of the Lantern Rite, the threads weaved by days of hard work intertwine into a light yet magnificent appearance.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Orchid's Evening Gown\",\n\t\t\t\t\"description\": \"Ningguang's formal wear. The long cyan skirt traces her elegant curves, and the butterfly wings at her ankles lend the outfit a touch of light grace.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Ein Immernachtstraum\",\n\t\t\t\t\"description\": \"A ceremonial outfit for the Prinzessin. May she who is noble retain her courage, sincerity, and kindness forever, such that no evil shall ever overcome her.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Red Dead of Night\",\n\t\t\t\t\"description\": \"One of the outfits Diluc wears during covert actions, it resembles a flame dancing in the shadows. The crimson red traces it leaves behind at the edges of the enemy's vision will scar their nightmares forever.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"A Sobriquet Under Shade\",\n\t\t\t\t\"description\": \"An outfit Lisa had someone commission for her when she revisited Sumeru. A perfect balance between practicality and elegance, the dress bears a resemblance to Lisa’s old uniform from the Akademiya days.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Springbloom Missive\",\n\t\t\t\t\"description\": \"Ayaka’s travel outfit. Its design is based on the Fontaine dresses depicted in light novel illustrations and seems to reflect the lifestyle of proper ladies who live in that nation.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Blossoming Starlight\",\n\t\t\t\t\"description\": \"An exquisite outfit Klee wears only for the most important performances. The colors are brilliant, like a cake adorned with cream flowers and crowned with scarlet candles. With it comes happiness and smiles that will fill your adventures.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Sailwind Shadow\",\n\t\t\t\t\"description\": \"Kaeya's outfit from his role as the \\\"Dagger Bandit\\\" in the play. Though flamboyant and designed to be as eye-catching as possible, it isn't difficult to put on, though it does take some time to get all the accessories and daggers sorted.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Frostflower Dew\",\n\t\t\t\t\"description\": \"This Lantern Rite gift that Shenhe received is a set of elegant formal attire that her master, Cloud Retainer had commissioned for her. Red ropes still adorn her arms, but the bitter cold in Shenhe's heart has faded\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Twilight Blossom\",\n\t\t\t\t\"description\": \"A light and graceful festive outfit accented mainly in black nightshade and cerulean blue. Its hair accessory is as radiant as the Qingxin — a pairing that Ganyu is most fond of.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Bamboo Rain\",\n\t\t\t\t\"description\": \"Formal wear prepared by the Feiyun Commerce Guild for Xingqiu. The bamboo prints are refined and the cut is most flattering, but Xingqiu's favorite aspect of the outfit is its inner pockets, into which a thinner novel might be stuffed.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Phantom in Boots\",\n\t\t\t\t\"description\": \"Kirara's outfit. The swashbuckling feline of fairytale fame, the crafty courier of dearly-held dreams... is pleased to make your acquaintance!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Breeze of Sabaa\",\n\t\t\t\t\"description\": \"An elegant outfit for Nilou, this featherweight dress is seemingly woven of countless flowers, and with it drifts a light fragrance like the east wind at dawn, carrying beauteous blessings from a fairytale land.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Cherries Snow-Laden\",\n\t\t\t\t\"description\": \"Hu Tao's outfit. Styled in a palette lighter than the dark ceremonial wear favored by the Wangsheng Funeral Parlor, the dress is a special gift from her good friend Xiangling. The sunglasses, for their part, are from Hu Tao's personal collection\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"New Year's Cheers\",\n\t\t\t\t\"description\": \"Xiangling's outfit. The red coat glows like a stove amidst cold winds, topped with a hat that, at Hu Tao's suggestion, took inspiration from Guoba's appearance — a design that's right up Xiangling's alley.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Tranquil Banquet\",\n\t\t\t\t\"description\": \"The outfit Yelan has prepared for her holiday. Elegant yet neat, it conveys a sense of leisure while somehow still carrying a hint of concealed aggression…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Adventures in Blazing Hue\",\n\t\t\t\t\"description\": \"Bennett's traveling attire for his journeys in Natlan. Dyed lucky lakewater blue with hints of blazing orange, these clothes emanate an overflowing vitality that matches the land in which they are worn.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Melusent Gift\",\n\t\t\t\t\"description\": \"A surprise gift for Neuvillette. The delight comes not just from the gift itself, but from every little hand that helped make it. As rivers merge into the boundless sea, so too shall dewdrops congregate to create a shimmering, iridescent miracle.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Rainlit Bamboo Reverie\",\n\t\t\t\t\"description\": \"Yaoyao's outfit. New shoots cast shifting shadows on the desk in disarray; at times the guest who enters is not the wind at play.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Details\",\n\t\t\"promotional\": \"Promotional Items\",\n\t\t\"itemlist\": \"List of Items\",\n\t\t\"increasedRate\": \"Increased Drop Rates\",\n\t\t\"percentageDrop\": \"Percentage of {rarity}-Star Item Drops: {percentage}\",\n\t\t\"wishDetails\": \"Wish Details\",\n\t\t\"probInfo\": \"Base Probability for {rarity}-Star Item Drops: {singlePercentage} (Incl. guarantee: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Item to wish for :\",\n\t\t\"itemType\": \"Item Type\",\n\t\t\"itemName\": \"Item Name\",\n\t\t\"beginnerInfo\": \"No time limit (Closes after 20 wishes)\",\n\t\t\"limited\": \"Limited Time Event\",\n\t\t\"permanent\": \"Permanent\",\n\t\t\"alert\": \"※ This is a {wishName}. The wish guarantee count is accumulated within this event only and is independent of the guarantee counts of other wishes.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"Beginners' <span> Wish </span> has no time limit and is aimed at Travelers who have recently landed in Teyvat. Non-promotional characters and weapons are available. <br /> In Beginners' Wish, 10-wish sets cost <span> 20%</span> less Acquaint Fate, and your first 10-wish set is guaranteed to include {character} , and your second 10-wish set is guaranteed to include one <span> other </span> min. 4-Star character! <br/> Beginners' Wish expires after <span> 20 </span> attempts. After the wish expires, the page will disappear.\",\n\t\t\t\"※In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"Base probability of winning 5-Star character = <span> 0.600%</span> <br /> Base probability of winning 4-Star character = <span> 5.100%</span>; consolidated probability (incl. guarantee) = <span> 13.000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" is a standard wish with no time limit. Non-event-exclusive characters and weapons are available.<br/> In this wish, <span>guaranteed</span> to win 4-star or above item at least once per 10 attempts.\",\n\t\t\t\"※In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"Base probability of winning 5-star item = <span>0.600%</span>; base probability of winning 5-star character = <span>0.300%</span>, and base probability of winning 5-star weapon = <span>0.300%</span>; consolidated probability (incl. guarantee) of winning 5-star item = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. <br> Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per <span>10</span> attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Event Wish \\\"{bannerName}\\\" is now available. During this event wish, the  <span>event-exclusive</span> 5-star character {featuredCharacter} as well as 4-star characters {rateupCharacters} will get a <span> huge drop-rate boost</span>! <br/> <span> ※ Of the above characters, the event-exclusive character will not be available in the standard wish \\\"Wanderlust Invocation.\\\"</span>\",\n\t\t\t\"※ In most cases, drifting base probability of all characters and weapons is evenly distributed. If driftingre is a boost or guarantee in effect, please refer to drifting corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Event Wish \\\"{bannerName}\\\": Base probability of winning 5-star character = <span> 0.600% </span>; consolidated probability (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star character at least once per <span> 90</span> attempts.<br/> The first time you win a 5-star item in this event wish, there is a <span> 50.000%</span> chance it will be the promotional character {featuredCharacter}. If the first 5-star character you win in this event wish is not the promotional character, then the next 5-star character you win is <span> guaranteed</span> to be the promotional character.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Event Wish  \\\"{bannerName}\\\": Base probability of winning 4-star item = <span> 5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span> 13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>. <br/> The first time you win a 4-star item in this event wish, there is a <span>50.000%</span> chance it will be one of the featured characters {rateupCharacters}. If the first 4-star item you win in this event wish is not one of the featured characters, then the next 4-star item you win is <span>guaranteed</span> to be a featured character. When you win a featured 4-star item, the probability of obtaining each featured 4-star character is equal between all of them.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Event Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star weapon {featuredWeapon1} and the 5-star weapon {featuredWeapon2} as well as the <span>event-exclusive</span> 4-star weapon {rateupWeapons}  will get a <span>huge drop-rate boost!</span> <br/> <span> ※ Of the above weapons, the event-exclusive weapons will not be available in the standard wish \\\"Wanderlust Invocation.\\\"</span>\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Event Wish \\\"{bannerName}\\\": Base probability of winning 5-star weapon = <span>0.700%</span>; consolidated probability (incl. guarantee) = <span>1.850%</span>; guaranteed to win 5-star weapon at least once per <span>80</span> attempts.<br/> The first time you win a 5-star weapon in this event wish, there is a <span>75.000%</span> chance it will be one of the promotional weapons {featuredWeapon1} and {featuredWeapon2}. If the first 5-star weapon you win in this event wish is not one of the promotional weapons, then the next 5-star weapon you win is <span>guaranteed</span> to be a promotional weapon. In the event that you obtain a promotional 5-star item through a wish without having maximum Fate Points, the probability of obtaining each promotional 5-star weapon is equal between all of them. <br/> For Event Wish \\\"{bannerName}\\\", you can chart a course towards your chosen promotional 5-star weapon with \\\"Epitomized Path.\\\" The choice of weapon will only be valid for this period of Event Wish \\\"{bannerName}\\\". <br/> For Event Wish \\\"{bannerName}\\\", after charting a course towards a chosen weapon with \\\"Epitomized Path,\\\" if you obtain a 5-star weapon that was not your chosen weapon, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star weapon will be <span>guaranteed</span> to be your chosen weapon. Once you have obtained the chosen weapon, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again. If you do not use the \\\"Epitomized Path\\\" to chart a course towards a chosen weapon, you will <span>not</span> receive Fate Points. <br/> After charting a course towards a chosen weapon, you can change your choice or cancel it altogether, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again. <br/> ※ The Fate Points for this Wish are only valid for the current period of Event Wish \\\"Epitome Invocation\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Event Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>6.000%</span>; base probability of winning 4-star character = <span>3.000%</span>, and base probability of winning 4-star weapon = <span>3.000%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>14.500%</span>; guaranteed to win 4-star or above item at least once per <span>10</span> attempts; probability of winning 4-star item through the guarantee = <span>99.300%</span>, and probability of winning 5-star item through the guarantee = <span>0.700%</span>. <br/> The first time you win a 4-star item in this event wish, there is a <span>75.000%</span> chance it will be one of the featured weapons {rateupWeapons}. If the first 4-star item you win in this event wish is not one of the featured weapons, then the next 4-star item you win is <span>guaranteed</span> to be a featured weapon. When you win a featured 4-star item, the probability of obtaining each featured 4-star weapon is equal between all of them.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"5-Star weapons won in this wish come with {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"4-star weapons won in this wish come with {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"3-star weapons won in this wish come with {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓Duplicate Characters〓\",\n\t\t\t\"text\": \"On obtaining a {rarity}-Star character that you already own (whether obtained in a wish, redeemed at the shop, or awarded by the game): The 2nd - 7th time you obtain the character, it will be converted into that character's {stellaFortuna} ×1 and {starglitter} {constBonus}; from the 8th time onwards it will be converted into {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Wish History\",\n\t\t\"text\": \"History\",\n\t\t\"resetButton\": \"Clear\",\n\t\t\"resetPromptTitle\": \"Clear History ?\",\n\t\t\"resetPrompt\": \"Are You Sure to Remove the Characters and Weapons related to \\\"{bannerName}\\\" Banner from your Inventory.\",\n\t\t\"resetSuccess\": \"Reset Successful !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Select Wish Type:\",\n\t\t\"disclaimer\": \"We Never save your data on cloud storage. All data was stored to IndexedDB, it means the data is saved on your browser storage. It will never delete till you delete it manualy through delete/reset button or clear the browser data.\",\n\t\t\"currentPity\": \"Current Pity :\",\n\t\t\"totalPull\": \"Total Pulls :\",\n\t\t\"totalSpend\": \"Total Spent :\",\n\t\t\"filterTxt\": \"Filter\",\n\t\t\"filter\": \"{rarity} Star\",\n\t\t\"filterAll\": \"All\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Time Received\",\n\t\t\"waiting\": \"Waiting\",\n\t\t\"noData\": \"No data available .\",\n\t\t\"untracked\": \"Untracked\",\n\t\t\"win\": \"Win 50/50\",\n\t\t\"lose\": \"Lose 50/50\",\n\t\t\"guaranteed\": \"Guaranteed\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Selected Weapon\",\n\t\t\"olderLayout\": \"Older Layout\",\n\t\t\"switchv2\": \"Switch to V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Shop\",\n\t\t\"paimonBargains\": \"Paimon Bargains\",\n\t\t\"fateNeeded\": \"An Aditional {rollQty} {currency} are needed.\",\n\t\t\"primoNeeded\": \"Purchase with {primoPrice} Primogem ?\",\n\t\t\"purchaseUpto\": \"Purchase Up to 1\",\n\t\t\"purchaseConfirm\": \"Purchase Confirmation\",\n\t\t\"exchangeHeading\": \"Item To Exchange\",\n\t\t\"purchaseHeading\": \"Item To Purchase\",\n\t\t\"purchaseButton\": \"Purchase\",\n\t\t\"pay\": \"Pay\",\n\t\t\"product\": \"Product\",\n\t\t\"consume\": \"Consume\",\n\t\t\"selectPayment\": \"Select Payment Type\",\n\t\t\"unrealWallet\": \"UnReal Wallet\",\n\t\t\"convertPrimo\": \" Auto convert to primogem ?\",\n\t\t\"proceedPayment\": \"Proceed Payment\",\n\t\t\"qty\": \"Qty\",\n\t\t\"insufficient\": \"Insufficient Funds\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Crystal Top-Up\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Buy Genesis Crystal\",\n\t\t\"recomendedHeading\": \"Recommended Items\",\n\t\t\"paimonHeading\": \"Paimon's Bargains\",\n\t\t\"welkinNote\": \"Can be purchased multiple times\",\n\t\t\"limitedOffer\": \"Limited Time Offer\",\n\t\t\"noLimitTime\": \"No Limit time items available\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Blessing of the Welkin Moon\",\n\t\t\t\"newOutfit\": \"New Character Outfits\",\n\t\t\t\"dayRemaining\": \"Days remaining: {days}\",\n\t\t\t\"alreadyClaimed\": \"Already Claimed today\",\n\t\t\t\"instantlyGet\": \"Instantly Get\",\n\t\t\t\"dailyGift\": \"Daily Gift\",\n\t\t\t\"obtainTotal\": \"Obtain a total {totalGenesis} Genesis Crystal and {totalPrimo} Primogems across 30 days\",\n\t\t\t\"claimingBlessing\": \"Click to claim your daily Blessing of the Welkin Moon rewards\",\n\t\t\t\"issuedPurchase\": \"Issued on purchase\",\n\t\t\t\"collect\": \"Collect daily login rewards for 30 days\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Starglitter Exchange\",\n\t\t\t\"stardust\": \"Stardust Exchange\",\n\t\t\t\"primogem\": \"Exchange with Primogems\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Genesis Crystal\",\n\t\t\t\"primogem\": \"Primogem\",\n\t\t\t\"intertwined\": \"Intertwined Fate\",\n\t\t\t\"acquaint\": \"Acquaint Fate\",\n\t\t\t\"starglitter\": \"Masterless Starglitter\",\n\t\t\t\"stardust\": \"Masterless Stardust\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"A fateful stone that connects dreams. Its glimmers can entwine fates and connect dreams, just as how its glimmer links stars into the shapes of a heart's desires.\",\n\t\t\t\"acquaint\": \"A seed that lights up the night. No matter the distance apart, guided by the stone's glimmer, the fated will meet under the stars.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventory\",\n\t\t\"unsetOutfit\": \"Unset Outfit\",\n\t\t\"setOutfit\": \"Set Outfit to Character\",\n\t\t\"refinement\": \"Refinement {count}\",\n\t\t\"constellation\": \"Constellation {count}\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"First Summoned at : {date}\",\n\t\t\"notOwned\": \"Not Owned\",\n\t\t\"sort\": \"Sort\",\n\t\t\"rarity\": \"Rarity\",\n\t\t\"name\": \"Name\",\n\t\t\"quantity\": \"Quantity\",\n\t\t\"element\": \"Element\",\n\t\t\"release\": \"Release Date\",\n\t\t\"type\": \"Type\",\n\t\t\"owned\": \"Owned\",\n\t\t\"showAllOption\": \"Show All {item}s\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"No\",\n\t\t\"yes\": \"Yes\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Options\",\n\t\t\"updates\": \"Update History\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Language\",\n\t\t\"currency\": \"Currency\",\n\t\t\"fates\": \"Number of Wishes\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"Mute Audio and Sound Effect\",\n\t\t\"switchBanner\": \"Switch Banner\",\n\t\t\"showAllitems\": \"Show all items on Inventory\",\n\t\t\"autoskip\": \"Auto Skip Splash Art\",\n\t\t\"animatedbg\": \"Animated Background\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Clear Data and Restore Default\",\n\t\t\"resetTitle\": \"Factory Reset\",\n\t\t\"rotate\": \"Rotate for better experience\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Clear Caches ( {size} ) ? <small> You will re-load the cached assets after this action</small>\",\n\t\t\"resetButton\": \"Reset Now\",\n\t\t\"resetPrompt\": \"Are You sure to clear <strong> All Data </strong> and restore to default ?\",\n\t\t\"resetSuccess\": \"Reset Successful\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Get a new one Here!\",\n\t\t\"noKey\": \"Don't have a key?\",\n\t\t\"verifyFail\": \"Failed to verifying Access Key, Check your Connection !\",\n\t\t\"invalidKey\": \"Your key is invalid\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Enter Key\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/fr-FR.json",
    "content": "{\n\t\"title\": \"Simulateur de vœux Genshin Impact\",\n\t\"item\": \"Item\",\n\t\"character\": \"Personnage\",\n\t\"weapon\": \"Arme\",\n\t\"vision\": \"Vision\",\n\t\"anemo\": \"Anémo\",\n\t\"cryo\": \"Cryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Électro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Géo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Arc\",\n\t\"catalyst\": \"Catalyseur\",\n\t\"claymore\": \"Épée à deux mains\",\n\t\"sword\": \"Épée à une main\",\n\t\"polearm\": \"Arme d'hast\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Obtenu\",\n\t\"waiting\": \"En attente\",\n\t\"connectionFailed\": \"Connexion Echouée!\",\n\t\"confirmButton\": \"Confirmer\",\n\t\"cancelButton\": \"Annuler\",\n\t\"disclaimer\": \"Tous les éléments utilisés sur ce site sont la propriété de miHoYo.\",\n\t\"fanmade\": \"Il s'agit simplement d'une application réalisée par un fan, amusez-vous bien !\",\n\t\"pressToContinue\": \"Appuyez n'importe où dans la zone vide pour continuer\",\n\t\"installInstruction\": \"Instructions pour l'installation sur l'écran d'accueil/le bureau\",\n\t\"share\": \"Partager\",\n\t\"screenshot\": \"Prendre une photo\",\n\t\"capturing\": \"Enregistrement\",\n\t\"rewardFirstShare\": \"Récompense pour le premier partage : {qty}\",\n\t\"version\": \"Version\",\n\t\"donate\": \"Faire un don\",\n\t\"banner\": {\n\t\t\"beginner\": \"Vœux pour les débutants\",\n\t\t\"wanderlust\": \"Envie de voyage\",\n\t\t\"epitome-invocation\": \"Incarnation divine\",\n\t\t\"ode-to-the-dawn-breeze\": \"Ode à la #brise matinale#\",\n\t\t\"adrift-in-the-harbor\": \"Doute #passager#\",\n\t\t\"ambrosial-essence\": \"Essence #ambrosiale#\",\n\t\t\"ancient-flame-ablaze\": \"Embrasement du feu #ancien#\",\n\t\t\"astral-actuation\": \"Exaltation #astrale#\",\n\t\t\"auric-blaze\": \"Brasier #aurique#\",\n\t\t\"azure-excursion\": \"Excursion #azurée#\",\n\t\t\"ballad-in-goblets\": \"Ballade #en pintes#\",\n\t\t\"born-of-ocean-swell\": \"#Flots# dansants\",\n\t\t\"caution-in-confidence\": \"#Prudence# en toute confidence\",\n\t\t\"chanson-of-many-waters\": \"Chant de #toutes les eaux#\",\n\t\t\"conjuring-chiaroscuro\": \"L'artifice du #clair-obscur#\",\n\t\t\"cornucopia-of-contention\": \"#Cornucopia# de la discorde\",\n\t\t\"dance-of-lantern\": \"Danse des #lanternes#\",\n\t\t\"dawns-drifting-reverie\": \"#Rêverie dérivant# à l'aube\",\n\t\t\"decree-of-the-deeps\": \"Décret des #profondeurs#\",\n\t\t\"dewlit-tranquility\": \"Quiétude #sous la rosée#\",\n\t\t\"discerner-of-enigmas\": \"Discerneuse d'#énigmes#\",\n\t\t\"drifting-luminescence\": \"#Luminescence# à la dérive\",\n\t\t\"everbloom-violet\": \"Infinité #violette#\",\n\t\t\"farewell-of-snezhnaya\": \"Adieux au #Nord#\",\n\t\t\"forgefires-blessing\": \"Faveur du #feu forgé#\",\n\t\t\"from-ashes-reborn\": \"Renaissant des #cendres#\",\n\t\t\"gentry-of-hermitage\": \"#Monts# et marchés\",\n\t\t\"harmonious-abundance\": \"#Abondance# harmonieuse\",\n\t\t\"illuminating-lightning\": \"#Éclair# illuminant\",\n\t\t\"immaculate-pulse\": \"#Pouls# immaculé\",\n\t\t\"in-the-name-of-the-rosula\": \"Au nom de la #Rosula#\",\n\t\t\"invitation-to-mundane-life\": \"Invitation #scintillante#\",\n\t\t\"la-chanson-cerise\": \"La chanson #cerise#\",\n\t\t\"leaves-in-the-wind\": \"#Feuilles# dans le vent\",\n\t\t\"moment-of-bloom\": \"Floraison #Écarlate#\",\n\t\t\"moonsong-of-the-groves\": \"Chant lunaire #des bosquets#\",\n\t\t\"of-silken-clouds-woven\": \"Tissé de #nuages soyeux#\",\n\t\t\"oni_s-royale\": \"Baroud d'#Oni#\",\n\t\t\"piercing-shots-crimson-wake\": \"#Transpercement# au sillage écarlate\",\n\t\t\"reign-of-serenity\": \"#Règne# de sérénité\",\n\t\t\"remembrance-of-jade-and-stone\": \"Mémoire #des jades et des pierres#\",\n\t\t\"romaritime-meluserenity\": \"Mélusinité romaritime \",\n\t\t\"roving-chalice-of-dewgrass\": \"Calice vagabond de l#'herbe de rosée#\",\n\t\t\"rubedo-of-white-stone-born\": \"Rubedo, né de #pierre blanche#\",\n\t\t\"sharktacular-surfari\": \"Surfari #requinfini#\",\n\t\t\"secretum-secretorum\": \"#Nouvelles# mystérieuses\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Recherche# de secrets nés du feu\",\n\t\t\"somnias-a-luna\": \"Rêve sous l'#ombre lunaire#\",\n\t\t\"sparkling-steps\": \"Foulées #étincelantes#\",\n\t\t\"starry-nights-whispers\": \"Murmures d'une nuit #étoilée#\",\n\t\t\"tapestry-of-golden-flames\": \"Draperie d'#étincelles dorées#\",\n\t\t\"tempestuous-destiny\": \"#Destin# tumultueux\",\n\t\t\"temptation-of-the-crimson-sands\": \"Tentation des #sables écarlates#\",\n\t\t\"the-crane-soars-skyward\": \"La grue s'envole #vers les cieux#\",\n\t\t\"the-hearths-ashen-shadow\": \"L'ombre cendrée #de l'âtre#\",\n\t\t\"the-heron_s-court\": \"Prestance du #héron#\",\n\t\t\"the-lone-light-knocks-at-night\": \"#Lumière solitaire# en visite nocturne\",\n\t\t\"the-moongrass-enlightenment\": \"Dessillement de l'#herbe lunaire#\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"Chant triomphal du #vent du nord#\",\n\t\t\"the-transcendent-one-returns\": \"#Retour# de la sublimée\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Tonnerre# déchirant les hautes plaines\",\n\t\t\"twilight-arbiter\": \"#Arbitre# du crépuscule\",\n\t\t\"twirling-lotus\": \"Lotus #tournoyant#\",\n\t\t\"viridescent-vigil\": \"Veillée #écologique#\",\n\t\t\"void-stars-advent\": \"Avènement de l#'étoile du néant#\",\n\t\t\"ya-hoho-compendium\": \"Compendium #Ya-hoho !#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Chemin divin\",\n\t\t\"fatePoint\": \"Points de destin\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Souhaitez-vous annuler la sélection actuelle ?\",\n\t\t\"cancelDesc\": \"Vos points de destin seront réinitialisés après l'annulation\",\n\t\t\"selectWeapon\": \"Choisir une arme\",\n\t\t\"chartCourseOf\": \"Vous obtiendez : {target}\",\n\t\t\"cancelCourse\": \"Réinitialiser\",\n\t\t\"chartCourse\": \"Choisir\",\n\t\t\"courseSetFor\": \"Chemin défini pour: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"Le Chemin divin est un nouveau mécanisme inclus dans les vœux Incarnation divine:\",\n\t\t\t\"Une fois que vous choisissez une arme 5*, vous recevez 1 point de destin <span>si l'arme 5* que vous obtenez via les vœux n'est pas celle souhaitée</span>.\",\n\t\t\t\"Une fois suffisamment de points de destin accumulés, la prochaine arme 5* que vous obtiendrez via les vœux Incarnation divine sera celle choisie dans le Chemin divin.\",\n\t\t\t\"Vos points de destin <span>se réinitialisent lorsque vous obtenez une arme du Chemin divin</span> pendant ces vœux Incarnation divine.\",\n\t\t\t\"Vous ne cumulez pas de points de destin si vous n'avez pas choisi d'arme vers laquelle vous frayer un chemin.\",\n\t\t\t\"Vous pouvez modifier ou annuler votre sélection, <span>mais cela réinitialisera vos points de destin déjà accumulés</span>.\",\n\t\t\t\"<span>Les points de destin acccumulés lors de ces vœux Incarnation divine disparaissent lorsque ces vœux événements prennent fin</span>.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Vœux\",\n\t\t\"rollButton\": \"Faire {count} vœu(x)\",\n\t\t\"stellaFortuna\": \"Stella Fortuna du personnage correspondant\",\n\t\t\"loadFailed\": \"Échec du chargement de la bannière ! <br /> Veuillez passer à une autre bannière ou vous reconnecter à l'internet pour éviter les erreurs !\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Bannière\",\n\t\t\t\"allBanner\": \"Toutes les bannières\",\n\t\t\t\"previous\": \"Bannières précédentes\",\n\t\t\t\"findBanner\": \"Trouver une bannière\",\n\t\t\t\"group\": \"Groupe\",\n\t\t\t\"beginner\": \"Vœux pour les débutants\",\n\t\t\t\"character-event\": \"Vœux événements de personnage\",\n\t\t\t\"weapon-event\": \"Vœux événements d'arme\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Vœux permanents\",\n\t\t\t\"wishDescription\": \"Garantie d'obtention d'un personnage 4* ou plus tous les 10 vœux\",\n\t\t\t\"novice\": \"Vœux des débutants\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"-20% sur 10 vœux consécutifs. Garantie d'obtention de {character} dans la première série de 10 vœux.\",\n\t\t\t\"beginnerNote\": \"Comme doit l'être une servante.\",\n\t\t\t\"beginnerChance\": \"Tentatives restantes: {chances}\",\n\t\t\t\"standardNote\": \"Standard whises have no time limit.\",\n\t\t\t\"allWeaponTypes\": \"Tous types d'arme\",\n\t\t\t\"etc\": \"etc.\",\n\t\t\t\"probIncreased\": \"Chance d'obtention augmentée !\",\n\t\t\t\"eventNote\": \"Les personnages 5* exclusifs de l'événement ne peuvent qu'être obtenus pendant une période limitée par le biais de vœux spécifiques. Pour en savoir plus, rendez-vous dans les détails de l'événement.\",\n\t\t\t\"viewDetails\": \"Pour en savoir plus, rendez-vous dans les détails de l'événement.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Passer\",\n\t\t\t\"meteorFailed\": \"L'animation Meteor n'a pas pu être chargée\",\n\t\t\t\"new\": \"Nouv.\",\n\t\t\t\"convertion\": \"Conversion\",\n\t\t\t\"title\": \"Résultat des vœux pour {item}\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Skins\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"Appliquer le skin\",\n\t\t\"owned\": \"Déjà possédé\",\n\t\t\"purchasePrompt\": \"Vous n'avez pas encore de personnage pour ce skin, êtes-vous sûr de vouloir acheter ce skin ?\",\n\t\t\"promptInfo\": \"Vous pouvez toujours utiliser ce skin après avoir obtenu le bon personnage.\",\n\t\t\"obtained\": \"Nouveau skin obtenu\",\n\t\t\"unlocked\": \"Skin débloqué: {character}\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Rêve de la brise marine\",\n\t\t\t\t\"description\": \"Tenue d'été de Jean. Légère et décontractée, mais pas moins élégante pour autant. Elle est parfaire pour un voyage à la mer.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Été radieux\",\n\t\t\t\t\"description\": \"Tenue de plage de Barbara. La jolie mini-jupe déborde de vitalité estivale et porte la fraîcheur de l'océan.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Splendeur opulente\",\n\t\t\t\t\"description\": \"Tenue formelle de Keqing. Dans la splendeur du Festival des lanternes, des fils ont été tissés pendant des jours de labeur pour assembler cette tenue du soir pleine de légèreté et d'élégance.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Robe de soirée d'orchidées\",\n\t\t\t\t\"description\": \"Tenue formelle de Ningguang. La longue jupe bleue épouse ses formes élégantes et les ailes de papillons à ses chevilles ajoutent une touche aérienne.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Songe de la nuit éternelle\",\n\t\t\t\t\"description\": \"Tenue cérémoniale de Fischl. Que celle qui est noble conserve pour toujours son courage, sa sincérité et sa bonté, de telle sorte qu'aucun mal ne puisse jamais l'atteindre.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Nuit écarlate\",\n\t\t\t\t\"description\": \"Une tenue que Diluc porte lorsqu'il part en mission secrète. Elle ressemble à une flamme dansante dans l'ombre dont les traces écarlates hanteront les nuits des ennemis pour le restant de leurs jours.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"Sobriquet à l'ombre\",\n\t\t\t\t\"description\": \"Tenue que Lisa avait commandée lors d'une nouvelle visite à Sumeru. D'un équilibre parfait entre praticité et élégance, cette robe ressemble à l'uniforme qu'elle portait lorsqu'elle étudiait à l'Académie.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Missive de floraison printanière\",\n\t\t\t\t\"description\": \"Tenue de voyage d'Ayaka. Sa conception est basée sur les robes fontainoises représentées dans les romans légers et semble refléter le style de vie des dames respectables qui résident dans cette nation.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Lumière stellaire en fleurs\",\n\t\t\t\t\"description\": \"Une tenue exquise que Klee ne porte que pour les performances les plus importantes. Les couleurs sont brillantes, comme un gâteau à la crème décoré de fleurs et couronné de bougies écarlates. Avec cette tenue, bonheur et sourires combleront vos aventures !\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Ombre nautique\",\n\t\t\t\t\"description\": \"La tenue que Kaeya porte en jouant le Bandit au poignard. Bien qu'il s'agisse d'une tenue flamboyante conçue pour être aussi accrocheuse que possible, elle n'est pas difficile à enfiler, bien qu'il faille un certain temps pour arranger tous les accessoires et son poignard.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Rosée de fleur de givre\",\n\t\t\t\t\"description\": \"Ce cadeau du Festival des lanternes que Shenhe a reçu est une tenue formelle élégante que son maître, Souffle-Nuages, a commandée pour elle. Des cordelettes rouges ornent toujours ses bras, mais le froid glacial dans le cœur de Shenhe s'est estompé.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Bourgeon du crépuscule\",\n\t\t\t\t\"description\": \"Une tenue festive légère et gracieuse avec des accents principaux de noir et de bleu. Ses accessoires pour cheveux sont aussi radieux que des fleurs de Qingxin, une association que Ganyu affectionne particulièrement.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Pluie de bambous\",\n\t\t\t\t\"description\": \"Une tenue de banquet préparée par la Guilde des marchands de Feiyun pour Xingqiu. Les imprimés en bambou sont raffinés et la coupe est des plus flatteuses, mais l'aspect préféré de Xingqiu réside dans ses poches intérieures, dans lesquelles on pourrait glisser un petit roman.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Fantôme en bottes\",\n\t\t\t\t\"description\": \"Tenue de Kirara. La féline fanfaronne des contes de fées, la messagère rusée des rêves... est heureuse de faire votre connaissance !\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Brise de Sabaa\",\n\t\t\t\t\"description\": \"Une tenue élégante pour Nilou. Cette robe légère est apparemment tissée d'innombrables fleurs, et avec elle dérive un léger parfum comme le vent d'est à l'aube, transportant de belles bénédictions venues d'un pays de conte de fées.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Cerises sous neige\",\n\t\t\t\t\"description\": \"Tenue de Hu Tao. La robe, qui arbore une palette de couleurs plus claire que les tenues de cérémonie sombres du Funérarium Wangsheng, est un cadeau spécial de sa bonne amie Xiangling. Les lunettes de soleil, quant à elles, proviennent de la collection personnelle de Hu Tao.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Gaieté du Nouvel An\",\n\t\t\t\t\"description\": \"Tenue de Xiangling. La tenue rouge brille comme un poêle au milieu des vents froids, surmontée d'un chapeau qui, à la suggestion de Hu Tao, est inspiré de l'apparence de Gooba... Un style qui convient parfaitement à Xiangling.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Banquet paisible\",\n\t\t\t\t\"description\": \"La tenue que Yelan a préparée pour ses vacances. Élégante et soignée, elle évoque la détente tout en conservant un soupçon d’agressivité dissimulée…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Aventures en flamboyantes couleurs\",\n\t\t\t\t\"description\": \"La tenue de voyage de Bennett pour ses péripéties à Natlan. Teints d’un bleu lacustre propice à la fortune, rehaussé de touches d’orange flamboyant, ces vêtements dégagent une vitalité débordante, à l’image du territoire où ils sont portés.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Cadeau mélusin\",\n\t\t\t\t\"description\": \"Un cadeau surprise pour Neuvillette. Le plaisir ne vient pas seulement du cadeau lui-même, mais de chaque petite main qui a contribué à sa création. Comme les rivières se jettent dans l’immensité de la mer, les gouttes de rosée peuvent s’unir pour créer un miracle scintillant de mille reflets.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Rêverie de bambous sous la pluie\",\n\t\t\t\t\"description\": \"Tenue de Yaoyao. Les jeunes pousses projettent leurs ombres mouvantes sur le bureau en désordre. Parfois, lorsqu’un visiteur entre, ce n’est pas forcément le vent.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Détails\",\n\t\t\"promotional\": \"Objets boostés\",\n\t\t\"itemlist\": \"Liste des objets\",\n\t\t\"increasedRate\": \"Taux d'obtention augmentés !\",\n\t\t\"percentageDrop\": \"Taux d'obtention lors du tirage d'un objet {rarity}* : {percentage}\",\n\t\t\"wishDetails\": \"Détails\",\n\t\t\"probInfo\": \"Taux d'obtention de base d'un objet {rarity}* : {singlePercentage} (Garantie incluse : {avgPercentage})\",\n\t\t\"itemWishFor\": \"Liste d'objets disponibles par le biais des vœux :\",\n\t\t\"itemType\": \"Type\",\n\t\t\"itemName\": \"Nom\",\n\t\t\"beginnerInfo\": \"Pas de limtie de temps (Disparait après 20 vœux)\",\n\t\t\"limited\": \"Evénement à durée limitée\",\n\t\t\"permanent\": \"Permanent\",\n\t\t\"alert\": \"※ Ces vœux sont des {wishName}. Les vœux effectués lors des {wishName}, ils ne sont pas cumulables avec les vœux effectués lors d'autres types de vœux événements.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"Les vœux <span>pour les débutants</span> n'ont pas de limite de temps et sont disponibles pour les Voyageurs récemment arrivés en Teyvat. Aucune personnage et aucune arme événement ne sont disponibles. <br /> Dans cette bannière un lot de 10 vœux coûte <span>20%</span> de pierres en moins, Et {character} et automatiquement inclus dans votre premier lot de 10 vœux , et votre second lot de 10 vœux vous garanti un <span>autre</span> personnage 4*! <br/> La bannière expire après <span>20</span> vœux effectués. Après l'expiration de la bannière, la page disparait.\",\n\t\t\t\"※ Dans les circonstances habituelles, les taux d'obention de base des personnages et des armes sont répartis équitablement. Veuillez vous référer aux règles correspondantes en cas d'une augmentation du taux d'obtention ou d'une garantie d'obtention.\",\n\t\t\t\"〓 Règles 〓\",\n\t\t\t\"Taux d'obtention de base d'un objet 4* :<span> 0.600%</span> <br /> Base probability of winning 4-Star character = <span> 5.100%</span>; consolidated probability (incl. guarantee) = <span> 13.000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"Les vœux permanents \\\"{bannerName}\\\" sont disponibles de manière illimitée dans le temps et vous permettent d'obtenir armes et personnages non exclusifs.<br/> Chaque série de 10 vœux vous <span>garantit</span> l'obtention d'au moins un objet 4* ou plus.\",\n\t\t\t\"※ Dans les circonstances habituelles, les taux d'obention de base des personnages et des armes sont répartis équitablement. Veuillez vous référer aux règles correspondantes en cas d'une augmentation du taux d'obtention ou d'une garantie d'obtention.\",\n\t\t\t\"〓 Règles 〓\",\n\t\t\t\"Taux d'obtention de base d'un objet 5* : <span>0.600%</span>. Taux d'obtention de base d'un personnage 5* : <span>0.300%</span>. Taux d'obtention d'une arme 5* : <span>0.300%</span>. Taux d'obtention total d'un objet 5* (obtention garantie incluse) : <span>1.600%</span>. L'obtention d'un objet 5* est garantie au moins une fois tous les <span>90</span> vœux. <br> Taux d'obtention d'un objet 4* : <span>5.100%</span>. Taux d'obtention de base d'un personnage 4* :  <span>2.550%</span>. Taux d'obtention de base d'une arme 4* : <span>2.550%</span>. Taux d'obention total d'un objet 4* (obtention garantie incluse) : <span>13.000%</span>. L'obtention d'un objet 4* ou plus est garantie au moins une fois tous les <span>10</span> vœux effectués. Le taux d'obtention d'un objet 4* grâce à la garantie d'obtention est de <span>99.400%</span> et le taux d'obtention d'un objet 5* grâce à la garantie d'obtention est de <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Les Vœux événements \\\"{bannerName}\\\" sont désormais disponibles! Les taux d'obtention du personnage 5* suivant : {featuredCharacter} et des personnages 4* suivants :  {rateupCharacters} sont <span>fortement augmentés</span>, alors tentez votre chance !\",\n\t\t\t\"※ Dans les circonstances habituelles, les taux d'obention de base des personnages et des armes sont répartis équitablement. Veuillez vous référer aux règles correspondantes en cas d'une augmentation du taux d'obtention ou d'une garantie d'obtention.\",\n\t\t\t\"〓 Règles 〓\",\n\t\t\t\"[Objets 5*]\",\n\t\t\t\"Taux d'obtention d'un personnage 5* : <span>0.600%</span>. Taux d'obtention total (obtention garantie incluse) : <span>1.600%</span>. L'obtention d'un personnage 5* est garantie au moins une fois tous les <span>90</span> vœux.<br/> Lorsque vous tirez un personnage 5* pour la première fois, il y a <span>50.000%</span> de chance qu'il s'agisse de {featuredCharacter}. Si ce n'est pas le cas, le personnage sera donc <span>garanti</span> lors de votre prochain tirage d'un personnage 5*.\",\n\t\t\t\"Objets 4*\",\n\t\t\t\"Taux d'obtention d'un objet 4* : <span>5.100%</span>. Taux d'obtention de base d'un personnage 4* : <span>2.550%</span>, Taux d'obtention de base d'une arme 4* : <span>2.550%</span>; Taux d'obtention total d'un objet 4* (obtention garantie incluse) : <span>13.000%</span>. L'obtention d'un objet 4* ou plus est garantie au moins une fois tous les <span>10</span> vœux effectués. Le taux d'obtention d'un objet 4* grâce à la garantie d'obtention est de <span>99.400%</span> et le taux d'obtention d'un objet 5* grâce à la garantie d'obtention est de <span>0.600%</span>.<br/> Lorsque vous tirez un objet 4* pour la première fois, il y a <span>50.000%</span> de chance qu'il s'agisse de {rateupCharacters}. Si ce n'est pas le cas, l'un de ces personnages sera donc <span>garanti</span> lors de votre prochain tirage d'un objet 4*. Si vous obtenez un objet 4* par le biais d'un vœu, la probabilté d'obtention de chaque personnage 4* à la une est égale.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Les vœux événements \\\"{bannerName}\\\" sont désormais disponibles! Les taux d'obtention des armes 5* <span>exclusives</span> suivantes :{featuredWeapon1} et {featuredWeapon2}, des armes 4* <span>exclusives</span> suivantes {rateupWeapons} sont <span>fortement augmentés</span>, alors tentez votre chance! <br/> <span> ※ Les armes exclusives citées ci-dessus ne seront pas disponibles  dans les vœux permanents \\\"Envie de voyage.\\\"</span>\",\n\t\t\t\"※ Dans les circonstances habituelles, les taux d'obtention de base des personnages et des armes sont répartis équitablement. Veuillez vous référer aux règles correspondantes en cas d'une augmentation du taux d'obtention ou d'une garantie d'obtention.\",\n\t\t\t\"〓 Règles 〓\",\n\t\t\t\"[Objets 5*]\",\n\t\t\t\"Taux d'obtention d'une arme 5* :  <span>0.700%</span>. Taux d'obtention total (obtention garantie incluse) :  <span>1.850%</span>. L'obtention d'une arme 5* est garantie au moins une fois tous les <span>80</span> vœux.<br/> Lorsque vous tirez une arme 5* pour la première fois, il y a <span>75.000%</span> de chance qu'il s'agisse de {featuredWeapon1} ou {featuredWeapon2}. Si ce n'est pas le cas, l'une de ces armes sera donc <span>garantie</span> lors de votre prochain tirage d'une arme 5*. Si vous obtenez une arme 5* par le biais d'un vœu sans avoir atteint le nombre de points de destin max, la probabilité d'obtention de chaque arme 5* à la une est égale.<br/> Au cours de ces Vœux événements \\\"{bannerName}\\\", vous pouvez vous frayer une voie vers l'arme 5* à la une que vous souhaitez obtenir avec le mécanisme de  \\\"Chemin divin.\\\". Le choix de l'arme ne sera valide que pendant la durée de ces Vœux événements \\\"{bannerName}\\\". <br/> Au cours de ces Vœux événements \\\"{bannerName}\\\", lorsque vous obtenez une arme 5* après avoir utilsié le \\\"Chemin divin\\\" et que cette arme 5* obtenue n'est pas votre arme choisie, 1 point de destin vous sera accordé. Une fois le <span>nombre maximum</span> de points de destin atteint, l'arme 5* que vous avez précédemment choisie sera donc <span>garantie</span> lors de votre prochain tirage d'une arme 5*. Après avoir obtenu l'arme choisie, le nombre de points de destin max sera réinitialisé à <span>0</span>, que vous ayez atteint ou non le nombre de points de destin max, et vous devrez les accumuler de nouveau. Si vous n'utilisez pas le \\\"Chemin divin\\\" pour vous frayer une voie vers une arme de votre choix, <span>aucun</span> point de destin ne vous sera accordé. <br/> Il est possible de modifier ou d'annuler votre choix d'arme. Une fois modifié ou annulé, vos points de destin seront <span>réinitialisés</span> par ces actions et vous devrez en cumuler à nouveau. <br/> ※ Les points de destin obtenus au cours de ces vœux ne seront valables que pendant cette période de Vœux événéments \\\"Incarnation divine\\\". Après la fin de ces vœux, les points de destin seront réinitialisés et vous devrez en cumuler à nouveau.\",\n\t\t\t\"[Objets 4*]\",\n\t\t\t\"Taux d'obtention de base d'un objet 4* : <span>6.000%</span>. Taux d'obtention de base d'un personnage 4* : <span>3.000%</span>. Taux d'obtention de base d'une arme 4* : <span>3.000%</span>. Taux d'obtention total d'un objet 4* (obtention garantie incluse) :  <span>14.500%</span>. L'obtention d'un objet 4* ou plus est garantie au moins une fois tous les <span>10</span> vœux effectués. Le taux d'obtention d'un objet 4* grâce à la garantie d'obtention est de <span>99.300%</span> et le taux d'obtention d'un objet 5* grâce à la garantie d'obtention est de <span>0.700%</span>. <br/> Lorsque vous tirez un objet 4* pour la première fois, il y a <span>75.000%</span> de chance qu'il s'agisse de {rateupWeapons}. Si ce n'est pas le cas, l'une de ces armes sera donc <span>garantie</span> lors de votre prochain tirage d'un objet 4*. Si vous obtenez une arme 4* par le biais d'un vœu , la probabilité de chaque arme 4* à la une est égale.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"Les armes 5* obtenues par le biais de ces vœux s'accompagnent de 10 {starglitter}.\",\n\t\t\t\"fourStar\": \"Les armes 4* en double vous rapportent 2 {starglitter},\",\n\t\t\t\"threeStar\": \" et les armes 3*, 15 {stardust}.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓 Personnages en double 〓\",\n\t\t\t\"text\": \"Lorsque vous obtenez un personnage {rarity}* que vous possédez déjà (par le biais de vœux, d'achat en boutique, en récompense ou par d'autres moyens): De la 2e à la 7e obtention, vous obtenez 1 {stellaFortuna} et {constBonus} {starglitter}, puis à partir de la 8e obtention, le personnage sera converti en {fullConstBonus} {starglitter}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Historique des vœux\",\n\t\t\"text\": \"Historique\",\n\t\t\"resetButton\": \"Effacer\",\n\t\t\"resetPromptTitle\": \"Effacer l'historique ?\",\n\t\t\"resetPrompt\": \"Cela va aussi supprimer tous les personnages et toutes les armes liées à la bannière \\\"{bannerName}\\\" de votre inventaire. <br /> Voulez-vous vraiment réinitialiser ?\",\n\t\t\"resetSuccess\": \"Réinitialisation réussie !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Sélectionner le type de vœu :\",\n\t\t\"disclaimer\": \"Nous ne sauvegardons jamais vos données en ligne. Toutes les données sont stockées dans IndexedDB, ce qui veut dire que les données sont sauvegardées dans votre navigateur. Elle ne seront pas supprimmées tant que vous n'utilisez pas le bouton de suppression/réinitialisation ou tant que vous ne videz pas le cache de votre navigateur.\",\n\t\t\"currentPity\": \"Current Pity :\",\n\t\t\"totalPull\": \"Total Pull :\",\n\t\t\"totalSpend\": \"Total dépensé :\",\n\t\t\"filterTxt\": \"Filtrer\",\n\t\t\"filter\": \"{rarity} Etoiles\",\n\t\t\"filterAll\": \"All\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Time Received\",\n\t\t\"waiting\": \"En attente\",\n\t\t\"noData\": \"Aucune donnée disponible.\",\n\t\t\"untracked\": \"Non suivi\",\n\t\t\"win\": \"50/50 gagné\",\n\t\t\"lose\": \"50/50 perdu\",\n\t\t\"guaranteed\": \"Garanti\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Arme sélectionnée\",\n\t\t\"olderLayout\": \"Ancienne mise en page\",\n\t\t\"switchv2\": \"Changer pour la V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Boutique\",\n\t\t\"paimonBargains\": \"Échange astral\",\n\t\t\"fateNeeded\": \"Il manque {rollQty} {currency} requis.\",\n\t\t\"primoNeeded\": \"Acheter avec {primoPrice} primo-gemmes ?\",\n\t\t\"purchaseUpto\": \"1 disponible(s)\",\n\t\t\"purchaseConfirm\": \"Confirmation d'achat\",\n\t\t\"exchangeHeading\": \"Echange contre objet\",\n\t\t\"purchaseHeading\": \"Objet\",\n\t\t\"purchaseButton\": \"Acheter\",\n\t\t\"pay\": \"Payer\",\n\t\t\"product\": \"Produit\",\n\t\t\"consume\": \"Consommer\",\n\t\t\"selectPayment\": \"Sélectionnez le moyen de paiement\",\n\t\t\"unrealWallet\": \"Portefeuille irréel\",\n\t\t\"convertPrimo\": \" Convertir automatiquement en primo-gemmes ?\",\n\t\t\"proceedPayment\": \"Payer\",\n\t\t\"qty\": \"Quantité\",\n\t\t\"insufficient\": \"Vous n'avez pas assez de ressources.\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Recharge cristaux\",\n\t\t\"initialBonus\": \"Bonus d'achat initial\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Acheter des Cristaux primaires\",\n\t\t\"recomendedHeading\": \"Produits recommandés\",\n\t\t\"paimonHeading\": \"Echange astral\",\n\t\t\"welkinNote\": \"Peut être acheté plusieurs fois\",\n\t\t\"limitedOffer\": \"Offre à durée limitée\",\n\t\t\"noLimitTime\": \"Aucun objet à durée limitée disponible\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Faveur de l'astre de la nuit\",\n\t\t\t\"newOutfit\": \"Nouveaux skins\",\n\t\t\t\"dayRemaining\": \"Jours restants: {days}\",\n\t\t\t\"alreadyClaimed\": \"(Récupéré aujourd'hui)\",\n\t\t\t\"instantlyGet\": \"Inclus avec l'achat\",\n\t\t\t\"dailyGift\": \"et chaque jour :\",\n\t\t\t\"obtainTotal\": \"* Valide pendant 30 jours!<br> Obtenez un total de {totalGenesis} cristaux primaires et {totalPrimo} primo-gemmes!\",\n\t\t\t\"claimingBlessing\": \"Cliquez pour récupérer votre récompense journalière de Faveur de l'astre de la nuit\",\n\t\t\t\"issuedPurchase\": \"Reçus lors de l'achat\",\n\t\t\t\"collect\": \"Récupérez votre récompense journalière pendant 30 jours\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Echange Astéries\",\n\t\t\t\"stardust\": \"Echange Astrions\",\n\t\t\t\"primogem\": \"Echange primo-gemmes\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Cristaux primaires\",\n\t\t\t\"primogem\": \"Primo-gemme\",\n\t\t\t\"intertwined\": \"Pierre de la fatalité\",\n\t\t\t\"acquaint\": \"Pierre de la destinée\",\n\t\t\t\"starglitter\": \"astéries libres\",\n\t\t\t\"stardust\": \"astrion libres\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Une graine du destin qui relie les rêves. La lueur de la pierre de la fatalité peut faire s'entrelacer les sorts qui ne devraient pas se croiser. C'est grâce à cette lueur que les étoiles peuvent former l'image de vote cœur.\",\n\t\t\t\"acquaint\": \"Une graine d'espoir qui illumine le ciel étoilé. Peu importe la distance qui les sépare l'un de l'autre, ceux qui sont destinés à se rencontrer seront guidés par la lueur de la pierre de la fatalité et se retrouveront enfin sous le ciel étoilé.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventaire\",\n\t\t\"unsetOutfit\": \"Retirer un skin\",\n\t\t\"setOutfit\": \"Appliquer un skin sur un personnage\",\n\t\t\"refinement\": \"Raffinement {count}\",\n\t\t\"constellation\": \"Constellation {count}\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"Première invocation le : {date}\",\n\t\t\"notOwned\": \"Non possédé\",\n\t\t\"sort\": \"Trier\",\n\t\t\"rarity\": \"Rareté\",\n\t\t\"name\": \"Nom\",\n\t\t\"quantity\": \"Quantité\",\n\t\t\"element\": \"Elément\",\n\t\t\"release\": \"Date de sortie\",\n\t\t\"type\": \"Type\",\n\t\t\"owned\": \"Possédé\",\n\t\t\"showAllOption\": \"Afficher tous/toutes les {item}s\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Non\",\n\t\t\"yes\": \"Oui\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Options\",\n\t\t\"updates\": \"Historique des mises à jour\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Langue\",\n\t\t\"currency\": \"Monnaie\",\n\t\t\"fates\": \"Nombre de Vœux\",\n\t\t\"unlimited\": \"Illimité\",\n\t\t\"manual\": \"Saisie manuelle\",\n\t\t\"mute\": \"Désactiver la musique et les effets sonores\",\n\t\t\"switchBanner\": \"Changer de bannière\",\n\t\t\"showAllitems\": \"Afficher tous les objets dans l'inventaire\",\n\t\t\"autoskip\": \"Passer automatiquement le Splash Art\",\n\t\t\"animatedbg\": \"Arrière-plan animé\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Effacer les données et restaurer les valeurs par défaut\",\n\t\t\"resetTitle\": \"Réinitialisation d'usine\",\n\t\t\"rotate\": \"Tourner pour une meilleure expérience\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Nettoyer le cache ( {size} ) ? <small> Vous devrez re-télécharger toutes les ressources en cache après cette ation! </small>\",\n\t\t\"resetButton\": \"Réinitialier maintenant\",\n\t\t\"resetPrompt\": \"Voulez-vous vraiment supprimer <strong> Toutes les Données </strong> et restaurer l'état par défaut?\",\n\t\t\"resetSuccess\": \"Réinitialisation réussie\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Obtenez-en une nouvelle ici !\",\n\t\t\"noKey\": \"Vous n'avez pas de clé ?\",\n\t\t\"verifyFail\": \"Vérification de l'AdKey échouée, Vérifieez votre connexion !\",\n\t\t\"invalidKey\": \"Votre clé est invalide\",\n\t\t\"keyExpired1\": \"Clé expirée !\",\n\t\t\"keyExpired2\": \"Votre clé: \\\"{key}\\\" est expirée depuis le {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Entrez la clé\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/id-ID.json",
    "content": "{\n\t\"title\": \"Simulator Permohonan Genshin Impact\",\n\t\"item\": \"Item\",\n\t\"character\": \"Karakter\",\n\t\"weapon\": \"Senjata\",\n\t\"vision\": \"Vision\",\n\t\"anemo\": \"Anemo\",\n\t\"cryo\": \"Cryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Electro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Geo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Bow\",\n\t\"catalyst\": \"Catalyst\",\n\t\"claymore\": \"Claymore\",\n\t\"sword\": \"Sword\",\n\t\"polearm\": \"Polearm\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Mendapatkan\",\n\t\"waiting\": \"Tunggu\",\n\t\"connectionFailed\": \"Koneksi Gagal!\",\n\t\"confirmButton\": \"OK\",\n\t\"cancelButton\": \"Batalkan\",\n\t\"disclaimer\": \"Semua aset yang digunakan di situs ini adalah milik HoYoVerse.\",\n\t\"fanmade\": \"Aplikasi ini murni buatan Fan, enjoy aja!\",\n\t\"pressToContinue\": \"Tekan di area kosong untuk melanjutkan\",\n\t\"installInstruction\": \"Cara menginstall ke beranda Smartphone/Desktop\",\n\t\"share\": \"Bagikan\",\n\t\"screenshot\": \"Ambil Gambar\",\n\t\"capturing\": \"Memproses\",\n\t\"rewardFirstShare\": \"Hadiah membagikan pertama kali : {qty}\",\n\t\"version\": \"Versi\",\n\t\"donate\": \"Donasi\",\n\t\"banner\": {\n\t\t\"beginner\": \"Permohonan Pemula\",\n\t\t\"wanderlust\": \"Wanderlust Invocation\",\n\t\t\"epitome-invocation\": \"Epitome Invocation\",\n\t\t\"ode-to-the-dawn-breeze\": \"Balada #Angin Fajar#\",\n\t\t\"adrift-in-the-harbor\": \"#Misteri# Keabadian\",\n\t\t\"ambrosial-essence\": \"#Semerbak# Sari Wewangian\",\n\t\t\"ancient-flame-ablaze\": \"#Golakan# Api Purbakala\",\n\t\t\"astral-actuation\": \"Penggerak Bintang-Bintang\",\n\t\t\"auric-blaze\": \"Kilauan Bara #Api Surya#\",\n\t\t\"azure-excursion\": \"Ketenangan #Riak Air#\",\n\t\t\"ballad-in-goblets\": \"Syair Dalam #Piala#\",\n\t\t\"born-of-ocean-swell\": \"Tarian #Gulungan Ombak#\",\n\t\t\"caution-in-confidence\": \"#Perintah# dan Siasat\",\n\t\t\"chanson-of-many-waters\": \"Kidung #Semesta Perairan#\",\n\t\t\"conjuring-chiaroscuro\": \"Muslihat #Bayang dan Terang#\",\n\t\t\"cornucopia-of-contention\": \"#Perjamuan# Tanduk Beradu\",\n\t\t\"dance-of-lantern\": \"#Tarian# Lentera\",\n\t\t\"dawns-drifting-reverie\": \"#Lamunan Fajar# Mimpi\",\n\t\t\"decree-of-the-deeps\": \"Titah di #Kedalaman Lautan#\",\n\t\t\"dewlit-tranquility\": \"Ketenangan #Cahaya Embun#\",\n\t\t\"discerner-of-enigmas\": \"Sang #Pengungkap Misteri#\",\n\t\t\"drifting-luminescence\": \"Mutiara #di Atas Laut#\",\n\t\t\"everbloom-violet\": \"#Lembayung# Sakura\",\n\t\t\"farewell-of-snezhnaya\": \"Sampai Jumpa #Snezhnaya#\",\n\t\t\"forgefires-blessing\": \"Karunia #Api Penempa#\",\n\t\t\"from-ashes-reborn\": \"Inkarnasi Sisa #Bara Api#\",\n\t\t\"gentry-of-hermitage\": \"#Bangsawan# dan Pertapa\",\n\t\t\"harmonious-abundance\": \"Harmoni #Kelimpahan#\",\n\t\t\"illuminating-lightning\": \"#Petir# Penembus Malam\",\n\t\t\"immaculate-pulse\": \"Hati Semurni #Mutiara#\",\n\t\t\"in-the-name-of-the-rosula\": \"Ikrar Sekuntum #Mawar#\",\n\t\t\"invitation-to-mundane-life\": \"Panggilan #Cahaya#\",\n\t\t\"la-chanson-cerise\": \"La Chanson #Cerise#\",\n\t\t\"leaves-in-the-wind\": \"Dedaunan di #Tengah Angin#\",\n\t\t\"moment-of-bloom\": \"Bunga #Bersemi#\",\n\t\t\"moonsong-of-the-groves\": \"#Tembang Purnama# Jenggala\",\n\t\t\"of-silken-clouds-woven\": \"Tenunan Warna #Ribuan Awan#\",\n\t\t\"oni_s-royale\": \"Perjamuan #Oni#\",\n\t\t\"piercing-shots-crimson-wake\": \"#Sayap Merah# Penembus Cakrawala\",\n\t\t\"reign-of-serenity\": \"Sang Penguasa #Tunggal#\",\n\t\t\"remembrance-of-jade-and-stone\": \"Kenangan Akan #Giok dan Bebatuan#\",\n\t\t\"romaritime-meluserenity\": \"Romaritime #Rahayu#\",\n\t\t\"roving-chalice-of-##Dewgrass##\": \"Cangkir Berbentar #Rumput Embun#\",\n\t\t\"rubedo-of-white-stone-born\": \"Rubedo, yang Terlahir dari #Batu Putih#\",\n\t\t\"sharktacular-surfari\": \"#Hiu# Penakluk Ombak Biru\",\n\t\t\"secretum-secretorum\": \"#Enigma# Kehidupan\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Pengejar Rahasia# Dalam Bara Api\",\n\t\t\"somnias-a-luna\": \"Somnias a #Luna#\",\n\t\t\"sparkling-steps\": \"Percikan Langkah #Api#\",\n\t\t\"starry-nights-whispers\": \"#Bisikan# Malam Berbintang\",\n\t\t\"tapestry-of-golden-flames\": \"#Pijar Api# di Angkasa\",\n\t\t\"tempestuous-destiny\": \"#Lilitan Takdir# Menggelora\",\n\t\t\"temptation-of-the-crimson-sands\": \"Pencobaan di #Padang Merah#\",\n\t\t\"the-crane-soars-skyward\": \"Bangau Terbang di #Awan#\",\n\t\t\"the-hearths-ashen-shadow\": \"Bayangan #Gelora Perapian#\",\n\t\t\"the-heron_s-court\": \"Pelataran #Bangau Putih#\",\n\t\t\"the-lone-light-knocks-at-night\": \"#Cahaya Temaram# Mengetuk di Kala Malam\",\n\t\t\"the-moongrass-enlightenment\": \"Anugerah Kebijaksanaan #Rumput Rembulan#\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"Seruan Kemenangan #Angin Utara#\",\n\t\t\"the-transcendent-one-returns\": \"Kembali ke #Dunia Fana#\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Gemuruh Guntur# di Taman Langit\",\n\t\t\"twilight-arbiter\": \"#Hakim# Senja\",\n\t\t\"twirling-lotus\": \"Tarian #Limbai Teratai#\",\n\t\t\"viridescent-vigil\": \"#Langkah# Suaka Rimba\",\n\t\t\"void-stars-advent\": \"Hadirnya #Bintang Kehampaan#\",\n\t\t\"ya-hoho-compendium\": \"Kompendium #Ya-hoho!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"Konfigurasi {banner}\",\n\t\t\"baseRate\": \"Peluang Dasar {rarity}★:\",\n\t\t\"maxPity\": \"Piti Maksimal {rarity}★:\",\n\t\t\"hardPity\": \"Tingkatkan peluang {rarity}★ pada piti:\",\n\t\t\"currentPity\": \"Piti {rarity}★ saat ini\",\n\t\t\"winRate\": \"Peluang mendapat item RateUP:\",\n\t\t\"charRate\": \"Peluang mendapat Karakter dibanding Senjata\",\n\t\t\"radRate\": \"Peluang memicu Capturing Radiance\",\n\t\t\"radTrigger\": \"(Terjadi ketika kalah 50:50)\",\n\t\t\"nonRateup\": \"(Item 4★ saat kalah)\",\n\t\t\"selectedRate\": \"Peluang mendapat {itemType} terpilih:\",\n\t\t\"guaranteedSystem\": \"Sistem Jaminan\",\n\t\t\"backToDefault\": \"Pengaturan Default\",\n\t\t\"resetPrompt\": \"Apakah kamu yakin akan mereset pengaturan peluang untuk <b>\\\"{banner}\\\"</b>?\",\n\t\t\"default\": \"Aktif\",\n\t\t\"never\": \"NonAktif\",\n\t\t\"always\": \"Selalu\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Buat Bannermu Sendiri\",\n\t\t\"byTraveler\": \"Banner dari Traveler\",\n\t\t\"deletePrompt\": \"Kamu yakin untuk menghapus banner ini ?\",\n\t\t\"ownerDeleteNote\": \"Jika kamu telah membagikan banner ini secara publik, Traveler tidak akan dapat mengakses banner ini lagi\",\n\t\t\"userDeleteNote\": \"Riwayat permohonan tidak akan dihapus dengan aksi ini, tetapi kamu tidak akan bisa melakukan permohonan pada banner ini lagi\",\n\t\t\"retry\": \"Ulangi\",\n\t\t\"findBanner\": \"Mencari Banner\",\n\t\t\"networkError\": \"Jaringan Eror, Cek Koneksi kamu!\",\n\t\t\"bannerNotFound\": \"Banner tidak ditemukan, <u>Banner ID</u> salah atau mungkin telah dihapus.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Mengidentifikasi Banner\",\n\t\t\"loadOwnedBanner\": \"Kamu adalah kreator dari banner \\\"{ownedBanner}\\\", data banner yang tersimpan pada perangkatmu akan digunakan untuk setiap permohonan yang kamu lakukan\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" sudah siap\",\n\t\t\"uploading\": \"Sedang mengunggah {item}\",\n\t\t\"uploadFailed\": \"Gagal mengunggah, silahkan coba beberapa saat lagi!\",\n\t\t\"close\": \"Tutup\",\n\t\t\"almostDone\": \"Hampir Selesai\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Atur Koordinat\",\n\t\t\"next\": \"Selanjutnya\",\n\t\t\"move\": \"Ubah Posisi\",\n\t\t\"changeSplashArt\": \"Ubah Splash Art\",\n\t\t\"adjustSplashArt\": \"Sesuaikan Splash Art\",\n\t\t\"dropHere\": \"Drop di sini!\",\n\t\t\"preview\": \"Preview Banner\",\n\t\t\"generateImage\": \"Buat Gambar Preview\",\n\t\t\"notAnImage\": \"Content harus berupa Gambar\",\n\t\t\"imageTooLarge\": \"Ukuran gambar terlalu besar, maksimal: {maxSize}\",\n\t\t\"faceIcon\": \"Gambar Wajah\",\n\t\t\"addBanner\": \"Tambah Banner\",\n\t\t\"delete\": \"Hapus\",\n\t\t\"deleteFailed\": \"Gagal Menghapus\",\n\t\t\"bannerRemoved\": \"Banner Berhasil Dihapus\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Informasi Banner\",\n\t\t\"bannerName\": \"Nama Banner\",\n\t\t\"titleOfBanner\": \"Judul #untuk# Ditampilkan\",\n\t\t\"titleNote\": \"Huruf di antara tanda #_# akan diwarnai\",\n\t\t\"charName\": \"Nama Karakter\",\n\t\t\"charTitle\": \"Gelar Karakter\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Isi semua kolom yang tersedia!\",\n\t\t\"finishAndWish\": \"Finish & Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Bagi\",\n\t\t\"rateupChar\": \"Karakter Rate Up\",\n\t\t\"rateupNote\": \"Minimal 1 Karakter 4★\",\n\t\t\"yourBanners\": \"Banner Milikmu\",\n\t\t\"createBanner\": \"Buat Bannermu Sendiri\",\n\t\t\"limitation\": \"Kamu bukan Member, Hapus beberapa banner untuk mengaktifkan fitur Edit\",\n\t\t\"memberToUnlock\": \"Jadilah Member untuk menambah lebih banyak Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Konten Tidak Pantas!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Tidak Aktif\",\n\t\t\"unshared\": \"Belum Dibagikan\",\n\t\t\"create\": \"Buat Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} akan diimport ke dalam aplikasi, silahkan pilih aksi yang ingin kamu terapkan!\",\n\t\t\"mergeAction\": \"Gabung Data <small>Otomatis menghapus item duplikat dan menyisipkan item baru</small>\",\n\t\t\"replaceAction\": \"Ganti Data <small> Hapus dan ganti seluruh data saat ini. </small>\",\n\t\t\"dropFiles\": \"Drop berkas di sini\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Target\",\n\t\t\"lastExport\": \"Export Terakhir\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Tidak dapat menemukan Target Export, silahkan menekan tombol export kembali!\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Epitomized Path\",\n\t\t\"fatePoint\": \"Poin Takdir\",\n\t\t\"confirm\": \"Konfirmasi Pilihan\",\n\t\t\"viewDetails\": \"Lihat Detail\",\n\t\t\"details\": \"Detail\",\n\t\t\"rules\": \"Penjelasan Chronicled Path\",\n\t\t\"chartChronicled\": \"Kamu dapat menentukan pilihan untuk Karakter atau Senjata berikut\",\n\t\t\"currentSelection\": \"Pilihan Saat Ini: Permohonan {itemType} 5★\",\n\t\t\"dropType\": \"Hanya {itemType} 5★ yang dapat diperoleh dari permohonan\",\n\t\t\"cancelPrompt\": \"Apakah kamu ingin membatalkan pilihanmu saat ini ?\",\n\t\t\"cancelDesc\": \"Pembatalan akan me-reset akumulasi Poin Takdir\",\n\t\t\"selectWeapon\": \"Senjata yang Dipilih\",\n\t\t\"chartCourseOf\": \"Pilih {target}\",\n\t\t\"cancelCourse\": \"Batalkan Pilihan\",\n\t\t\"chartCourse\": \"Pilih\",\n\t\t\"courseSetFor\": \"Pilihan Ditentukan untuk: {selectedCourse}\",\n\t\t\"setFor\": \"Pilihan ditentukan untuk: \",\n\t\t\"notSetYet\": \"Belum Menentukan Pilihan\",\n\t\t\"description\": [\n\t\t\t\"\\\"Epitomized Path\\\" adalah sistem yang termasuk dalam \\\"Epitome Invocation\\\" ini:\",\n\t\t\t\"Setelah kamu menentukan senjata pilihanmu, jika kamu <span> menerima senjata bintang 5 yang bukan pilihanmu</span>, kamu akan mendapatkan 1 poin takdir.\",\n\t\t\t\"Setelah kamu mengumpulkan Poin Takdir yang cukup, senjata bintang 5 berikutnya akan menjadi senjata yang kamu pilih melalui \\\"Epitomized Path\\\"\",\n\t\t\t\"Point Takdir kamu <span> akan di-reset setelah mendapatkan senjata \\\"Epitomized Path\\\"</span> dalam \\\"Epitome Invocation\\\" ini.\",\n\t\t\t\"Jika kamu tidak memilih senjata, Poin Takdir tidak akan terkumpul dari Permohonanmu\",\n\t\t\t\"Kamu dapat mengubah atau membatalkan pilihanmu, tetapi tindakan ini <span> akan me-reset Poin Takdir yang telah terkumpul. </span>\",\n\t\t\t\"<span>Saat \\\"Epitome Invocation\\\" ini berakhir, Poin Takdir yang terkumpul juga akan di-reset</span>.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path adalah mekanisme unik dari Chronicled Wish:\",\n\t\t\t\"Sebelum melakukan permohonan di Chronicled Wish, kamu harus memilih target Chronicled Path, yaitu antara Karakter 5 atau Senjata 5*. Setelah menentukan pilihan, selama periode Chronicled Wish ini, <span>satu-satunya Item 5* yang kamu dapatkan akan berjenis sama dengan target Chronicled Path yang kamu pilih</span>.\",\n\t\t\t\"Saat periode Chronicled Wish ini, <span>jika kamu mendapatkan Senjata atau Karakter 5* yang bukan pilihanmu, maka kamu akan menerima 1 Poin Takdir</span>.\",\n\t\t\t\"Setelah Poin Takdir terisi penuh, Karakter atau Senjata 5 berikutnya yang kamu dapatkan melalui Chronicled Wish di periode ini akan sesuai dengan yang kamu pilih melalui Chronicled Path.\",\n\t\t\t\"Saat periode Chronicled Wish ini, <span>jika kamu mendapatkan Senjata atau Karakter yang kamu pilih, maka Poin Takdir yang sudah terakumulasi akan di-reset</span>.\",\n\t\t\t\"Kamu dapat mengubah atau membatalkan Pilihan yang sudah kamu pilih. <span>Melakukan hal ini akan me-reset Poin Takdir yang sudah terakumulasi</span>.\",\n\t\t\t\"<span>Saat periode Chronicled Wish ini berakhir, Poin Takdir yang terakumulasi akan di-reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Permohonan\",\n\t\t\"rollButton\": \"Mohon {count}\",\n\t\t\"stellaFortuna\": \"Stella Fortuna\",\n\t\t\"loadFailed\": \"Gagal Memuat Banner! <br /> Silahkan ganti banner atau hubungkan kembali ke internet untuk menghindari error!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"Semua Banner\",\n\t\t\t\"previous\": \"Banner Terdahulu\",\n\t\t\t\"findBanner\": \"Cari Banner\",\n\t\t\t\"group\": \"Grup\",\n\t\t\t\"beginner\": \"Permohonan Pemula\",\n\t\t\t\"character-event\": \"Event Permohonan Karakter\",\n\t\t\t\"weapon-event\": \"Permohonan Senjata\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Permohonan Standar\",\n\t\t\t\"novice\": \"Permohonan Pemula\",\n\t\t\t\"wishDescription\": \"Setiap 10 kali Permohonan pasti mendapatkan item 4★ ke atas\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"10-set diskon 20%. 10-set pertama pasti mendapatkan {character}.\",\n\t\t\t\"beginnerNote\": \"\\\"Aku akan selalu ingat etika seorang pelayan.\\\"\",\n\t\t\t\"beginnerChance\": \"Sisa Kesempatan: {chances}\",\n\t\t\t\"standardNote\": \"Permohonan Standar tidak memiliki batas waktu.\",\n\t\t\t\"allWeaponTypes\": \"Semua tipe senjata\",\n\t\t\t\"etc\": \"dll.\",\n\t\t\t\"probIncreased\": \"Kesempatan untuk memperoleh ditingkatkan !\",\n\t\t\t\"eventNote\": \"Karakter 5★ Eksklusif hanya dapat diperoleh di Event Permohonan tertentu selama periode event.\",\n\t\t\t\"viewDetails\": \"Tekan Rincian untuk info lebih lanjut.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Lewati\",\n\t\t\t\"meteorFailed\": \"Animasi meteor gagal dimuat\",\n\t\t\t\"new\": \"Baru\",\n\t\t\t\"convertion\": \"Konversi\",\n\t\t\t\"title\": \"Hasil Permohonan untuk {item} et al\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Kostum Karakter\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"Atur Kostum\",\n\t\t\"owned\": \"Sudah Dimiliki\",\n\t\t\"purchasePrompt\": \"Kamu belum memiliki karakter untuk kostum ini, apakah kamu yakin ingin membeli kostum ini?\",\n\t\t\"promptInfo\": \"Kamu masih bisa menggunakan kostum ini setelah mendapatkan karakter yang sesuai.\",\n\t\t\"obtained\": \"Mendapatkan Kostum Baru\",\n\t\t\"unlocked\": \"Berhasil membuka kostum untuk {character}!\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Sea Breeze Dandelion\",\n\t\t\t\t\"description\": \"Pakaian yang dikenakan Jean saat musim panas. Terlihat nyaman dan santai, namun tetap elegan, sangat cocok dikenakan saat bepergian ke pantai.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Summertime Sparkle\",\n\t\t\t\t\"description\": \"Pakaian pantai Barbara. Rok pendek yang indah penuh dengan vitalitas musim panas dan seolah membawa suasana udara segar dari laut.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Opulent Splendor\",\n\t\t\t\t\"description\": \"Pakaian resmi Keqing. Ia hadir di tengah pagi yang indah pada momen Lantern Rite. Benang yang sudah dirajut begitu lama oleh jerih payah ini, kemudian terjalin menjadi penampilan yang sederhana namun mengesankan.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Orchid's Evening Gown\",\n\t\t\t\t\"description\": \"Pakaian formal Ningguang. Rok cyan panjang mengikuti lekuk tubuhnya yang elegan, dan sayap kupu-kupu di pergelangan kakinya menambahkan sentuhan anggun pada pakaian ini.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Ein Immernachtstraum\",\n\t\t\t\t\"description\": \"Pakaian upacara untuk Prinzessin. Semoga dia yang hatinya mulia selalu mempunyai keberanian, ketulusan dan kebaikan selamanya di dalam hatinya, dan agar tidak ada kejahatan yang bisa mengalahkannya.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Red Dead of Night\",\n\t\t\t\t\"description\": \"Salah satu pakaian Diluc yang dia pakai saat beroperasi dalam rahasia, bagaikan kobaran api dalam gelapnya bayangan. Bekas luka berwarna merah merona di ujung penglihatan para musuh adalah mimpi buruk di sisa hidup mereka.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"A Sobriquet Under Shade\",\n\t\t\t\t\"description\": \"Kostum Lisa yang dipesankan oleh seseorang saat dirinya berkunjung kembali ke Sumeru. Keseimbangan sempurna antara kepraktisan dan keanggunan, modelnya lumayan mirip dengan seragam lamanya ketika masih belajar di Akademiya dulu.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Springbloom Missive\",\n\t\t\t\t\"description\": \"Kostum perjalanan Kamisato Ayaka. Gaun yang dirancang mengikuti model gaun para wanita Fontaine dalam ilustrasi novel ringan, yang menunjukkan sekilas gaya hidup para wanita terhormat di sana.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Blossoming Starlight\",\n\t\t\t\t\"description\": \"Kostum yang dikenakan Klee hanya untuk pertunjukan penting. Warnanya sangat indah, seperti kue yang dihiasi dengan bunga-bunga krim dan lilin merah yang menawan. Dengan mengenakannya, dapat membawa kebahagiaan dan senyuman dalam petualangannya ke seluruh penjuru.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Sailwind Shadow\",\n\t\t\t\t\"description\": \"Kostum Kaeya yang dikenakan saat memerankan \\\"Bandit Belati\\\". Desain kostum ini sengaja dibuat agar terlihat sangat mencolok. Tapi mengenakannya pun tidak sulit, malahan aksesoris lain dan belatinya yang lebih memakan waktu saat dikenakan.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Frostflower Dew\",\n\t\t\t\t\"description\": \"Hadiah Lantern Rite untuk Shenhe, pakaian formal yang khusus dipesankan oleh Cloud Retainer. Benang merah masih mengikat lengannya, namun hawa dingin membeku yang selama ini meliputi hatinya telah sirna.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Twilight Blossom\",\n\t\t\t\t\"description\": \"Setelan festival yang didominasi warna hitam gelap dan biru langit. Hiasan rambutnya bening bersinar seperti bunga Qingxin, kombinasi aksen kesukaan Ganyu dalam satu pakaian.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Bamboo Rain\",\n\t\t\t\t\"description\": \"Baju formal yang disediakan Feiyun Commerce Guild untuk Xingqiu. Motif bambunya elok dan potongannya serasi di badan, namun yang paling Xingqiu sukai dari baju ini adalah kantong dalamnya, yang bisa dipakai untuk menyimpan buku novel tipis.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Phantom in Boots\",\n\t\t\t\t\"description\": \"Model pakaian Kirara. Seorang pendekar kucing di dalam dongeng yang bertarung untuk membela keadilan, sekaligus seorang gadis cerdik yang mengantarkan harapan. Salam dari gadis pendekar kucing.\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Breeze of Sabaa\",\n\t\t\t\t\"description\": \"Gaun elegan yang dibuat untuk Nilou. Gaun ringan yang ditenun dari begitu banyaknya jenis bunga ini beraroma sangat harum tatkala ia diterpa oleh angin timur di kala fajar, dan juga membawakan berkah yang begitu indah dari negeri dongeng.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Cherries Snow-Laden\",\n\t\t\t\t\"description\": \"Model pakaian Hu Tao. Berbeda dengan baju formal warna gelap yang dikenakan untuk urusan Wangsheng Funeral Parlor, gaun ini adalah hadiah spesial dari Xiangling untuk Hu Tao. Kalau kacamata hitamnya sih dari koleksi pribadi yang bersangkutan ya.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"New Year's Cheers\",\n\t\t\t\t\"description\": \"Model pakaian Xiangling. Jaketnya berwarna merah menyala bagai api di tengah dinginnya terpaan angin, dan topinya dibuat khusus berdasarkan penampilan Guoba atas saran Hu Tao. Xiangling sangat menyukai desain ini.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Tranquil Banquet\",\n\t\t\t\t\"description\": \"Pakaian yang dikenakan Yelan saat liburan. Sangat elegan dan sama sekali tidak terkesan sembarangan. Bukan hanya menyampaikan suasana hati, tapi juga merupakan sebuah penyamaran yang “penuh dengan ancaman” ….\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Adventures in Blazing Hue\",\n\t\t\t\t\"description\": \"Pakaian Bennett untuk perjalanannya di Natlan. Diwarnai dengan warna biru air danau yang membawa keberuntungan dengan sedikit warna jingga menyala, pakaian ini memancarkan vitalitas yang meluap-luap, sesuai dengan tanah tempat pakaian itu dikenakan.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Melusent Gift\",\n\t\t\t\t\"description\": \"Hadiah kejutan untuk Neuvillette. Kebahagiaan tak hanya datang dari hadiah itu sendiri, tapi dari setiap tangan kecil yang turut membuatnya. Layaknya sungai yang menyatu dengan lautan luas, begitu pula tetesan embun yang menyatu menciptakan keajaiban yang berkilauan dengan cahaya warna-warni.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Rainlit Bamboo Reverie\",\n\t\t\t\t\"description\": \"Model pakaian Yaoyao. Bayangan tunas muda membelai meja, angin telah membawa tamu yang lain.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Rincian\",\n\t\t\"promotional\": \"Item UP\",\n\t\t\"itemlist\": \"Daftar Item\",\n\t\t\"increasedRate\": \"Persentase Perolehan Meningkat\",\n\t\t\"percentageDrop\": \"Kemungkinan dari Persentase Perolehan {rarity}★: {percentage}\",\n\t\t\"wishDetails\": \"Rincian Permohonan\",\n\t\t\"probInfo\": \"Persentase Dasar Perolehan Item {rarity}★: {singlePercentage} (Termasuk Jaminan: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Daftar Item Permohonan :\",\n\t\t\"itemType\": \"Jenis Item\",\n\t\t\"itemName\": \"Nama Item\",\n\t\t\"beginnerInfo\": \"Tanpa Batas Waktu (Berakhir setelah 20 Permohonan)\",\n\t\t\"limited\": \"Event Terbatas\",\n\t\t\"permanent\": \"Permanen\",\n\t\t\"alert\": \"※ Permohonan ini termasuk {wishName}. Hitungan jaminan Permohonan pada event ini hanya diakumulasi untuk kategori {wishName} dan terpisah dari hitungan jaminan Permohonan lainnya\",\n\t\t\"designatable\": \"Item yang Bisa Dipilih\",\n\t\t\"targetList\": \"Jika Item yang Dipilih merupakan {itemType} 5★, maka daftar Item 5★-nya adalah sebagai berikut:\",\n\t\t\"chronicledRate\": \"(Saat ketentuan jaminan atau Chronicled Path belum terpicu, semua Karakter atau Senjata akan memiliki persentase dasar yang sama)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"Permohonan <span> Pemula </span> tidak memiliki batas waktu dan ditujukan untuk pengembara baru yang baru saja mendarat di Teyvat. Menyediakan karakter dan senjata Non-promosi. <br /> pada Permohonan Pemula, permohonan ×10 mendapat pengurangan biaya <span> 20%</span> lebih rendah menggunakan Acquaint Fate, dan ×10 permohonan pertama termasuk jaminan {character}, dan ×10 permohonan kedua termasuk min. character 4★ <span>lainnya</span>! Permohonan Pemula akan berakhir setelah <span> 20 </span> percobaan. Setelah permohonan berakhir, halaman ini akan berhenti ditampilkan\",\n\t\t\t\"※ Dalam keadaan normal, Permohonan Karakter atau Senjata dihitung berdasarkan pada persentase dasar. Untuk Permohonan dengan persentase perolehan yang meningkat, jaminan perolehan, dan lainnya, akan dihitung berdasarkan pada ketentuan yang berlaku.\",\n\t\t\t\"〓Ketentuan〓\",\n\t\t\t\"Persentase dasar untuk mendapatkan item 5★: <span>0,600%</span>; Persentase dasar untuk mendapatkan item 4★: <span>5,100%</span>; persentase keseluruhan untuk mendapatkan item 4★ (termasuk jaminan): <span>13,000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" adalah Permohonan Standar tanpa batas waktu di mana Karakter dan Senjata non-eksklusif tersedia. <br/>Pada Permohonan ini, setiap 10 kali Permohonan, <span>dijamin</span> akan memberikan sebuah item 4★ ke atas.\",\n\t\t\t\"※ Dalam keadaan normal, Permohonan Karakter atau Senjata dihitung berdasarkan pada persentase dasar. Untuk Permohonan dengan persentase perolehan yang meningkat, jaminan perolehan, dan lainnya, akan dihitung berdasarkan pada ketentuan yang berlaku.\",\n\t\t\t\"〓Ketentuan〓\",\n\t\t\t\"Persentase dasar untuk mendapatkan item 5★: <span>0,600%</span>; persentase dasar untuk mendapatkan Karakter 5★: <span>0,300%</span>, persentase dasar untuk mendapatkan Senjata 5★: <span>0,300%</span>; persentase keseluruhan untuk mendapatkan item 5★ (termasuk jaminan): <span>1,600%</span>. Dijamin mendapatkan item 5★ setidaknya satu kali setiap <span>90</span> kali Permohonan. <br/> Persentase dasar untuk mendapatkan item 4★: <span>5,100%</span>; persentase dasar untuk mendapatkan Karakter 4★: <span>2,550%</span>, persentase dasar untuk mendapatkan Senjata 4★: <span>2,550%</span>; persentase keseluruhan untuk mendapatkan item 4★ (termasuk jaminan): <span>13,000%</span>. Dijamin mendapatkan item 4★ ke atas setidaknya satu kali setiap <span>10</span> kali Permohonan. Persentase perolehan item 4★ dari jaminan adalah <span>99,400%</span>, persentase perolehan item 5★ dari jaminan adalah <span>0,600%</span>\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Event Permohonan - {bannerName} telah dimulai. Selama Event Permohonan, persentase perolehan Karakter 5★ {featuredCharacter},Karakter 4★ {rateupCharacters} <span> meningkat drastis! </span> <br /> <span> ※Karakter Eksklusif di atas tidak akan masuk ke Permohonan Standar \\\"Wanderlust Invocation\\\". </span>\",\n\t\t\t\"※Dalam keadaan normal, Permohonan Karakter atau Senjata dihitung berdasarkan pada persentase dasar. Untuk Permohonan dengan persentase perolehan yang meningkat, jaminan perolehan, dan lainnya, akan dihitung berdasarkan pada ketentuan yang berlaku.\",\n\t\t\t\"〓Ketentuan〓\",\n\t\t\t\"[Item 5★]\",\n\t\t\t\"Untuk Event Permohonan - {bannerName}, persentase dasar untuk mendapatkan Karakter 5★: <span>0,600%</span>; persentase keseluruhan (termasuk jaminan): <span>1,600%</span>. Dijamin mendapatkan Karakter 5★ setidaknya satu kali setiap <span>90</span> kali Permohonan. Saat kamu mendapatkan Karakter 5★ dari Permohonan, ada <span>50,000%</span> kemungkinan Karakter tersebut adalah Karakter UP event ini: {featuredCharacter}. Jika Karakter 5★ pertama yang kamu dapatkan dari event ini bukan Karakter UP, Karakter 5★ yang kamu peroleh selanjutnya dijamin adalah Karakter UP.\",\n\t\t\t\"[Item 4★]\",\n\t\t\t\"Untuk Event Permohonan - {bannerName}, persentase dasar untuk mendapatkan item 4★: <span>5,100%</span>; persentase dasar untuk mendapatkan Karakter 4★: <span>2,550%</span>, persentase dasar untuk mendapatkan Senjata 4★: <span>2,550%</span>; persentase keseluruhan untuk mendapatkan item 4★ (termasuk jaminan): <span>13,000%</span>. Dijamin mendapatkan item 4★ ke atas setidaknya satu kali setiap <span>10</span> kali Permohonan; persentase perolehan item 4★ dari jaminan adalah <span>99,400%</span>, persentase perolehan item 5★ dari jaminan adalah <span>0,600%</span>. Saat kamu mendapatkan item 4★ dari Permohonan, ada <span>50,000%</span> kemungkinan item tersebut adalah Karakter UP event ini: {rateupCharacters} . Jika item 4★ pertama yang kamu dapatkan dari event ini bukan Karakter UP, maka item 4★ yang kamu peroleh selanjutnya dijamin adalah Karakter 4★ UP dari periode ini. Saat kamu mendapatkan item 4★ UP dari Permohonan, persentase perolehan setiap Karakter 4★ UP di event permohonan ini adalah sama rata.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Event Permohonan - {bannerName} dimulai. Selama event Permohonan ini, persentase perolehan Senjata 5★ Eksklusif {featuredWeapon1} , persentase perolehan Senjata 5★ {featuredWeapon2}, persentase perolehan Senjata 4★ Eksklusif {rateupWeapons} meningkat drastis! <br /> <span> ※  Senjata Eksklusif di atas tidak akan masuk ke Permohonan Standar \\\"Wanderlust Invocation\\\".</span>\",\n\t\t\t\"※Dalam keadaan normal, Permohonan Karakter atau Senjata dihitung berdasarkan pada persentase dasar. Untuk Permohonan dengan persentase perolehan yang meningkat, jaminan perolehan, dan lainnya, akan dihitung berdasarkan pada ketentuan yang berlaku.\",\n\t\t\t\"〓Ketentuan〓\",\n\t\t\t\"[Item 5★]\",\n\t\t\t\"Untuk Event Permohonan - {bannerName}, persentase dasar untuk mendapatkan Senjata 5★: <span>0,700%</span>; persentase keseluruhan (termasuk jaminan perolehan): <span>1,850%</span>. Dijamin mendapatkan Senjata 5★ setidaknya satu kali setiap <span>80</span> kali Permohonan. <br/> Saat kamu mendapatkan Senjata 5★ dari Permohonan, ada <span>75,000%</span> kemungkinan Senjata tersebut adalah Senjata UP event ini: {featuredWeapon1} dan {featuredWeapon2}. Jika Senjata 5★ yang kamu dapatkan kali ini bukan Senjata UP, maka Senjata 5★ yang kamu peroleh selanjutnya dijamin adalah Senjata UP. Jika kamu tidak memilih untuk mendapatkan Senjata tertentu dengan mengumpulkan Poin Takdir hingga maksimum, maka saat kamu mendapatkan item 5★ UP, persentase perolehan semua Senjata 5★ UP adalah sama rata. <br/> Dalam Event Permohonan - {bannerName}, Traveler dapat menggunakan sistem \\\"Epitomized Path\\\" untuk memilih Senjata 5★ yang ingin didapatkan, pemilihan Senjata ini hanya berlaku selama Event Permohonan - {bannerName} berlangsung. <br/> Dalam Event Permohonan Event Permohonan - {bannerName}, setelah kamu menentukan senjata pilihanmu, jika kamu menerima Senjata 5★ yang bukan pilihanmu, kamu akan mendapatkan 1 Poin Takdir. Setelah kamu mengumpulkan Poin Takdir hingga <span>maksimum</span>, maka Senjata 5★ yang kamu dapatkan berikutnya pasti adalah senjata yang kamu pilih melalui \\\"Epitomized Path\\\". Jika kamu mendapatkan senjata pilihanmu, maka semua Poin Takdir yang kamu miliki akan kembali menjadi <span>0</span> dan dihitung ulang, terlepas apakah Poin Takdir-mu sudah maksimum atau belum. <br/>Jika kamu tidak memilih senjata dengan \\\"Epitomized Path\\\", maka Poin Takdir <span>tidak akan</span> terkumpul. Kamu bisa mengubah atau membatalkan pilihan senjatamu. Mengubah atau membatalkan pilihan senjatamu akan membuat semua Poin Takdir yang kamu miliki kembali menjadi <span>0</span> dan dihitung ulang. <br/> ※ Poin Takdir di Event Permohonan ini hanya berlaku selama Event Permohonan - {bannerName} berlangsung. Setelah Event Permohonan berakhir, semua Poin Takdir yang kamu miliki akan kembali menjadi <span>0</span> dan dihitung ulang.\",\n\t\t\t\"[Item 4★]\",\n\t\t\t\"Untuk Event Permohonan - {bannerName}, persentase dasar untuk mendapatkan item 4★: <span>6,000%</span>; persentase dasar untuk mendapatkan Karakter 4★: 3,000%, persentase dasar untuk mendapatkan Senjata 4★: <span>3,000%</span>; persentase keseluruhan untuk mendapatkan item 4★ (termasuk jaminan perolehan): <span>14,500%</span>. Dijamin mendapatkan item 4★ ke atas setidaknya satu kali setiap <span>10</span> kali Permohonan. Persentase perolehan item 4★ dari jaminan adalah <span>99,300%</span>, persentase perolehan item 5★ dari jaminan adalah <span>0,700%</span>. Saat kamu mendapatkan item 4★ dari Permohonan, ada <span>75,000%</span> kemungkinan Senjata tersebut adalah Senjata UP event ini: {rateupWeapons}. Jika item 4★ yang kamu dapatkan kali ini bukan Senjata 4★ UP, maka item 4★ yang kamu peroleh selanjutnya dijamin adalah Senjata 4★ UP pada periode kali ini. Saat kamu mendapatkan item 4★ UP dari Permohonan, persentase perolehan setiap Senjata 4★ UP di event permohonan ini adalah sama rata.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"Senjata 5★ yang diperoleh dari permohonan ini juga akan memberikan {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"Senjata 4★ yang diperoleh dari permohonan ini juga akan memberikan {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"Senjata 3★ yang diperoleh dari permohonan ini juga akan memberikan {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓Karakter Duplikat〓\",\n\t\t\t\"text\": \"Saat kamu mendapat Karakter {rarity}★ yang sudah dimiliki untuk ke 2-7 kalinya, tak peduli diperoleh dari mana (seperti Permohonan, ditukar di Toko, atau diberikan oleh game), Karakter duplikat tersebut akan diubah menjadi {stellaFortuna} Karakter tersebut ×1 dan {starglitter} {constBonus}; untuk ke-8 kali dan seterusnya, Karakter duplikat tersebut akan diubah menjadi {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Riwayat Permohonan\",\n\t\t\"text\": \"Riwayat\",\n\t\t\"resetButton\": \"Reset\",\n\t\t\"resetPromptTitle\": \"Reset Riwayat ?\",\n\t\t\"resetPrompt\": \"Tindakan ini akan menghapus semua Karakter dan Senjata dimiliki yang berasal dari banner \\\"{bannerName}\\\". <br /> Yakin untuk me-Reset ?\",\n\t\t\"resetSuccess\": \"Berhasil me-Reset\",\n\t\t\"keepPity\": \"Jangan reset Piti dan status jaminan\",\n\t\t\"selectWish\": \"Jenis Permohonan \",\n\t\t\"disclaimer\": \"Data kamu tidak akan pernah disimpan secara online, semua data akan disimpan ke IndexedDB yang artinya data akan disimpan pada browser, data ini tidak akan dihapus selama kamu tidak menghapusnya secara manual melalui tombol reset atau selama tidak menghapus data browser\",\n\t\t\"currentPity\": \"Pity saat ini :\",\n\t\t\"totalPull\": \"Total Permohonan :\",\n\t\t\"totalSpend\": \"Total Pengeluaran :\",\n\t\t\"filterTxt\": \"Filter\",\n\t\t\"filter\": \"Bintang {rarity}\",\n\t\t\"filterAll\": \"Semua\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Waktu Perolehan\",\n\t\t\"waiting\": \"Tunggu\",\n\t\t\"noData\": \"Tidak ada data .\",\n\t\t\"untracked\": \"Tidak Terlacak\",\n\t\t\"win\": \"Menang 50/50\",\n\t\t\"lose\": \"Kalah 50/50\",\n\t\t\"guaranteed\": \"Item Jaminan\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Item Pilihan\",\n\t\t\"olderLayout\": \"Layout Lama\",\n\t\t\"switchv2\": \"Ganti ke V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Toko\",\n\t\t\"paimonBargains\": \"Penukaran Paimon\",\n\t\t\"fateNeeded\": \"Tambahan {rollQty} {currency} diperlukan.\",\n\t\t\"primoNeeded\": \"Beli dengan menggunakan {primoPrice} Primogem ?\",\n\t\t\"purchaseUpto\": \"Batas Pembelian 1\",\n\t\t\"purchaseConfirm\": \"Konfirmasi Pembelian\",\n\t\t\"exchangeHeading\": \"Redeem Item\",\n\t\t\"purchaseHeading\": \"Beli Item\",\n\t\t\"purchaseButton\": \"Beli\",\n\t\t\"pay\": \"Bayar\",\n\t\t\"product\": \"Produk\",\n\t\t\"consume\": \"Mengkonsumsi\",\n\t\t\"selectPayment\": \"Pilih Jenis Pembayaran\",\n\t\t\"unrealWallet\": \"UnReal Wallet\",\n\t\t\"convertPrimo\": \"Otomatis Konversi ke Primogem?\",\n\t\t\"proceedPayment\": \"Proses Pembayaran\",\n\t\t\"qty\": \"Qty\",\n\t\t\"insufficient\": \"Saldo Tidak Cukup\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Top Up Crystal\",\n\t\t\"initialBonus\": \"Bonus Topup Perdana\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Beli Genesis Crystal\",\n\t\t\"recomendedHeading\": \"Item Rekomendasi\",\n\t\t\"paimonHeading\": \"Penukaran Paimon\",\n\t\t\"welkinNote\": \"Bisa dibeli beberapa kali\",\n\t\t\"limitedOffer\": \"Penawaran Terbatas\",\n\t\t\"noLimitTime\": \"Item tersedia tanpa batas waktu\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"blessing\": \"Blessing of the Welkin Moon\",\n\t\t\t\"newOutfit\": \"Kostum Karakter Baru\",\n\t\t\t\"dayRemaining\": \"Tersisa {days} hari\",\n\t\t\t\"alreadyClaimed\": \"Telah diperoleh hari ini\",\n\t\t\t\"instantlyGet\": \"Beli dan Peroleh\",\n\t\t\t\"dailyGift\": \"Bonus Harian\",\n\t\t\t\"obtainTotal\": \"*Berlaku 30 hari memberikan total {totalGenesis} Genesis Crystal dan {totalPrimo} Primogems\",\n\t\t\t\"claimingBlessing\": \"Tekan untuk mengklaim hadiah harian Blessing of the Welkin Moon\",\n\t\t\t\"issuedPurchase\": \"Pendapatan saat Pembelian\",\n\t\t\t\"collect\": \"Dapatkan Bonus Harian Selama 30 Hari\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Penukaran Starglitter\",\n\t\t\t\"stardust\": \"Penukaran Stardust\",\n\t\t\t\"primogem\": \"Penukaran Primogem\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Genesis Crystal\",\n\t\t\t\"primogem\": \"Primogem\",\n\t\t\t\"intertwined\": \"Intertwined Fate\",\n\t\t\t\"acquaint\": \"Acquaint Fate\",\n\t\t\t\"starglitter\": \"Masterless Starglitter\",\n\t\t\t\"stardust\": \"Masterless Stardust\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Benih takdir yang menghubungkan mimpi.Batu menyala yang dapat menghubungkan takdir dan mimpi satu sama lain, seperti kecerahan yang menghubungkan bintang-bintang dan membentuk hati.\",\n\t\t\t\"acquaint\": \"Benih yang menyinari malam, Tidak peduli seberapa jauh, yang ditakdirkan akan bertemu di bawah bintang, dipandu oleh sinar batunya.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventaris\",\n\t\t\"unsetOutfit\": \"Lepaskan Kostum\",\n\t\t\"setOutfit\": \"Atur Kostum pada Karakter\",\n\t\t\"refinement\": \"Refinement {count}\",\n\t\t\"constellation\": \"Konstelasi {count}\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"Pertama kali dimiliki pada : {date}\",\n\t\t\"notOwned\": \"Tidak Dimiliki\",\n\t\t\"sort\": \"Urutkan\",\n\t\t\"rarity\": \"Rarity\",\n\t\t\"name\": \"Nama\",\n\t\t\"quantity\": \"Quantity\",\n\t\t\"element\": \"Element\",\n\t\t\"release\": \"Tgl Rilis\",\n\t\t\"type\": \"Jenis\",\n\t\t\"owned\": \"Dimiliki\",\n\t\t\"showAllOption\": \"Tampilkan Semua {item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Tidak\",\n\t\t\"yes\": \"Ya\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Opsi\",\n\t\t\"updates\": \"Riwayat Pembaruan\",\n\t\t\"customBanner\": \"Banner Kustom\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Bahasa\",\n\t\t\"currency\": \"Mata Uang\",\n\t\t\"fates\": \"Saldo\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"Matikan Audio dan Musik\",\n\t\t\"switchBanner\": \"Ganti Banner\",\n\t\t\"showAllitems\": \"Tampilkan Semua Item pada Inventaris\",\n\t\t\"autoskip\": \"Auto Skip Splash Art\",\n\t\t\"animatedbg\": \"Animasi Background\",\n\t\t\"multiRoll\": \"Jumlah permohonan dalam sekali klik\",\n\t\t\"factoryReset\": \"Bersihkan Data dan Kembalikan Seperti Semula\",\n\t\t\"resetTitle\": \"Factory Reset\",\n\t\t\"rotate\": \"Putar untuk pengalaman yang lebih baik\",\n\t\t\"keepSetting\": \"Jangan ubah pengaturan? <small> Pity, Saldo, dan pengaturan tidak akan direset</small>\",\n\t\t\"clearCache\": \"Hapus Cache ( {size} )? <small> Asset dalam cache akan dimuat ulang setelah tindakan ini!</small>\",\n\t\t\"resetButton\": \"Reset Sekarang\",\n\t\t\"resetPrompt\": \"Apakah kamu yakin untuk menghapus <strong> Semua Data </strong> dan mengembalikan aplikasi seperti semula?\",\n\t\t\"resetSuccess\": \"Berhasil me-Reset\",\n\t\t\"proAccess\": \"Akses Pro\",\n\t\t\"getpro\": \"Dapatkan Akses Pro\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Dapatkan Access Key baru di sini!\",\n\t\t\"noKey\": \"Belum memiliki Access Key?\",\n\t\t\"verifyFail\": \"Gagal terhubung untuk memverifikasi Access Key!\",\n\t\t\"invalidKey\": \"Access tidak valid\",\n\t\t\"keyExpired1\": \"Access Key Kadaluarsa!\",\n\t\t\"keyExpired2\": \"Access Key \\\"{key}\\\" sudah kadaluarsa sejak {date}!\",\n\t\t\"adFreeUser\": \"Kamu sudah memiliki akses Pro!\",\n\t\t\"inputKeyPlaceholder\": \"Masukkan Access Key\",\n\t\t\"inputKeyTxt\": \"Masukkan Access Key untuk mendapatkan Akses Pro!\",\n\t\t\"checkingKey\": \"Sedang memverifikasi Access Key Tersimpan\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/it-IT.json",
    "content": "{\n\t\"title\": \"Genshin Impact Wish Simulator\",\n\t\"item\": \"Oggetto\",\n\t\"character\": \"Personaggio\",\n\t\"weapon\": \"Arma\",\n\t\"vision\": \"Vision\",\n\t\"anemo\": \"Anemo\",\n\t\"cryo\": \"Cryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Electro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Geo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Bow\",\n\t\"catalyst\": \"Catalyst\",\n\t\"claymore\": \"Claymore\",\n\t\"sword\": \"Sword\",\n\t\"polearm\": \"Polearm\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Ottenuto\",\n\t\"waiting\": \"Attendere\",\n\t\"connectionFailed\": \"Connection Failed!\",\n\t\"confirmButton\": \"Conferma\",\n\t\"cancelButton\": \"Annulla\",\n\t\"disclaimer\": \"Tutte le risorse usate in questo sito sono di proprietà di Mihoyo.\",\n\t\"fanmade\": \"Questa è un'applicazione fatta unicamente dai fan, divertiti !\",\n\t\"pressToContinue\": \"Premi in un punto qualsiasi dell'area vuota per continuare\",\n\t\"installInstruction\": \"Instructions to Install to Home Screen/Desktop\",\n\t\"share\": \"Condividi\",\n\t\"screenshot\": \"Scatta una Foto\",\n\t\"capturing\": \"Catturare\",\n\t\"rewardFirstShare\": \"Premio per la prima condivisione : {qty}\",\n\t\"version\": \"Versione\",\n\t\"donate\": \"Dona\",\n\t\"banner\": {\n\t\t\"beginner\": \"Wish per Principianti\",\n\t\t\"wanderlust\": \"Wanderlust Invocation\",\n\t\t\"epitome-invocation\": \"Incarnazione divina\",\n\t\t\"ode-to-the-dawn-breeze\": \"Poesia del vento mattutino\",\n\t\t\"adrift-in-the-harbor\": \"Alla deriva nel porto\",\n\t\t\"ambrosial-essence\": \"Essenza #d'ambrosia#\",\n\t\t\"ancient-flame-ablaze\": \"Fiamma #ancestrale#\",\n\t\t\"astral-actuation\": \"Attivazione #astrale#\",\n\t\t\"auric-blaze\": \"Fiamma dorata\",\n\t\t\"azure-excursion\": \"Azure Excursion\",\n\t\t\"ballad-in-goblets\": \"Ballad in Goblets\",\n\t\t\"born-of-ocean-swell\": \"Born of Ocean Swell\",\n\t\t\"caution-in-confidence\": \"Monito implacabile\",\n\t\t\"chanson-of-many-waters\": \"Ode alle Mille Acque\",\n\t\t\"conjuring-chiaroscuro\": \"Apparizione di #Chiaroscuro#\",\n\t\t\"cornucopia-of-contention\": \"#Cornucopia# della contesa\",\n\t\t\"dance-of-lantern\": \"Dance of Lantern\",\n\t\t\"dawns-drifting-reverie\": \"#Sogno fuggevole# dell'alba\",\n\t\t\"decree-of-the-deeps\": \"Decree of the Deeps\",\n\t\t\"dewlit-tranquility\": \"Placidità della #rugiada#\",\n\t\t\"discerner-of-enigmas\": \"L'Enigmista\",\n\t\t\"drifting-luminescence\": \"Drifting Luminescence\",\n\t\t\"everbloom-violet\": \"Everbloom Violet\",\n\t\t\"farewell-of-snezhnaya\": \"Farewell of Snezhnaya\",\n\t\t\"forgefires-blessing\": \"Benedizione delle #fiamme#\",\n\t\t\"from-ashes-reborn\": \"Rinato dalle ceneri\",\n\t\t\"gentry-of-hermitage\": \"Gentry of Hermitage\",\n\t\t\"harmonious-abundance\": \"#Abbondanza# armoniosa\",\n\t\t\"illuminating-lightning\": \"Fulmine #squarciaombre#\",\n\t\t\"immaculate-pulse\": \"Battito immacolato\",\n\t\t\"in-the-name-of-the-rosula\": \"Nel nome della Rosula\",\n\t\t\"invitation-to-mundane-life\": \"Invito alla Vita mondana\",\n\t\t\"la-chanson-cerise\": \"La chanson #cerise#\",\n\t\t\"leaves-in-the-wind\": \"Leaves in The Wind\",\n\t\t\"moment-of-bloom\": \"Tempo di fioritura\",\n\t\t\"moonsong-of-the-groves\": \"Canto lunare della #foresta#\",\n\t\t\"of-silken-clouds-woven\": \"Seta delle mille nuvole\",\n\t\t\"oni_s-royale\": \"Contesa di Oni\",\n\t\t\"piercing-shots-crimson-wake\": \"Dispersione #cremisi#\",\n\t\t\"reign-of-serenity\": \"Reign of Serenity\",\n\t\t\"remembrance-of-jade-and-stone\": \"Ricordi di #giada e pietra#\",\n\t\t\"romaritime-meluserenity\": \"Meluserenità di Romaritime\",\n\t\t\"roving-chalice-of-dewgrass\": \"Calice di #rugiada# errante\",\n\t\t\"rubedo-of-white-stone-born\": \"Rubedo, nato dalla #pietra bianca#\",\n\t\t\"sharktacular-surfari\": \"Surfari squalorditivo\",\n\t\t\"secretum-secretorum\": \"Secretum Secretorum\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Segreti# plasmati nel fuoco\",\n\t\t\"somnias-a-luna\": \"Somnias a #Luna#\",\n\t\t\"sparkling-steps\": \"Sparkling Steps\",\n\t\t\"starry-nights-whispers\": \"#Sussurri della notte# stellata\",\n\t\t\"tapestry-of-golden-flames\": \"Tapestry of Golden Flames\",\n\t\t\"tempestuous-destiny\": \"Destino tempestoso\",\n\t\t\"temptation-of-the-crimson-sands\": \"entazione della #Sabbia Rossa#\",\n\t\t\"the-crane-soars-skyward\": \"La gru solca i cieli\",\n\t\t\"the-hearths-ashen-shadow\": \"Ombra cinerea #del Focolare#\",\n\t\t\"the-heron_s-court\": \"La corte dell'airone\",\n\t\t\"the-lone-light-knocks-at-night\": \"#Luce solinga# che bussa alla notte\",\n\t\t\"the-moongrass-enlightenment\": \"L'illuminazione dell'Erba lunare\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"Inno trionfale del #Vento del Nord#\",\n\t\t\"the-transcendent-one-returns\": \"Evento trascendentale\",\n\t\t\"thunder-rends-the-plains-on-high\": \"Rombi di #tuono# sugli altopiani\",\n\t\t\"twilight-arbiter\": \"Giudice del crepuscolo\",\n\t\t\"twirling-lotus\": \"Loto volteggiante\",\n\t\t\"viridescent-vigil\": \"Viridescent Vigil\",\n\t\t\"void-stars-advent\": \"Avvento dell'#Astro del Vuoto#\",\n\t\t\"ya-hoho-compendium\": \"#Ya-hoho#-pedia\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Epitomized Path\",\n\t\t\"fatePoint\": \"Punti Fato\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Desideri cancellare il tuo Percorso attuale ?\",\n\t\t\"cancelDesc\": \"La cancellazione azzererà i Punti Fato accumulati\",\n\t\t\"selectWeapon\": \"Seleziona l'Arma\",\n\t\t\"chartCourseOf\": \"Grafico del Percorso per {target}\",\n\t\t\"cancelCourse\": \"Annulla Percorso\",\n\t\t\"chartCourse\": \"Grafico del Percorso\",\n\t\t\"courseSetFor\": \"Percorso deciso per: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Epitomized Path\\\" è una meccanica dei desideri per \\\"Epitome Invication\\\". I viaggiatori possono tracciare un percorso verso un'arma a 5 stelle che sperano di ottenere.\",\n\t\t\t\"Una volta che avrai tracciato un percorso verso l'arma scelta, otterrai un Punto Fato se <span> riceverai un'arma a 5 stelle che non è quella che hai scelto</span>. Puoi ottenere un massimo di 2 Punti Fato.\",\n\t\t\t\"Una volta che avrai raggiunto la quantità massima di Punti Fato, la prossima arma a 5 stelle che sceglierai sarà quella scelta con \\\"Epitomized Path\\\".\",\n\t\t\t\"Quando otterrai l'arma scelta in Epitome Invocation con Epitomized Path, <span> i Punti Fato accumulati verranno cancellati</span>.\",\n\t\t\t\"Se non usi Epitomized Path per ottenere un'arma, non accumulerai Punti Fato.\",\n\t\t\t\"Il percorso tracciato verso un'arma può essere modificato o annullato. Tuttavia, dopo averlo fatto, tutti i Punti Fato correnti verranno cancellati.\",\n\t\t\t\"Al termine del periodo di Epitome Invocation, tutti i Punti Fato correnti verranno cancellati.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Wish\",\n\t\t\"rollButton\": \"Wish {count}\",\n\t\t\"stellaFortuna\": \"Stella Fortuna\",\n\t\t\"loadFailed\": \"Impossibile caricare il banner! <br /> Passa ad un altro banner o riconnettiti a Internet per evitare errori!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"Tutti i Banner\",\n\t\t\t\"previous\": \"Banner Precedente\",\n\t\t\t\"findBanner\": \"Trova un Banner\",\n\t\t\t\"group\": \"Gruppo\",\n\t\t\t\"beginner\": \"Wish per Principianti\",\n\t\t\t\"character-event\": \"Wish dell'Evento del Personaggio\",\n\t\t\t\"weapon-event\": \"Wish per Armi\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Wish Standard\",\n\t\t\t\"wishDescription\": \"Ogni 10 wish se ne ha almeno uno a 4 o più stelle\",\n\t\t\t\"novice\": \"Wish per Principianti\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"10 set hanno il 20% di sconto. Per i primi 10 set potrai ricevere {character}.\",\n\t\t\t\"beginnerNote\": \"\\\"Come farebbe una cameriera rispettosa.\\\"\",\n\t\t\t\"beginnerChance\": \"Chance Rimaste: {chances}\",\n\t\t\t\"standardNote\": \"I wish standard non hanno una scadenza.\",\n\t\t\t\"allWeaponTypes\": \"Tutti i Tipi di Armi\",\n\t\t\t\"etc\": \"ecc.\",\n\t\t\t\"probIncreased\": \"Probabilità aumentata !\",\n\t\t\t\"eventNote\": \"I personaggi a 5 stelle esclusivi dell'evento possono essere ottenuti solo nel wish specifico durante il periodo/i determinato.\",\n\t\t\t\"viewDetails\": \"Visualizza i Dettagli per maggiori informazioni.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Salta\",\n\t\t\t\"meteorFailed\": \"Errore nel caricamento dell'animazione della Meteora\",\n\t\t\t\"new\": \"Nuovo\",\n\t\t\t\"convertion\": \"Conversione\",\n\t\t\t\"title\": \"Risultato del Wish per {item} e altri\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Outfit dei personaggi\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"Seleziona l'Outfit\",\n\t\t\"owned\": \"Già in possesso\",\n\t\t\"purchasePrompt\": \"Non hai ancora un personaggio per questo outfit, sei sicuro di volerlo acquistare?\",\n\t\t\"promptInfo\": \"Potrai ancora usare questo outfit dopo aver ottenuto il personaggio giusto\",\n\t\t\"obtained\": \"New Outfit Obtained\",\n\t\t\"unlocked\": \"{character}: Outfit Unlocked\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Sea Breeze Dandelion\",\n\t\t\t\t\"description\": \"L'outfit estivo di Jean. Leggero e alla moda, ma non per questo poco elegante. La scelta perfetta per una gita al mare.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Summertime Sparkle\",\n\t\t\t\t\"description\": \"L'outfit da spiaggia di Barbara. Questa graziosa gonna trabocca di vitalità estiva e porta con sé una fresca brezza oceanica.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Opulent Splendor\",\n\t\t\t\t\"description\": \"L'outfit formale di Keqing. Nella splendida alba di Lantern Rite, i fili intrecciati in giorni di duro lavoro si uniscono in un aspetto leggero ma magnifico.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Orchid's Evening Gown\",\n\t\t\t\t\"description\": \"L'outfit formale di Ningguang. La lunga gonna ciano mette in evidenza le sue eleganti curve, e le ali di farfalla alle caviglie conferiscono un leggero tocco di grazia.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Ein Immernachtstraum\",\n\t\t\t\t\"description\": \"L'outfit da cerimonia di Prinzessin. Possa, lei che è nobile, conservare per sempre il suo coraggio, la sua sincerità e la sua gentilezza, in modo tale che nessun male possa mai sopraffarla.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Red Dead of Night\",\n\t\t\t\t\"description\": \"Uno degli abiti che indossa Diluc durante le azioni segrete, ricorda una fiamma che danza nell'ombra. Le tracce rosso cremisi che lascia ai marigni della visuale del nemico sfregiano per sempre i loro incubi.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"Un nomignolo all’ombra\",\n\t\t\t\t\"description\": \"Un completo commissionato da Lisa quando è tornata in visita a Sumeru. Un equilibrio perfetto tra praticità ed eleganza, il completo assomiglia alla vecchia uniforme di Lisa ai tempi dell’Akademiya.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Missiva primaverile\",\n\t\t\t\t\"description\": \"Il completo di viaggio di Ayaka. Il suo design si basa sugli abiti di Fontaine raffigurati nelle illustrazioni delle light novel, e sembra rispecchiare lo stile di vita delle gentildonne di quella nazione.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Luce stellare fiorente\",\n\t\t\t\t\"description\": \"Un delizioso completo che Klee indossa solo per le esibizioni più importanti. Dai colori brillanti, sembra una torta decorata con fiori di panna e coronata da candele scarlatte. Indossandolo, la felicità e i sorrisi riempiranno le vostre avventure.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Ombra Navigavento\",\n\t\t\t\t\"description\": \"Il completo che Kaeya indossa quando interpreta il \\\"Bandito della Daga\\\". Sebbene sia alquanto appariscente, non è difficile da indossare, anche se ci vuole del tempo per sistemare tutti quegli accessori e tutte quelle daghe.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Rugiada fiorigente\",\n\t\t\t\t\"description\": \"Questo regalo che Shenhe ha ricevuto per il Festival delle lanterne è un completo elegante e formale commissionato dalla sua maestra, Vestale delle nuvole. Nonostante le braccia siano ancora adornate da corde rosse, il freddo pungente nel cuore di Shenhe è svanito.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Bocciolo crepuscolare\",\n\t\t\t\t\"description\": \"Un completo da festa leggero ed elegante, dalla tonalità nero notte e con accenti blu cerulei. I suoi accessori per capelli brillano come i Qingxin, un abbinamento molto gradito a Ganyu.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Pioggia di bambù\",\n\t\t\t\t\"description\": \"Un abito formale preparato dalla Gilda dei commercianti di Feiyun per Xingqiu. Il bambù è disegnato in modo raffinato e il taglio è lusinghiero, ma la parte preferita di Xingqiu sono le tasche interne, dentro le quali entrerebbe un libro non troppo spesso.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Fantasma con gli stivali\",\n\t\t\t\t\"description\": \"Il completo di Kirara. L'eroica spadaccina felina dalla fama fiabesca, l'astuta fattorina dei sogni più cari... è lieta di fare la tua conoscenza!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Brezza di Sabaa\",\n\t\t\t\t\"description\": \"Un abito elegante per Nilou. Sembra che il tessuto di questo leggerissimo abito sia composto da innumerevoli fiori, e per tale motivo emana una fragranza delicata come il vento orientale all'alba, portando con sé graziose benedizioni di una terra fiabesca.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Ciliegie cariche di neve\",\n\t\t\t\t\"description\": \"Il completo di Hu Tao. In contrasto con l'abbigliamento da cerimonia usato dai Servizi Funebri Wangsheng, questo vestito è un regalo speciale che ha ricevuto dalla sua buona amica Xiangling. Gli occhiali, invece, sono parte della collezione personale di Hu Tao.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Celebrazione per l'anno nuovo\",\n\t\t\t\t\"description\": \"Il completo di Xiangling. Il cappotto rosso brilla come una stufetta nel vento gelido, e il cappello, suggerito da Hu Tao, è ispirato all'aspetto di Guoba. Un design perfetto per i gusti di Xiangling.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Banchetto sereno\",\n\t\t\t\t\"description\": \"Il completo che Yelan ha preparato per la sua vacanza. Elegante e raffinato, trasmette un senso di tranquillità, ma ha anche un tocco nascosto di aggressività…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Avventure tra colori sfolgoranti\",\n\t\t\t\t\"description\": \"L’abbigliamento da viaggio di Bennett per i suoi viaggi a Natlan. D’un blu lacustre portafortuna e con sfumature arancione acceso, questi vestiti emanano una vitalità che richiama la terra dove sono stati indossati.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Dono melusino\",\n\t\t\t\t\"description\": \"Una sorpresa per Neuvillette. La gioia non deriva solo dal dono in sé, ma da ogni manina che ha contribuito a crearlo. Come i fiumi sfociano nel mare sconfinato, così anche le gocce di rugiada possono unirsi per creare un miracolo luminoso come l’arcobaleno.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Fantasticheria di bambù nella pioggia\",\n\t\t\t\t\"description\": \"Il completo di Yaoyao. Sulla babelica scrivania, nuovi germogli proiettano un’ombra mutevole; a volte, l’ospite a entrare non è il vento carezzevole.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Dettagli\",\n\t\t\"promotional\": \"Promotional Items\",\n\t\t\"itemlist\": \"List of Items\",\n\t\t\"increasedRate\": \"Aumento del Tasso di Caduta\",\n\t\t\"percentageDrop\": \"Percentuale di caduta di oggetti a {rarity} stelle: {percentage}\",\n\t\t\"wishDetails\": \"Dettagli dei Wish\",\n\t\t\"probInfo\": \"Probabilità base di caduta di oggetti a {rarity} stelle: {singlePercentage} (Incl. guarantee: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Oggetto desiderato :\",\n\t\t\"itemType\": \"Tipo dell'Oggetto\",\n\t\t\"itemName\": \"Nome dell'Oggetto\",\n\t\t\"beginnerInfo\": \"Nessun limite di tempo (si chiude dopo 20 wish)\",\n\t\t\"limited\": \"Evento a Tempo Limitato\",\n\t\t\"permanent\": \"Permanente\",\n\t\t\"alert\": \"※ Questo è un {wishName}. La garanzia dei desideri viene accumulata solo all'interno di questo evento ed è indipendente dalle garanzie di altri desideri.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"Il <span> Wish </span> per principianti non ha limiti di tempo ed è rivolto ai viaggiatori che sono atterrati di recente a Teyvat. Sono disponibili personaggi e armi non promozionali. <br /> Nel Wish per principianti, i set da 10 wish costano il <span> 20%</span> in meno di Acquaint Fate, e il tuo primo set da 10 wish includerà sicuramente {character} , mentre il tuo secondo set da 10 wish includerà sicuramente un <span> altro </span> personaggio min. a 4 stelle! Il Wish per Principianti sparisce dopo <span> 20 </span> tentativi. Dopo essere sparito, la pagina scomparirà.\",\n\t\t\t\"※ Nella maggior parte dei casi, la probabilità di base di tutti i personaggi e le armi è distribuita uniformemente. Se è in vigore un boost o una garanzia, fare riferimento alle regole corrispondenti.\",\n\t\t\t\"〓Regole〓\",\n\t\t\t\"Probabilità base di vincere un personaggio a 5 stelle = <span> 0.600%</span> <br /> Probabilità base di vincere un personaggio a 4 stelle = <span> 5.100%</span>; probabilità consolidata (incl. garanzia) = <span> 13.000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" è un wish standard senza limiti di tempo. Sono disponibili personaggi e armi non esclusivi per gli eventi.<br/> In questo wish, vincerai <span>sicuramente</span> un oggetto a 4 o più stelle almeno una volta ogni 10 tentativi.\",\n\t\t\t\"※Nella maggior parte dei casi, la probabilità base di vincere qualsiasi personaggio o arma è distribuita uniformemente. Se è attivo un potenziamento o una garanzia fare riferimento alle rispettive regole.\",\n\t\t\t\"〓Regole〓\",\n\t\t\t\"Probabilità base di vincere un oggetto a 5 stelle = <span>0.600%</span>; probabilità base di vincere un personaggio a 5 stelle = <span>0.300%</span>, e probabilità base di vincere un'arma a 5 stelle = <span>0.300%</span>; probabilità consolidata (incl. garanzia) di vincere un oggetto a 5 stelle = <span>1.600%</span>; è assicurata la vittoria di un oggetto a 5 stelle almeno una volta ogni <span>90</span> tentativi. <br> Probabilità base di vincere un oggetto a 4 stelle = <span>5.100%</span>; probabilità base di vincere un personaggio a 4 stelle = <span>2.550%</span>, e probabilità base di vincere un'arma a 4 stelle = <span>2.550%</span>; probabilità consolidata (incl. garanzia) di vincere un oggetto a 4 stelle = <span>13.000%</span>; è assicurata la vittoria di un oggetto a 4 o più stelle almeno una volta ogni <span>10</span> tentativi; probabilità di vincere un oggetto a 4 stelle grazie alla garanzia = <span>99.400%</span>, e probabilità di vincere un oggetto a 5 stelle grazie alla garanzia = <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"L'Event Wish \\\"{bannerName}\\\" è disponibile ora. Durante questo evento, il personaggio a 5 stelle <span>esclusivo dell'evento</span> {featuredCharacter} come i personaggi a 4 stelle {rateupCharacters} riceveranno un <span>enorme aumento della percentuale di ottenimento</span>! <br/> <span> ※ Tra questi personaggi, il personaggio esclusivo dell'evento non sarà disponibile nel wish \\\"Wanderlust Invocation\\\" standard.</span>\",\n\t\t\t\"※ Nella maggior parte dei casi, la probabilità base di vincere qualsiasi personaggio o arma è distribuita uniformemente. Se è attivo un potenziamento o una garanzia fare riferimento alle rispettive regole.\",\n\t\t\t\"〓Regole〓\",\n\t\t\t\"Oggetti a 5 stelle\",\n\t\t\t\"Per l'Event Wish \\\"{bannerName}\\\": Probabilità base di vincere un personaggio a 5 stelle = <span>0.600%</span>; probabilità consolidata (incl. garanzia) = <span>1.600%</span>; è assicurata la vittoria di un personaggio a 5 stelle almeno una volta ogni <span>90</span> tentativi.<br/> C'è un <span>50.000%</span> di possibilità che il primo oggetto a 5 stelle vinto sia il personaggio promozionale {featuredCharacter}. Se il primo personaggio a 5 stelle vinto in questo evento non è il personaggio promozionale, allora il prossimo personaggio a 5 stelle che vincerai sarà <span>sicuramente</span> il personaggio promozionale.\",\n\t\t\t\"Oggetti a 4 stelle\",\n\t\t\t\"Per l'Event Wish  \\\"{bannerName}\\\": Probabilità base di vincere un oggetto a 4 stelle = <span>5.100%</span>; probabilità base di vincere un personaggio a 4 stelle = <span>2.550%</span>, e probabilità base di vincere un'arma a 4 stelle = <span>2.550%</span>; probabilità consolidata (incl. garanzia) di vincere un oggetto a 4 stelle = <span>13.000%</span>; è assicurata la vittoria di un oggetto a 4 o più stelle almeno una volta ogni 10 tentativi; probabilità di vincere un oggetto a 4 stelle grazie alla garanzia = <span>99.400%</span>, e probabilità di vincere un oggetto a 5 stelle grazie alla garanzia = <span>0.600%</span>. <br/> C'è un <span>50.000%</span> di possibilità che il primo oggetto a 4 stelle vinto sia uno dei personaggi in primo piano tra {rateupCharacters}. Se il primo oggetto a 4 stelle vinto in questo evento non è uno dei personaggi in primo piano, allora il prossimo oggetto a 4 stelle che vincerai sarà <span>sicuramente</span> un personaggio in primo piano. Quando vinci un oggetto a 4 stelle in primo piano, la probabilità di ottenere un qualsiasi personaggio a 4 stelle in primo piano è uguale per ciascuno di loro.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"L'Event Wish \\\"{bannerName}\\\" è disponibile ora. Durante questo evento, l'arma a 5 stelle esclusive dell'evento {featuredWeapon1}, l'arma a 5 stelle {featuredWeapon2} e l'arma a 4 stelle esclusiva dell'evento {rateupWeapons} riceveranno un <span>enorme aumento della percentuale di ottenimento</span>! <br/> <span> ※ Tra queste armi, le armi esclusive dell'evento non saranno disponibili nel wish \\\"Wanderlust Invocation\\\" standard.</span>\",\n\t\t\t\"※ Nella maggior parte dei casi, la probabilità base di vincere qualsiasi personaggio o arma è distribuita uniformemente. Se è attivo un potenziamento o una garanzia fare riferimento alle rispettive regole.\",\n\t\t\t\"〓Regole〓\",\n\t\t\t\"Oggetti a 5 stelle\",\n\t\t\t\"Per l'Event Wish \\\"{bannerName}\\\": probabilità base di vincere un'arma a 5 stelle = <span>0.700%</span>; probabilità consolidata (incl. garanzia) = <span>1.850%</span>; è assicurata la vittoria di un'arma a 5 stelle almeno una volta ogni <span>80</span> tentativi.<br/> C'è un <span>75.000%</span> di possibilità che la prima arma a 5 stelle vinta sia una delle armi promozionali tra {featuredWeapon1} e {featuredWeapon2}. Se la prima arma a 5 stelle vinta in questo evento non è una delle armi promozionali, allora la prossima arma a 5 stelle che vincerai sarà <span>sicuramente</span> un'arma promozionale. Nel caso in cui si ottenga un oggetto promozionale a 5 stelle con un wish senza avere il massimo dei Punti Fato, la probabilità di ottenere una qualsiasi arma a 5 stelle è uguale per ciascuna di loro. <br/> Per l'Event Wish \\\"{bannerName}\\\", puoi tracciare un percorso verso l'arma promozionale a 5 stelle scelta con \\\"Epitomized Path.\\\" La scelta dell'arma sarà valida solo per il periodo dell'Event Wish \\\"{bannerName}\\\". <br/> Per l'Event Wish \\\"{bannerName}\\\", dopo aver tracciato un percorso verso un'arma scelta con \\\"Epitomized Path,\\\" se ottieni un'arma a 5 stelle che non è l'arma scelta, riceverai 1 Punto Fato. Una volta raggiunta la <span>quantità massima</span> di Punti Fato, l'arma a 5 stelle successiva sarà <span>sicuramente</span> l'arma scelta. Una volta ottenuta l'arma scelta, i Punti Fato si resetteranno a <span>0</span>, indipendentemente dal fatto che tu abbia raggiunto o meno il massimo dei punti, e dovrai accumularli nuovamente. Se non usi \\\"Epitomized Path\\\" per tracciare un percorso verso un'arma scelta, <span>not</span> riceverai Punti Fato. <br/> Dopo aver tracciato un percorso verso un'arma scelta, puoi cambiare la tua scelta o annullarla del tutto, ma così facendo resetterai i Punti Fato a <span>0</span> e dovrai accumularli nuovamente. <br/> ※ I Punti Fato per questo Wish in \\\"Epitome Invocation\\\" sono validi solo per il periodo dell'Event Wish. Al termine dell'Event Wish, i Punti Fato si resetteranno a <span>0</span>, e dovrai accumularli nuovamente.\",\n\t\t\t\"Oggetti a 4 stelle\",\n\t\t\t\"Per l'Event Wish \\\"{bannerName}\\\": probabilità base di vincere un oggetto a 4 stelle = <span>6.000%</span>; probabilità base di vincere un personaggio a 4 stelle = <span>3.000%</span>, e probabilità base di vincere un'arma a 4 stelle = <span>3.000%</span>; probabilità consolidata (incl. garanzia) di vincere un oggetto a 4 stelle = <span>14.500%</span>; è assicurata la vittoria di un oggetto a 4 o più stelle almeno una volta ogni <span>10</span> tentativi; probabilità di vincere un oggetto a 4 stelle grazie alla garanzia = <span>99.300%</span>, e probabilità di vincere un oggetto a 5 stelle grazie alla garanzia = <span>0.700%</span>. <br/> C'è un <span>75.000%</span> di possibilità che il primo oggetto a 4 stelle vinto sia una delle armi in primo piano tra {rateupWeapons}. Se il primo oggetto a 4 stelle vinto in questo evento non è una delle armi in primo piano, allora il prossimo oggetto a 4 stelle che vincerai sarà <span>sicuramente</span> un'arma in primo piano. Quando vinci un oggetto a 4 stelle in primo piano, la probabilità di ottenere una qualsiasi arma a 4 stelle in primo piano è uguale per ciascuna di loro.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"Le armi a 5 stelle vinte con questo desiderio vengono fornite con {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"Le armi a 4 stelle vinte con questo desiderio vengono fornite con {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"Le armi a 3 stelle vinte con questo desiderio vengono fornite con {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓Personaggi Duplicati〓\",\n\t\t\t\"text\": \"Se si ottiene un personaggio che si possiede già (ottenuto in un wish, riscattato dal negozio, o assegnato dal gioco): tra la seconda e la settima volta che si ottiene il personaggio, verrà convertito in {stellaFortuna} ×1 del personaggio e {starglitter} {constBonus}; dall'ottava volta in poi verrà convertito in {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Wish History\",\n\t\t\"text\": \"Cronologia\",\n\t\t\"resetButton\": \"Ripristino\",\n\t\t\"resetPromptTitle\": \"Ripristino della Cronologia ?\",\n\t\t\"resetPrompt\": \"Quest'operazione rimuoverà anche tutti i personaggi e tutte le armi relativi al banner \\\"{bannerName}\\\" dal tuo inventario. <br /> Sei sicuro di volere ripristinare?\",\n\t\t\"resetSuccess\": \"Ripristino effettuato con successo !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Seleziona il tipo di wish:\",\n\t\t\"disclaimer\": \"Non salviamo mai i tuoi data su archivi cloud. Tutti i dati sono archiviati in IndexedDB, questo significa che sono salvati nella memoria del browser. Non verranno mai eliminati finchè non li elimini manualmente con il pulsante di eliminazione/ripristino, oppure cancellando i dati del browser.\",\n\t\t\"currentPity\": \"Pity Corrente :\",\n\t\t\"totalPull\": \"Totale Tiri :\",\n\t\t\"totalSpend\": \"Totale Spesa :\",\n\t\t\"filterTxt\": \"Filtro\",\n\t\t\"filter\": \"{rarity} Stella/e\",\n\t\t\"filterAll\": \"Tutto\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Tempo Guadagnato\",\n\t\t\"waiting\": \"Attendere\",\n\t\t\"noData\": \"Nessun dato disponibile .\",\n\t\t\"untracked\": \"Non Rintracciato\",\n\t\t\"win\": \"Vittoria 50/50\",\n\t\t\"lose\": \"Perdita 50/50\",\n\t\t\"guaranteed\": \"Assicurato\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Oggetto Selezionato\",\n\t\t\"olderLayout\": \"Older Layout\",\n\t\t\"switchv2\": \"Switch to V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Negozio\",\n\t\t\"paimonBargains\": \"Paimon Bargains\",\n\t\t\"fateNeeded\": \"È necessario un {rollQty} {currency} aggiuntivo.\",\n\t\t\"primoNeeded\": \"Acquista con {primoPrice} Primogem ?\",\n\t\t\"purchaseUpto\": \"Acquista fino a 1\",\n\t\t\"purchaseConfirm\": \"Conferma d'Acquisto\",\n\t\t\"exchangeHeading\": \"Oggetto da Scambiare\",\n\t\t\"purchaseHeading\": \"Oggetto da acquistare\",\n\t\t\"purchaseButton\": \"Acquista\",\n\t\t\"pay\": \"Paga\",\n\t\t\"product\": \"Prodotto\",\n\t\t\"consume\": \"Consumo\",\n\t\t\"selectPayment\": \"Seleziona il Tipo di Pagamento\",\n\t\t\"unrealWallet\": \"UnReal Wallet\",\n\t\t\"convertPrimo\": \"Convertire automaticamente in primogem ?\",\n\t\t\"proceedPayment\": \"Procedi al Pagamento\",\n\t\t\"qty\": \"Qty\",\n\t\t\"insufficient\": \"Fondi Insufficienti\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Crystal Top-Up\",\n\t\t\"initialBonus\": \"Bonus prima ricarica\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Compra Genesis Crystal\",\n\t\t\"recomendedHeading\": \"Oggetti Consigliati\",\n\t\t\"paimonHeading\": \"Paimon's Bargains\",\n\t\t\"welkinNote\": \"Può essere acquistato più volte\",\n\t\t\"limitedOffer\": \"Offerta a tempo limitato\",\n\t\t\"noLimitTime\": \"Nessun oggetto a tempo limitato disponibile\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Blessing of the Welkin Moon\",\n\t\t\t\"newOutfit\": \"Nuovi outfit per i personaggi\",\n\t\t\t\"dayRemaining\": \"Giorni rimanenti: {days}\",\n\t\t\t\"alreadyClaimed\": \"Già Riscattato oggi\",\n\t\t\t\"instantlyGet\": \"Ottieni immediatamente\",\n\t\t\t\"dailyGift\": \"Regalo giornaliero\",\n\t\t\t\"obtainTotal\": \"Ottieni un totale di {totalGenesis} Genesis Crystal e {totalPrimo} Primogems in 30 giorni\",\n\t\t\t\"claimingBlessing\": \"Fai click per riscattare le tue ricompense giornaliere di Blessing of the Welkin Moon\",\n\t\t\t\"issuedPurchase\": \"Rilasciato all'acquisto\",\n\t\t\t\"collect\": \"Raccogli le ricompense di accesso giornaliere per 30 giorni\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Scambio Starglitter\",\n\t\t\t\"stardust\": \"Scambio Stardust\",\n\t\t\t\"primogem\": \"Scambia con Primogem\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Genesis Crystal\",\n\t\t\t\"primogem\": \"Primogem\",\n\t\t\t\"intertwined\": \"Intertwined Fate\",\n\t\t\t\"acquaint\": \"Acquaint Fate\",\n\t\t\t\"starglitter\": \"Masterless Starglitter\",\n\t\t\t\"stardust\": \"Masterless Stardust\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Una pietra fatidica che unisce i sogni. Il suo bagliore può intrecciare destini e unire sogni, proprio come il suo bagliore unisce le stelle alle forme dei desideri di un cuore.\",\n\t\t\t\"acquaint\": \"Un seme che illumina la notte. Non importa la distanza, guidato dal bagliore della pietra, si incontrerà il fato sotto le stelle.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventario\",\n\t\t\"unsetOutfit\": \"Outfit Non Selezionato\",\n\t\t\"setOutfit\": \"Seleziona l'Outfit sul Personaggio\",\n\t\t\"refinement\": \"Refinement {count}\",\n\t\t\"constellation\": \"Costellazione {count}\",\n\t\t\"extra\": \"Extra {count}\",\n\t\t\"firstSummon\": \"Evocato per la prima volta alle : {date}\",\n\t\t\"notOwned\": \"Non in Possesso\",\n\t\t\"sort\": \"Ordina\",\n\t\t\"rarity\": \"Rarità\",\n\t\t\"name\": \"Nome\",\n\t\t\"quantity\": \"Quantità\",\n\t\t\"element\": \"Elemento\",\n\t\t\"release\": \"Pubblicazione\",\n\t\t\"type\": \"Tipo\",\n\t\t\"owned\": \"In Possesso\",\n\t\t\"showAllOption\": \"Mostra Tutti {item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"No\",\n\t\t\"yes\": \"Sì\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Opzioni\",\n\t\t\"updates\": \"Aggiorna la Cronologia\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Lingua\",\n\t\t\"currency\": \"Moneta\",\n\t\t\"fates\": \"Numero di desideri\",\n\t\t\"unlimited\": \"Illimitata\",\n\t\t\"manual\": \"Manuale\",\n\t\t\"mute\": \"Muta Audio ed Effetti Sonori\",\n\t\t\"switchBanner\": \"Cambia Banner\",\n\t\t\"showAllitems\": \"Mostra tutti gli oggetti nell'inventario\",\n\t\t\"autoskip\": \"Auto Skip Splash Art\",\n\t\t\"animatedbg\": \"Sfondo Animato\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Cancella i Dati e Ripristina\",\n\t\t\"resetTitle\": \"Factory Reset\",\n\t\t\"rotate\": \"Gira per un'esperienza migliore\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Clear Caches ( {size} ) ? <small>You will re-load the assets after this action!</small>\",\n\t\t\"resetButton\": \"Ripristina ora\",\n\t\t\"resetPrompt\": \"Sei sicuro di voler cancellare <strong>Tutti i Dati</strong> e ripristinare le impostazioni predefinite ?\",\n\t\t\"resetSuccess\": \"Ripristino effettuato con successo\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Get a new one Here!\",\n\t\t\"noKey\": \"Don't have a key?\",\n\t\t\"verifyFail\": \"Failed to verifying AdKey, Check your Connection\",\n\t\t\"invalidKey\": \"Your key is invalid\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Enter Key\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/de-DE.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"Die tausend flammenden Sonnen\",\n\t\"a-thousand-floating-dreams\": \"Fließende Träume von tausend Nächten\",\n\t\"absolution\": \"Absolution\",\n\t\"akuoumaru\": \"Akuoumaru\",\n\t\"alley-hunter\": \"Gassenjäger\",\n\t\"amos-bow\": \"Amos' Bogen\",\n\t\"astral-vultures-crimson-plumage\": \"Karmesinrotes Federkleid des Astralgeiers\",\n\t\"aqua-simulacra\": \"Aqua Simulacra\",\n\t\"aquila-favonia\": \"Windfalke\",\n\t\"athame-artis\": \"Athame Artis\",\n\t\"azurelight\": \"Azurglanz\",\n\t\"beacon-of-the-reed-sea\": \"Schilfmeer-Bake\",\n\t\"black-tassel\": \"Schwarze Quaste\",\n\t\"bloodsoaked-ruins\": \"Blutbefleckte Stadt\",\n\t\"bloodtained-greatsword\": \"Drachenblutschwert\",\n\t\"calamity-queller\": \"Ende des Unheils\",\n\t\"cashflow-supervision\": \"Monetäre Aufsichtseinheit\",\n\t\"cool-steel\": \"Kühle Klinge\",\n\t\"cranes-echoing-call\": \"Widerhallender Ruf des Kranichs\",\n\t\"crimson_moon_s-semblance\": \"Form des scharlachroten Mondes\",\n\t\"dawning-frost\": \"Froststern\",\n\t\"debate-club\": \"Schlagfestes Argument\",\n\t\"dragon_s-bane\": \"Drachenschreck\",\n\t\"elegy-for-the-end\": \"Letzter Seufzer\",\n\t\"emerald-orb\": \"Jadekugel\",\n\t\"engulfing-lightning\": \"Grasschnittstrahl\",\n\t\"everlasting-moonglow\": \"Ewiger Mondschein\",\n\t\"eye-of-perception\": \"Herzensblick\",\n\t\"fang-of-the-mountain-king\": \"Zahn des Bergkönigs\",\n\t\"favonius-codex\": \"Favonius-Kodex\",\n\t\"favonius-greatsword\": \"Favonius-Großschwert\",\n\t\"favonius-lance\": \"Favonius-Lanze\",\n\t\"favonius-sword\": \"Favonius-Schwert\",\n\t\"favonius-warbow\": \"Favonius-Jagdbogen\",\n\t\"ferrous-shadow\": \"Eiserner Schatten\",\n\t\"flower-wreathed-feathers\": \"Mit Blumen gebundene Federn\",\n\t\"fractured-halo\": \"Zerstreutes Licht\",\n\t\"freedom-sworn\": \"Blasser Schwur der Freiheit\",\n\t\"fruitful-hook\": \"Fruchtbarer Haken\",\n\t\"gest-of-the-mighty-wolf\": \"Kampflied des Wolfs\",\n\t\"golden-frostbound-oath\": \"Goldener Frostschwur\",\n\t\"haran-geppaku-futsu\": \"Haran Geppaku Futsu\",\n\t\"harbinger-of-dawn\": \"Schwert der Dämmerung\",\n\t\"hunter_s-path\": \"Pfad des Jägers\",\n\t\"jadefall-splendor\": \"Jadesturz-Pracht\",\n\t\"kagura_s-verity\": \"Kaguras Wahrheit\",\n\t\"key-of-khaj-nisut\": \"Khaj-Nisut-Schlüssel\",\n\t\"lightbearing-moonshard\": \"Lichtbringende Mondscherbe\",\n\t\"light-of-foliar-incision\": \"Licht der schneidenden Blätter\",\n\t\"lion_s-roar\": \"Drachenschrei\",\n\t\"lithic-blade\": \"Antikes Millelithenschwert\",\n\t\"lithic-spear\": \"Millelithenlanze\",\n\t\"lost-prayer-to-the-sacred-winds\": \"Gebete der Vier Winde\",\n\t\"lumidouce-elegy\": \"Lumidouce-Elegie\",\n\t\"magic-guide\": \"Magieführer\",\n\t\"makhaira-aquamarine\": \"Makhaira-Aquamarin\",\n\t\"memory-of-dust\": \"Ketten des Diesseits\",\n\t\"mistsplitter-reforged\": \"Widerschein des Nebelsplitters\",\n\t\"mitternachts-waltz\": \"Mitternachtswalzer\",\n\t\"moonweavers-dawn\": \"Dämmerlicht des Mondwebers\",\n\t\"mountain-bracing-bolt\": \"Bergschützer-Bolzen\",\n\t\"mouun_s-moon\": \"Mouun-Mond\",\n\t\"nightweavers-looking-glass\": \"Spiegel des Nachtwebers\",\n\t\"nocturnes-curtain-call\": \"Nachtmusik im Schleier\",\n\t\"peak-patrol-song\": \"Lied der Gipfelpatrouille\",\n\t\"polar-star\": \"Polarstern\",\n\t\"portable-power-saw\": \"Tragbare motorisierte Säge\",\n\t\"primordial-jade-cutter\": \"Moosgrüner Fels\",\n\t\"primordial-jade-winged-spear\": \"Urzeitlicher Jadespeer\",\n\t\"prospector-drill\": \"Erkundungsbohrer\",\n\t\"rainslasher\": \"Regenschnitter\",\n\t\"range-gauge\": \"Entfernungsmesser\",\n\t\"raven-bow\": \"Rabenbogen\",\n\t\"redhorn-stonethresher\": \"Rothorn-Steinbrecher\",\n\t\"reliquary-of-truth\": \"Kästchen der Wahrheit\",\n\t\"rust\": \"Rostiger Bogen\",\n\t\"sacrificial-bow\": \"Opferbogen\",\n\t\"sacrificial-fragments\": \"Opferrituale\",\n\t\"sacrificial-greatsword\": \"Opfergroßschwert\",\n\t\"sacrificial-sword\": \"Opferschwert\",\n\t\"sacrificers-staff\": \"Sacrificer's Staff\",\n\t\"sharpshooter_s-oath\": \"Eid des Scharfschützen\",\n\t\"silvershower-heartstrings\": \"Tröpfelnde Herzsaiten\",\n\t\"skyrider-sword\": \"Himmelsflug-Schwert\",\n\t\"skyward-atlas\": \"Himmelsatlas\",\n\t\"skyward-blade\": \"Himmelsklinge\",\n\t\"skyward-harp\": \"Himmelsflügel\",\n\t\"skyward-pride\": \"Stolz des Himmels\",\n\t\"skyward-spine\": \"Himmelsgrat\",\n\t\"slingshot\": \"Steinschleuder\",\n\t\"song-of-broken-pines\": \"Kiefernklang\",\n\t\"splendor-of-tranquil-waters\": \"Pracht des stillen Wasser\",\n\t\"staff-of-homa\": \"Homa-Stab\",\n\t\"staff-of-the-scarlet-sands\": \"Stab der roten Sande\",\n\t\"starcallers-watch\": \"Wacht des Sternenopfers\",\n\t\"sturdy-bone\": \"Robuster Knochen\",\n\t\"summit-shaper\": \"Gipfelbrecher\",\n\t\"sunny-morning-sleep-in\": \"Frühjahrsschlaf\",\n\t\"surfs-up\": \"Zeit fürs Wellenreiten\",\n\t\"symphonist-of-scents\": \"Sinfoniker der Düfte\",\n\t\"the-alley-flash\": \"Gassenleuchte\",\n\t\"the-bell\": \"Glocke\",\n\t\"the-daybreak-chronicles\": \"Chroniken der Morgendämmerung\",\n\t\"the-dockhands-assistant\": \"Werftklinge\",\n\t\"the-first-great-magic\": \"Erste große Magie\",\n\t\"the-flute\": \"Föte\",\n\t\"the-stringless\": \"Der Sehnenlose\",\n\t\"the-unforged\": \"Grobes Schwert\",\n\t\"the-widsith\": \"Landstreichernoten\",\n\t\"thrilling-tales-of-dragon-slayers\": \"Von den Heldentaten der Drachenbezwinger\",\n\t\"thundering-pulse\": \"Donnerpuls\",\n\t\"tome-of-the-eternal-flow\": \"Lehre des ewigen Flussses\",\n\t\"tulaytullah_s-remembrance\": \"Tulaytullahs Erinnerung\",\n\t\"uraku-misugiri\": \"Uraku Misugiri\",\n\t\"verdict\": \"Urteilsspruch\",\n\t\"vivid-notions\": \"Farbenfrohe Gedanken\",\n\t\"vortex-vanquisher\": \"Regenbogenstecher\",\n\t\"wavebreaker_s-fin\": \"Wellenbrecherflosse\",\n\t\"wandering-evenstar\": \"Wandernder Abendstern\",\n\t\"waveriding-whirl\": \"Wellenreitender Wirbel\",\n\t\"wine-and-song\": \"Wein und Gesang in den Gassen\",\n\t\"wolf_s-gravestone\": \"Wolfsgrab\",\n\t\"xiphos-moonlight\": \"Mondlicht von Xiphos\",\n\t\"aino\": {\n\t\t\"name\": \"Aino\",\n\t\t\"title\": \"Scheppernde Wundermaschinen\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"Albedo\",\n\t\t\"title\": \"Kreideprinz\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"Alhaitham\",\n\t\t\"title\": \"Vertreter mahnender Worte\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"Amber\",\n\t\t\"title\": \"Flugmeister\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"Arataki Itto\",\n\t\t\"title\": \"Held von Hanamizaka\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"Arlecchino\",\n\t\t\"title\": \"Unheil verkündender Mond\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"Baizhu\",\n\t\t\"title\": \"Jenseits der Sterblichkeit\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"Barbara\",\n\t\t\"title\": \"Leuchtender Star\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"Beidou\",\n\t\t\"title\": \"Ungekrönte Königin der Meere\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"Bennett\",\n\t\t\"title\": \"Prüfling des Schicksals\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"Candace\",\n\t\t\"title\": \"Gelübde beim treibenden Gold\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"Charlotte\",\n\t\t\"title\": \"Linse der Wahrheit\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"Chasca\",\n\t\t\"title\": \"Himmelsvermittlerin\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"Chevreuse\",\n\t\t\"title\": \"Vollstreckerin des Gesetzes\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"Chiori\",\n\t\t\"title\": \"Donnernde Schneiderin\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"Chongyun\",\n\t\t\"title\": \"Spuren im schmelzenden Schnee\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"Citlali\",\n\t\t\"title\": \"Sternenobsidian\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"Clorinde\",\n\t\t\"title\": \"Kerzenträgerin, Häscherin der Schatten\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"Collei\",\n\t\t\"title\": \"Taufrisches Keimblatt\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"Columbina\",\n\t\t\"title\": \"Heimkehr des leeren Mondes\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"Cyno\",\n\t\t\"title\": \"Richter über Geheimnisse\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"Dahlia\",\n\t\t\"title\": \"Ode und Oblation\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"Dehya\",\n\t\t\"title\": \"Feuermähne\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"Diluc\",\n\t\t\"title\": \"Dunkle Seite der Dämmerung\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"Diona\",\n\t\t\"title\": \"Putzige Mischung\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"Dori\",\n\t\t\"title\": \"Schatz im Schlummerland\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"Durin\",\n\t\t\"title\": \"„Unauslöschliches Feuer“\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"Emilie\",\n\t\t\"title\": \"Spur der tausend Düfte\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"Escoffier\",\n\t\t\"title\": \"Kulinarischer Glanz\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"Eula\",\n\t\t\"title\": \"Wirbeltanz der Gischt\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"Faruzan\",\n\t\t\"title\": \"Einfallsreiche Mechanismen\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"Fischl\",\n\t\t\"title\": \"Prinzessin der Verurteilung!\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"Flins\",\n\t\t\"title\": \"Schatten in trügerischem Licht\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"Freminet\",\n\t\t\"title\": \"Sehnsucht nach verborgenen Tiefen\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"Furina\",\n\t\t\"title\": \"Endloser Solotanz\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"Gaming\",\n\t\t\"title\": \"Fabellöwe im Vormarsch\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"Ganyu\",\n\t\t\"title\": \"Mondhüter\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"Gorou\",\n\t\t\"title\": \"Hundekrieger\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"Hu Tao\",\n\t\t\"title\": \"Pflaumenduft bei Tauwetter\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"Iansan\",\n\t\t\"title\": \"Von geschmolzenem Gestein gehärtet\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"Ifa\",\n\t\t\"title\": \"In den Spuren schweifender Winde\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"Illuga\",\n\t\t\"title\": \"Im Albtraum loderndes Herz\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"Ineffa\",\n\t\t\"title\": \"Krachend donnernde Welle\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"Jahoda\",\n\t\t\"title\": \"Den Wind zähmen, die Schatten bannen\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"Jean\",\n\t\t\"title\": \"Löwenzahnritter\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"Kachina\",\n\t\t\"title\": \"Gesprenkeltes Rohgold\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"Kaedehara Kazuha\",\n\t\t\"title\": \"Tiefrote Blätter jagen wilde Wellen\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"Kaeya\",\n\t\t\"title\": \"Eiskalter Schwertkämpfer\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"Kamisato Ayaka\",\n\t\t\"title\": \"Eisnebelreiher\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"Kamisato Ayato\",\n\t\t\"title\": \"Säule der Stärke\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"Kaveh\",\n\t\t\"title\": \"Empyreische Reflexion\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"Keqing\",\n\t\t\"title\": \"Donnerwetter\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"Kinich\",\n\t\t\"title\": \"Wendefeuerjagd\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"Kirara\",\n\t\t\"title\": \"Abenteuer über den Dächern\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"Klee\",\n\t\t\"title\": \"Fliehende Sonne\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"Kujou Sara\",\n\t\t\"title\": \"Krähenfeder-Kaburaya\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"Kuki Shinobu\",\n\t\t\"title\": \"Besänftigerin des Leids\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"Lan Yan\",\n\t\t\"title\": \"Aus Jade geflochtener Frühling\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"Lauma\",\n\t\t\"title\": \"Sakrallied des Ewigmonds\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"Layla\",\n\t\t\"title\": \"Verträumer Abendstern\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"Linnea\",\n\t\t\"title\": \"Gelehrsamkeit und Wunderreise\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"Lisa\",\n\t\t\"title\": \"Rosenhexe\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"Lynette\",\n\t\t\"title\": \"Eleganz im Schatten\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"Lyney\",\n\t\t\"title\": \"Das Spektakel von Fantasmagoria\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"Mavuika\",\n\t\t\"title\": \"Flamme der Nachterhellung\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"Mika\",\n\t\t\"title\": \"Koordinaten des klaren Frosts\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"Mona\",\n\t\t\"title\": \"Abbildung der Sterne im Wasser\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"Mualani\",\n\t\t\"title\": \"Plitsch-Platsch-Wellenjägerin\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"Nahida\",\n\t\t\"title\": \"Natürliche Reinheit\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"Navia\",\n\t\t\"title\": \"Leiterin der leuchtenden Rose\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"Nefer\",\n\t\t\"title\": \"Geheimnis unter den Sanden\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"Neuvillette\",\n\t\t\"title\": \"Fäller des unerbittlichen Urteils\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"Nilou\",\n\t\t\"title\": \"Lotoslicht auf der Tanzbühne\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"Ningguang\",\n\t\t\"title\": \"Verdeckter Mond\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"Noelle\",\n\t\t\"title\": \"Knospe des Rittertums\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"Ororon\",\n\t\t\"title\": \"Schatten des Nachtwinds\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"Qiqi\",\n\t\t\"title\": \"Eisige Nacht der Wiedergänger\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"Raiden Shogun\",\n\t\t\"title\": \"Utopische Gefilde\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"Razor\",\n\t\t\"title\": \"Wolfsjunge\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"Rosaria\",\n\t\t\"title\": \"Dornige Gnade\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"Sangonomiya Kokomi\",\n\t\t\"title\": \"Perle der Weisheit\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"Sayu\",\n\t\t\"title\": \"Mujina-Ninja\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"Sethos\",\n\t\t\"title\": \"Maß aller Weisheit\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"Shenhe\",\n\t\t\"title\": \"Einsame Abgeschiedenheit\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"Shikanoin Heizou\",\n\t\t\"title\": \"Mitfühlender Analytiker\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"Sigewinne\",\n\t\t\"title\": \"Wunderbare Drachenerbin\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"Skirk\",\n\t\t\"title\": \"Stern der Leere\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"Saccharose\",\n\t\t\"title\": \"Harmlos und süß\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"Tartaglia\",\n\t\t\"title\": \"\\\"Der Graf\\\"\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"Thoma\",\n\t\t\"title\": \"Beschützer aus der Ferne\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"Tighnari\",\n\t\t\"title\": \"Wanderer im Grünen\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"Varesa\",\n\t\t\"title\": \"Gelassene Stärke\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"Varka\",\n\t\t\"title\": \"Ritter des Nordwinds\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"Venti\",\n\t\t\"title\": \"Wandernder Barde\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"Wanderer\",\n\t\t\"title\": \"Bis in die Ewigkeit driften\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"Wriothesley\",\n\t\t\"title\": \"Gesandter der einsamen Sünde\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"Xiangling\",\n\t\t\"title\": \"Küchenfee des Volkes\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"Xianyun\",\n\t\t\"title\": \"Himmlische Ankündigung\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"Xiao\",\n\t\t\"title\": \"Schützender Yaksha\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"Xilonen\",\n\t\t\"title\": \"Im Feuer geschmiedete Seele\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"Xingqiu\",\n\t\t\"title\": \"Edelmütiger Jüngling\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"Xinyan\",\n\t\t\"title\": \"Glühend heiße Musik\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"Yae Miko\",\n\t\t\"title\": \"Verhöhnung der Sterblichen\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"Yanfei\",\n\t\t\"title\": \"Naive Weisheit\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"Yaoyao\",\n\t\t\"title\": \"Knospe der Adepten\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"Yelan\",\n\t\t\"title\": \"Orchidee im tiefen Tal\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"Yoimiya\",\n\t\t\"title\": \"Ausgelassene Flammen\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"Yumemizuki Mizuki\",\n\t\t\"title\": \"Umarmt von süßen Träumen\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"Yun Jin\",\n\t\t\"title\": \"Bühnenschönheit\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"Zhongli\",\n\t\t\"title\": \"Besucher bei den Sterblichen\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"Zibai\",\n\t\t\"title\": \"Weißes Pferd und die reine Quelle\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/en-US.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"A Thousand Blazing Suns\",\n\t\"a-thousand-floating-dreams\": \"A Thousand Floating Dreams\",\n\t\"absolution\": \"Absolution\",\n\t\"akuoumaru\": \"Akuoumaru\",\n\t\"alley-hunter\": \"Alley Hunter\",\n\t\"amos-bow\": \"Amos' Bow\",\n\t\"astral-vultures-crimson-plumage\": \"Astral Vulture's Crimson Plumage\",\n\t\"aqua-simulacra\": \"Aqua Simulacra\",\n\t\"aquila-favonia\": \"Aquila Favonia\",\n\t\"athame-artis\": \"Athame Artis\",\n\t\"azurelight\": \"Azurelight\",\n\t\"beacon-of-the-reed-sea\": \"Beacon of the Reed Sea\",\n\t\"black-tassel\": \"Black Tassel\",\n\t\"bloodsoaked-ruins\": \"Bloodsoaked Ruins\",\n\t\"bloodtained-greatsword\": \"Bloodtained Greatsword\",\n\t\"calamity-queller\": \"Calamity Queller\",\n\t\"cashflow-supervision\": \"Cashflow Supervision\",\n\t\"cool-steel\": \"Cool Steel\",\n\t\"cranes-echoing-call\": \"Crane's Echoing Call\",\n\t\"crimson_moon_s-semblance\": \"Crimson Moon's Semblance\",\n\t\"dawning-frost\": \"Dawning Frost\",\n\t\"debate-club\": \"Debate Club\",\n\t\"dragon_s-bane\": \"Dragon's Bane\",\n\t\"elegy-for-the-end\": \"Elegy for the End\",\n\t\"emerald-orb\": \"Emerald Orb\",\n\t\"engulfing-lightning\": \"Engulfing Lightning\",\n\t\"everlasting-moonglow\": \"Everlasting Moonglow\",\n\t\"eye-of-perception\": \"Eye of Perception\",\n\t\"fang-of-the-mountain-king\": \"Fang of The Mountain King\",\n\t\"favonius-codex\": \"Favonius Codex\",\n\t\"favonius-greatsword\": \"Favonius Greatsword\",\n\t\"favonius-lance\": \"Favonius Lance\",\n\t\"favonius-sword\": \"Favonius Sword\",\n\t\"favonius-warbow\": \"Favonius Warbow\",\n\t\"ferrous-shadow\": \"Ferrous Shadow\",\n\t\"flower-wreathed-feathers\": \"Flower-Wreathed Feathers\",\n\t\"fractured-halo\": \"Fractured Halo\",\n\t\"freedom-sworn\": \"Freedom-Sworn\",\n\t\"fruitful-hook\": \"Fruitful Hook\",\n\t\"gest-of-the-mighty-wolf\": \"Gest of the Mighty Wolf\",\n\t\"golden-frostbound-oath\": \"Golden Frostbound Oath\",\n\t\"haran-geppaku-futsu\": \"Haran Geppaku Futsu\",\n\t\"harbinger-of-dawn\": \"Harbinger of Dawn\",\n\t\"hunter_s-path\": \"Hunter's Path\",\n\t\"jadefall-splendor\": \"Jadefall's Splendor\",\n\t\"kagura_s-verity\": \"Kagura's Verity\",\n\t\"key-of-khaj-nisut\": \"Key of Khaj-Nisut\",\n\t\"lightbearing-moonshard\": \"Lightbearing Moonshard\",\n\t\"light-of-foliar-incision\": \"Light of Foliar Incision\",\n\t\"lion_s-roar\": \"Lion's Roar\",\n\t\"lithic-blade\": \"Lithic Blade\",\n\t\"lithic-spear\": \"Lithic Spear\",\n\t\"lost-prayer-to-the-sacred-winds\": \"Lost Prayer to the Sacred Winds\",\n\t\"lumidouce-elegy\": \"Lumidouce Elegy\",\n\t\"magic-guide\": \"Magic Guide\",\n\t\"makhaira-aquamarine\": \"Makhaira Aquamarine\",\n\t\"memory-of-dust\": \"Memory of Dust\",\n\t\"mistsplitter-reforged\": \"Mistsplitter Reforged\",\n\t\"mitternachts-waltz\": \"Mitternachts Waltz\",\n\t\"moonweavers-dawn\": \"Moonweaver's Dawn\",\n\t\"mountain-bracing-bolt\": \"Mountain-Bracing Bolt\",\n\t\"mouun_s-moon\": \"Mouun's Moon\",\n\t\"nightweavers-looking-glass\": \"Nightweaver's Looking Glass\",\n\t\"nocturnes-curtain-call\": \"Nocturne's Curtain Call\",\n\t\"peak-patrol-song\": \"Peak Patrol Song\",\n\t\"polar-star\": \"Polar Star\",\n\t\"portable-power-saw\": \"Portable Power Saw\",\n\t\"primordial-jade-cutter\": \"Primordial Jade Cutter\",\n\t\"primordial-jade-winged-spear\": \"Primordial Jade Winged-Spear\",\n\t\"prospector-drill\": \"Prospector's Drill\",\n\t\"rainslasher\": \"Rainslasher\",\n\t\"range-gauge\": \"Range Gauge\",\n\t\"raven-bow\": \"Raven Bow\",\n\t\"redhorn-stonethresher\": \"Redhorn Stonethresher\",\n\t\"reliquary-of-truth\": \"Reliquary of Truth\",\n\t\"rust\": \"Rust\",\n\t\"sacrificial-bow\": \"Sacrificial Bow\",\n\t\"sacrificial-fragments\": \"Sacrificial Fragments\",\n\t\"sacrificial-greatsword\": \"Sacrificial Greatsword\",\n\t\"sacrificial-sword\": \"Sacrificial Sword\",\n\t\"sacrificers-staff\": \"Sacrificer's Staff\",\n\t\"sharpshooter_s-oath\": \"Sharpshooter's Oath\",\n\t\"silvershower-heartstrings\": \"Silvershower Heartstrings\",\n\t\"skyrider-sword\": \"Skyrider Sword\",\n\t\"skyward-atlas\": \"Skyward Atlas\",\n\t\"skyward-blade\": \"Skyward Blade\",\n\t\"skyward-harp\": \"Skyward Harp\",\n\t\"skyward-pride\": \"Skyward Pride\",\n\t\"skyward-spine\": \"Skyward Spine\",\n\t\"slingshot\": \"Slingshot\",\n\t\"song-of-broken-pines\": \"Song of Broken Pines\",\n\t\"splendor-of-tranquil-waters\": \"Splendor of Tranquil Waters\",\n\t\"staff-of-homa\": \"Staff of Homa\",\n\t\"staff-of-the-scarlet-sands\": \"Staff of the Scarlet Sands\",\n\t\"starcallers-watch\": \"Starcaller's Watch\",\n\t\"sturdy-bone\": \"Sturdy Bone\",\n\t\"summit-shaper\": \"Summit Shaper\",\n\t\"sunny-morning-sleep-in\": \"Sunny Morning Sleep In\",\n\t\"surfs-up\": \"Surf's Up\",\n\t\"symphonist-of-scents\": \"Symphonist of Scents\",\n\t\"the-alley-flash\": \"The Alley Flash\",\n\t\"the-bell\": \"The Bell\",\n\t\"the-daybreak-chronicles\": \"The Daybreak Chronicles\",\n\t\"the-dockhands-assistant\": \"The Dockhand's Assistant\",\n\t\"the-first-great-magic\": \"The First Great Magic\",\n\t\"the-flute\": \"The Flute\",\n\t\"the-stringless\": \"The Stringless\",\n\t\"the-unforged\": \"The Unforged\",\n\t\"the-widsith\": \"The Widsith\",\n\t\"thrilling-tales-of-dragon-slayers\": \"Thrilling Tales of Dragon Slayers\",\n\t\"thundering-pulse\": \"Thundering Pulse\",\n\t\"tome-of-the-eternal-flow\": \"Tome of the Eternal Flow\",\n\t\"tulaytullah_s-remembrance\": \"Tulaytullah's Remembrance\",\n\t\"uraku-misugiri\": \"Uraku Misugiri\",\n\t\"verdict\": \"Verdict\",\n\t\"vivid-notions\": \"Vivid Notions\",\n\t\"vortex-vanquisher\": \"Vortex Vanquisher\",\n\t\"wavebreaker_s-fin\": \"Wavebreaker's Fin\",\n\t\"wandering-evenstar\": \"Wandering Evenstar\",\n\t\"waveriding-whirl\": \"Waveriding Whirl\",\n\t\"wine-and-song\": \"Wine and Song\",\n\t\"wolf_s-gravestone\": \"Wolf's Gravestone\",\n\t\"xiphos-moonlight\": \"Xiphos' Moonlight\",\n\t\"aino\": {\n\t\t\"name\": \"Aino\",\n\t\t\"title\": \"Clinky-Clank Gadgets-A-Gogo\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"Albedo\",\n\t\t\"title\": \"Kreideprinz\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"Alhaitham\",\n\t\t\"title\": \"Admonishing Instruction\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"Amber\",\n\t\t\"title\": \"Outrider Knights of Favonius\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"Arataki Itto\",\n\t\t\"title\": \"Hanamizaka Heroics\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"Arlecchino\",\n\t\t\"title\": \"Dire Balemoon\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"Baizhu\",\n\t\t\"title\": \"Beyond Mortality\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"Barbara\",\n\t\t\"title\": \"Knight of Favonius Deaconess\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"Beidou\",\n\t\t\"title\": \"Uncrowned Lord of Ocean\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"Bennett\",\n\t\t\"title\": \"Trial by Fire\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"Candace\",\n\t\t\"title\": \"Golden Vow\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"Charlotte\",\n\t\t\"title\": \"Lens of Verity\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"Chasca\",\n\t\t\"title\": \"Skyborne Arbiter\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"Chevreuse\",\n\t\t\"title\": \"Executor of Justice\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"Chongyun\",\n\t\t\"title\": \"Frozen Ardor\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"Citlali\",\n\t\t\"title\": \"Obsidian Opalstar\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"Clorinde\",\n\t\t\"title\": \"Candlebearer, Shadowhunter\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"Chiori\",\n\t\t\"title\": \"The Thundering Seamstress\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"Collei\",\n\t\t\"title\": \"Sprout of Rebirth\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"Columbina\",\n\t\t\"title\": \"Welkin Moon’s Homecoming\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"Cyno\",\n\t\t\"title\": \"Judicator of Secrets\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"Dahlia\",\n\t\t\"title\": \"Ode and Oblation\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"Dehya\",\n\t\t\"title\": \"Flame-Mane\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"Diluc\",\n\t\t\"title\": \"The Dark Side of Dawn\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"Diona\",\n\t\t\"title\": \"Kätzlein Cocktail\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"Dori\",\n\t\t\"title\": \"Treasure of Dream Garden\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"Durin\",\n\t\t\"title\": \"“The Undying Fire”\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"Emilie\",\n\t\t\"title\": \"A Thousand Scents Traced\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"Escoffier\",\n\t\t\"title\": \"Tasteful Excellence\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"Eula\",\n\t\t\"title\": \"The Sprindrift Knight\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"Faruzan\",\n\t\t\"title\": \"Enigmatic Machinist\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"Fischl\",\n\t\t\"title\": \"Prinzessin der Verurteilung!\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"Flins\",\n\t\t\"title\": \"Shadowy Lights, Stranger Wights\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"Freminet\",\n\t\t\"title\": \"Yearning for Unseen Depths\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"Furina\",\n\t\t\"title\": \"Endless Solo of Solitude\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"Gaming\",\n\t\t\"title\": \"Leonine Vanguard\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"Ganyu\",\n\t\t\"title\": \"Plenilune Gaze\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"Gorou\",\n\t\t\"title\": \"Canine Warrior\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"Hu Tao\",\n\t\t\"title\": \"Fragrance in Thaw\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"Iansan\",\n\t\t\"title\": \"Tempered in Molten Stone\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"Ifa\",\n\t\t\"title\": \"In the Wake of Wandering Winds\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"Illuga\",\n\t\t\"title\": \"Nightmare’s Burning Heart\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"Ineffa\",\n\t\t\"title\": \"Boom Boom Thunderwave\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"Jahoda\",\n\t\t\"title\": \"Windthreading Shadow\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"Jean\",\n\t\t\"title\": \"Dandelion Knight\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"Kachina\",\n\t\t\"title\": \"Mottled Gold Yet Unsmelted\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"Kaedehara Kazuha\",\n\t\t\"title\": \"Scarlet Leaves Pursue Wild Waves\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"Kaeya\",\n\t\t\"title\": \"Knight of Favonius Quarter Master\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"Kamisato Ayaka\",\n\t\t\"title\": \"Frostlake Heron\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"Kamisato Ayato\",\n\t\t\"title\": \"Pillar of Fortitude\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"Kaveh\",\n\t\t\"title\": \"Empyrean Reflection\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"Keqing\",\n\t\t\"title\": \"Driving Thunder\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"Kinich\",\n\t\t\"title\": \"Turnfire Hunt\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"Kirara\",\n\t\t\"title\": \"Cat Upon the Eaves\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"Klee\",\n\t\t\"title\": \"Fleeing Sunlight\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"Kujou Sara\",\n\t\t\"title\": \"Crowfeather Kaburaya\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"Kuki Shinobu\",\n\t\t\"title\": \"Mender of Tribulations\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"Lan Yan\",\n\t\t\"title\": \"Spring Woven From Jade\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"Lauma\",\n\t\t\"title\": \"Evermoon’s Sacrament Song\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"Layla\",\n\t\t\"title\": \"Fantastical Evening Star\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"Linnea\",\n\t\t\"title\": \"Augur of Wonders\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"Lisa\",\n\t\t\"title\": \"Knight of Favonius Librarian\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"Lynette\",\n\t\t\"title\": \"Elegance in the Shadows\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"Lyney\",\n\t\t\"title\": \"Spectacle of Phantasmagoria\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"Mavuika\",\n\t\t\"title\": \"Night-Igniting Flame\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"Mika\",\n\t\t\"title\": \"Coordinates of Clear Frost\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"Mona\",\n\t\t\"title\": \"Astral Reflection\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"Mualani\",\n\t\t\"title\": \"Splish-Splash Wavechaser\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"Nahida\",\n\t\t\"title\": \"Physic of Purity\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"Navia\",\n\t\t\"title\": \"Helm of the Radiant Rose\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"Nefer\",\n\t\t\"title\": \"Secret Beneath the Sands\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"Neuvillette\",\n\t\t\"title\": \"Ordainer of Inexorable Judgment\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"Nilou\",\n\t\t\"title\": \"Dance of Lotuslight\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"Ningguang\",\n\t\t\"title\": \"Eclipsing Star\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"Noelle\",\n\t\t\"title\": \"Chivalric Blossom\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"Ororon\",\n\t\t\"title\": \"Shadow of the Night-Wind\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"Qiqi\",\n\t\t\"title\": \"Icy Resurrection\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"Raiden Shogun\",\n\t\t\"title\": \"Plane of Euthymia\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"Razor\",\n\t\t\"title\": \"Wolf Boy\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"Rosaria\",\n\t\t\"title\": \"Thorny Benevolence\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"Sangonomiya Kokomi\",\n\t\t\"title\": \"Pearl of Wisdom\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"Sayu\",\n\t\t\"title\": \"Mujina Ninja\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"Sethos\",\n\t\t\"title\": \"Wisdom's Measure\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"Shenhe\",\n\t\t\"title\": \"Lonesome Transcendence\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"Shikanoin Heizou\",\n\t\t\"title\": \"Analytical Harmoni\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"Sigewinne\",\n\t\t\"title\": \"Wondrous Dragonheir\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"Skirk\",\n\t\t\"title\": \"Void Star\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"Sucrose\",\n\t\t\"title\": \"Harmless Sweetie\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"Tartaglia\",\n\t\t\"title\": \"Childe\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"Thoma\",\n\t\t\"title\": \"Protector From Afar\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"Tighnari\",\n\t\t\"title\": \"Verdant Strider\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"Varesa\",\n\t\t\"title\": \"Strength in Serenity\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"Varka\",\n\t\t\"title\": \"Knight of Boreas\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"Venti\",\n\t\t\"title\": \"Windborne Bard\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"Wanderer\",\n\t\t\"title\": \"Eons Adrift\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"Wriothesley\",\n\t\t\"title\": \"Emissary of Solitary Iniquity\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"Xiangling\",\n\t\t\"title\": \"Exquisite Delicacy\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"Xianyun\",\n\t\t\"title\": \"Passerine Herald\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"Xiao\",\n\t\t\"title\": \"Vigilant Yaksha\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"Xilonen\",\n\t\t\"title\": \"Ardent Flames Forge the Soul\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"Xingqiu\",\n\t\t\"title\": \"Juvenile Galant\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"Xinyan\",\n\t\t\"title\": \"Blazing Riff\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"Yae Miko\",\n\t\t\"title\": \"Astute Amusement\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"Yanfei\",\n\t\t\"title\": \"Wise Innocence\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"Yaoyao\",\n\t\t\"title\": \"Burgeoning Grace\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"Yelan\",\n\t\t\"title\": \"Valley Orchid\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"Yoimiya\",\n\t\t\"title\": \"Frolicking Flames\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"Yumemizuki Mizuki\",\n\t\t\"title\": \"Embrace of Enchanting Dreams\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"Yun Jin\",\n\t\t\"title\": \"Stage Lucida\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"Zhongli\",\n\t\t\"title\": \"Vago Mundo\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"Zibai\",\n\t\t\"title\": \"White Horse’s Fleeting Spring\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/it-IT.json",
    "content": "{\r\n\t\"a-thousand-blazing-suns\": \"Mille soli ardenti\",\r\n\t\"a-thousand-floating-dreams\": \"Mille sogni fluttuanti\",\r\n\t\"absolution\": \"Assoluzione\",\r\n\t\"akuoumaru\": \"Spada di Akuou\",\r\n\t\"alley-hunter\": \"Cacciatore urbano\",\r\n\t\"amos-bow\": \"Arco di Amos\",\r\n\t\"astral-vultures-crimson-plumage\": \"Piuma cremisi dell'avvoltoio astrale\",\r\n\t\"aqua-simulacra\": \"Aqua simulacra\",\r\n\t\"aquila-favonia\": \"Aquila Favonia\",\r\n\t\"athame-artis\": \"Athame Artis\",\r\n\t\"azurelight\": \"Luce azzurra\",\r\n\t\"beacon-of-the-reed-sea\": \"Faro del Mare dei Giunchi\",\r\n\t\"black-tassel\": \"Pennacchio nero\",\r\n\t\"bloodsoaked-ruins\": \"Rovine insanguinate\",\r\n\t\"bloodtained-greatsword\": \"Spadone insanguinato\",\r\n\t\"calamity-queller\": \"Flagello delle calamità\",\r\n\t\"cashflow-supervision\": \"Supervisione pecuniaria\",\r\n\t\"cool-steel\": \"Lama fredda\",\r\n\t\"cranes-echoing-call\": \"Canto della gru echeggiante\",\r\n\t\"crimson_moon_s-semblance\": \"Forma della Luna cremisi\",\r\n\t\"dawning-frost\": \"Brina mattutina\",\r\n\t\"debate-club\": \"Mazza della persuasione\",\r\n\t\"dragon_s-bane\": \"Scacciadraghi\",\r\n\t\"elegy-for-the-end\": \"Elegia finale\",\r\n\t\"emerald-orb\": \"Sfera smeraldina\",\r\n\t\"engulfing-lightning\": \"Fulmine fagocitante\",\r\n\t\"everlasting-moonglow\": \"Luna perenne\",\r\n\t\"eye-of-perception\": \"Occhio della percezione\",\r\n\t\"fang-of-the-mountain-king\": \"Zanna del Re della Montagna\",\r\n\t\"favonius-codex\": \"Codice di Favonius\",\r\n\t\"favonius-greatsword\": \"Spadone di Favonius\",\r\n\t\"favonius-lance\": \"Lancia di Favonius\",\r\n\t\"favonius-sword\": \"Spada di Favonius\",\r\n\t\"favonius-warbow\": \"Arco da guerra di Favonius\",\r\n\t\"ferrous-shadow\": \"Ombra di ferro\",\r\n\t\"flower-wreathed-feathers\": \"Piume coronate di fiori\",\r\n\t\"fractured-halo\": \"Aureola frammentata\",\r\n\t\"freedom-sworn\": \" Giuramento di libertà\",\r\n\t\"fruitful-hook\": \"Gancio fruttuoso\",\r\n\t\"gest-of-the-mighty-wolf\": \"Gesta del Lupo maestoso\",\r\n\t\"golden-frostbound-oath\": \"Promessa del gelo dorato\",\r\n\t\"haran-geppaku-futsu\": \"Haran Geppaku Futsu\",\r\n\t\"harbinger-of-dawn\": \"Messaggera dell'alba\",\r\n\t\"hunter_s-path\": \"Sentiero del cacciatore\",\r\n\t\"jadefall-splendor\": \"Splendore del Giadiluvio\",\r\n\t\"kagura_s-verity\": \"Verità della Kagura\",\r\n\t\"key-of-khaj-nisut\": \"Chiave del Khaj-Nisut\",\r\n\t\"lightbearing-moonshard\": \"Frammento lunare portaluce\",\r\n\t\"light-of-foliar-incision\": \"Lume del Taglio frondoso\",\r\n\t\"lion_s-roar\": \"Ruggito del leone\",\r\n\t\"lithic-blade\": \"Lama litica\",\r\n\t\"lithic-spear\": \"Lancia litica\",\r\n\t\"lost-prayer-to-the-sacred-winds\": \"Origine dei venti sacri\",\r\n\t\"lumidouce-elegy\": \"Elegia di Lumidouce\",\r\n\t\"magic-guide\": \"Manuale di magia\",\r\n\t\"makhaira-aquamarine\": \"Acquamarina di Makhaira\",\r\n\t\"memory-of-dust\": \"Memorie terrene\",\r\n\t\"mistsplitter-reforged\": \"Squarcianebbia riforgiata\",\r\n\t\"mitternachts-waltz\": \"Valzer notturno\",\r\n\t\"moonweavers-dawn\": \"Alba della Tessiluna\",\r\n\t\"mountain-bracing-bolt\": \"Chiodo reggimonti\",\r\n\t\"mouun_s-moon\": \"Luna di Mouun\",\r\n\t\"nightweavers-looking-glass\": \"Specchio dell’Intessinotte\",\r\n\t\"nocturnes-curtain-call\": \"Sipario del notturno\",\r\n\t\"peak-patrol-song\": \"Canzone della Pattuglia delle Sommità\",\r\n\t\"polar-star\": \"Stella polare\",\r\n\t\"portable-power-saw\": \"Sega elettrica portatile\",\r\n\t\"primordial-jade-cutter\": \"Spada di giada primordiale\",\r\n\t\"primordial-jade-winged-spear\": \"Lancia di giada primordiale\",\r\n\t\"prospector-drill\": \"Trivella mineraria\",\r\n\t\"rainslasher\": \"Fendiluvio\",\r\n\t\"range-gauge\": \"Indicatore distanziometrico\",\r\n\t\"raven-bow\": \"Arco corvino\",\r\n\t\"redhorn-stonethresher\": \"Spaccarocce Cornorosso\",\r\n\t\"reliquary-of-truth\": \"Reliquiario della verità\",\r\n\t\"rust\": \"Ossidazione meschina\",\r\n\t\"sacrificial-bow\": \"Arco sacrificale\",\r\n\t\"sacrificial-fragments\": \"Frammenti sacrificali\",\r\n\t\"sacrificial-greatsword\": \"Spadone sacrificale\",\r\n\t\"sacrificial-sword\": \"Spada sacrificale\",\r\n\t\"sacrificers-staff\": \"Sacrificer's Staff\",\r\n\t\"sharpshooter_s-oath\": \"Patto del cecchino\",\r\n\t\"silvershower-heartstrings\": \"Candido cuore della pioggia\",\r\n\t\"skyrider-sword\": \"Spadone del Cavalcacieli\",\r\n\t\"skyward-atlas\": \"Atlante celeste\",\r\n\t\"skyward-blade\": \"Lama celeste\",\r\n\t\"skyward-harp\": \"Arpa celeste\",\r\n\t\"skyward-pride\": \"Orgoglio celeste\",\r\n\t\"skyward-spine\": \"Lancia d'osso celeste\",\r\n\t\"slingshot\": \"Fionda\",\r\n\t\"song-of-broken-pines\": \"Canzone silvestre\",\r\n\t\"splendor-of-tranquil-waters\": \"Fulgore delle placide acque\",\r\n\t\"staff-of-homa\": \"Bastone di Homa\",\r\n\t\"staff-of-the-scarlet-sands\": \"Bastone delle sabbie scarlatte\",\r\n\t\"starcallers-watch\": \"Veglia del Chiamastelle\",\r\n\t\"sturdy-bone\": \"Osso tenace\",\r\n\t\"summit-shaper\": \"Affettavette\",\r\n\t\"sunny-morning-sleep-in\": \"Sonnellino mattutino\",\r\n\t\"surfs-up\": \"Vai col surf\",\r\n\t\"symphonist-of-scents\": \"Sinfonista di fragranze\",\r\n\t\"the-alley-flash\": \"Luce nei vicoli\",\r\n\t\"the-bell\": \"Spadone del tempo\",\r\n\t\"the-daybreak-chronicles\": \"Cronache dell'alba\",\r\n\t\"the-dockhands-assistant\": \"Aiutante del porto\",\r\n\t\"the-first-great-magic\": \"Prima grande magia\",\r\n\t\"the-flute\": \"Flauto\",\r\n\t\"the-stringless\": \"Monocorda\",\r\n\t\"the-unforged\": \"Spadone grezzo\",\r\n\t\"the-widsith\": \"Sinfonia errante\",\r\n\t\"thrilling-tales-of-dragon-slayers\": \"Epiche gesta degli Ammazzadraghi\",\r\n\t\"thundering-pulse\": \"Battito tonante\",\r\n\t\"tome-of-the-eternal-flow\": \"Tomo del flusso perenne\",\r\n\t\"tulaytullah_s-remembrance\": \"Rimembranza di Tulaytullah\",\r\n\t\"uraku-misugiri\": \"Uraku Misugiri\",\r\n\t\"verdict\": \"Verdetto\",\r\n\t\"vivid-notions\": \"Pensieri vivaci\",\r\n\t\"vortex-vanquisher\": \"Squarciavortice\",\r\n\t\"wavebreaker_s-fin\": \"Pinna del Frangionde\",\r\n\t\"wandering-evenstar\": \"Astro del vespro errante\",\r\n\t\"waveriding-whirl\": \"Vortice del Cavalcaonde\",\r\n\t\"wine-and-song\": \"Vino e musica\",\r\n\t\"wolf_s-gravestone\": \"Trapasso ululante\",\r\n\t\"xiphos-moonlight\": \"Chiarore di Xiphos\",\r\n\t\"aino\": {\r\n\t\t\"name\": \"Aino\",\r\n\t\t\"title\": \"Magico tintinnio\"\r\n\t},\r\n\t\"albedo\": {\r\n\t\t\"name\": \"Albedo\",\r\n\t\t\"title\": \"Kreideprinz\"\r\n\t},\r\n\t\"alhaitham\": {\r\n\t\t\"name\": \"Alhaitham\",\r\n\t\t\"title\": \"Insegnamento austero\"\r\n\t},\r\n\t\"amber\": {\r\n\t\t\"name\": \"Amber\",\r\n\t\t\"title\": \"Campionessa di volo a vela\"\r\n\t},\r\n\t\"arataki-itto\": {\r\n\t\t\"name\": \"Arataki Itto\",\r\n\t\t\"title\": \"Eroe di Hanamizaka\"\r\n\t},\r\n\t\"arlecchino\": {\r\n\t\t\"name\": \"Arlecchino\",\r\n\t\t\"title\": \"Mezzaluna di presagi nefasti\"\r\n\t},\r\n\t\"baizhu\": {\r\n\t\t\"name\": \"Baizhu\",\r\n\t\t\"title\": \"Mortalità trascesa\"\r\n\t},\r\n\t\"barbara\": {\r\n\t\t\"name\": \"Barbara\",\r\n\t\t\"title\": \"Idol sfavillante\"\r\n\t},\r\n\t\"beidou\": {\r\n\t\t\"name\": \"Beidou\",\r\n\t\t\"title\": \"Regina dei mari senza corona\"\r\n\t},\r\n\t\"bennett\": {\r\n\t\t\"name\": \"Bennett\",\r\n\t\t\"title\": \"Prova del fuoco\"\r\n\t},\r\n\t\"candace\": {\r\n\t\t\"name\": \"Candace\",\r\n\t\t\"title\": \"Voto dorato\"\r\n\t},\r\n\t\"charlotte\": {\r\n\t\t\"name\": \"Charlotte\",\r\n\t\t\"title\": \"Lente della verità\"\r\n\t},\r\n\t\"chasca\": {\r\n\t\t\"name\": \"Chasca\",\r\n\t\t\"title\": \"Mediatrice celeste\"\r\n\t},\r\n\t\"chevreuse\": {\r\n\t\t\"name\": \"Chevreuse\",\r\n\t\t\"title\": \"Braccio armato della legge\"\r\n\t},\r\n\t\"chiori\": {\r\n\t\t\"name\": \"Chiori\",\r\n\t\t\"title\": \"Sarta tonante\"\r\n\t},\r\n\t\"chongyun\": {\r\n\t\t\"name\": \"Chongyun\",\r\n\t\t\"title\": \"Ardore ghiacciato\"\r\n\t},\r\n\t\"citlali\": {\r\n\t\t\"name\": \"Citlali\",\r\n\t\t\"title\": \"Fulgistella d'ossidiana\"\r\n\t},\r\n\t\"clorinde\": {\r\n\t\t\"name\": \"Clorinde\",\r\n\t\t\"title\": \"Cacciatrice d'ombre\"\r\n\t},\r\n\t\"collei\": {\r\n\t\t\"name\": \"Collei\",\r\n\t\t\"title\": \"Germoglio di rinascita\"\r\n\t},\r\n\t\"columbina\": {\r\n\t\t\"name\": \"Colombina\",\r\n\t\t\"title\": \"Ritorno della Luna del firmamento\"\r\n\t},\r\n\t\"cyno\": {\r\n\t\t\"name\": \"Cyno\",\r\n\t\t\"title\": \"Giustiziere dei segreti\"\r\n\t},\r\n\t\"dahlia\": {\r\n\t\t\"name\": \"Dahlia\",\r\n\t\t\"title\": \"Ode e oblazione\"\r\n\t},\r\n\t\"dehya\": {\r\n\t\t\"name\": \"Dehya\",\r\n\t\t\"title\": \"Chiomardente\"\r\n\t},\r\n\t\"diluc\": {\r\n\t\t\"name\": \"Diluc\",\r\n\t\t\"title\": \"Lato oscuro dell'alba\"\r\n\t},\r\n\t\"diona\": {\r\n\t\t\"name\": \"Diona\",\r\n\t\t\"title\": \"Barista Kätzlein\"\r\n\t},\r\n\t\"dori\": {\r\n\t\t\"name\": \"Dori\",\r\n\t\t\"title\": \"Tesoro del giardino dei sogni\"\r\n\t},\r\n\t\"durin\": {\r\n\t\t\"name\": \"Durin\",\r\n\t\t\"title\": \"“Fiamma perpetua”\"\r\n\t},\r\n\t\"emilie\": {\r\n\t\t\"name\": \"Émilie\",\r\n\t\t\"title\": \"Scie di mille profumi\"\r\n\t},\r\n\t\"escoffier\": {\r\n\t\t\"name\": \"Escoffier\",\r\n\t\t\"title\": \"Eccellenza di sapori\"\r\n\t},\r\n\t\"eula\": {\r\n\t\t\"name\": \"Eula\",\r\n\t\t\"title\": \"Danza dell'onda luccicante\"\r\n\t},\r\n\t\"faruzan\": {\r\n\t\t\"name\": \"Faruzan\",\r\n\t\t\"title\": \"Enigmatica esperta di macchine\"\r\n\t},\r\n\t\"fischl\": {\r\n\t\t\"name\": \"Fischl\",\r\n\t\t\"title\": \"Prinzessin der Verurteilung!\"\r\n\t},\r\n\t\"flins\": {\r\n\t\t\"name\": \"Flins\",\r\n\t\t\"title\": \"Ombre di luci ingannevoli\"\r\n\t},\r\n\t\"freminet\": {\r\n\t\t\"name\": \"Freminet\",\r\n\t\t\"title\": \"Brama di profondità invisibili\"\r\n\t},\r\n\t\"furina\": {\r\n\t\t\"name\": \"Furina\",\r\n\t\t\"title\": \"Assolo solitario e sempiterno\"\r\n\t},\r\n\t\"gaming\": {\r\n\t\t\"name\": \"Gaming\",\r\n\t\t\"title\": \"Avanguardia leonina\"\r\n\t},\r\n\t\"ganyu\": {\r\n\t\t\"name\": \"Ganyu\",\r\n\t\t\"title\": \"Sguardo del plenilunio\"\r\n\t},\r\n\t\"gorou\": {\r\n\t\t\"name\": \"Gorou\",\r\n\t\t\"title\": \"Guerriero canino\"\r\n\t},\r\n\t\"hu-tao\": {\r\n\t\t\"name\": \"Hu Tao\",\r\n\t\t\"title\": \"Fragranza del disgelo\"\r\n\t},\r\n\t\"iansan\": {\r\n\t\t\"name\": \"Iansan\",\r\n\t\t\"title\": \"Temprata nella roccia lavica\"\r\n\t},\r\n\t\"ifa\": {\r\n\t\t\"name\": \"Ifa\",\r\n\t\t\"title\": \"In balia di venti erranti\"\r\n\t},\r\n\t\"illuga\": {\r\n\t\t\"name\": \"Illuga\",\r\n\t\t\"title\": \"Cuore ardente dell’incubo\"\r\n\t},\r\n\t\"ineffa\": {\r\n\t\t\"name\": \"Ineffa\",\r\n\t\t\"title\": \"Fulmine roboante\"\r\n\t},\r\n\t\"jahoda\": {\r\n\t\t\"name\": \"Jahoda\",\r\n\t\t\"title\": \"Ombra tessivento\"\r\n\t},\r\n\t\"jean\": {\r\n\t\t\"name\": \"Jean\",\r\n\t\t\"title\": \"Cavaliere del Dente di leone\"\r\n\t},\r\n\t\"kachina\": {\r\n\t\t\"name\": \"Kachina\",\r\n\t\t\"title\": \"Oro screziato allo stato grezzo\"\r\n\t},\r\n\t\"kaedehara-kazuha\": {\r\n\t\t\"name\": \"Kaedehara Kazuha\",\r\n\t\t\"title\": \"Vortice delle foglie scarlatte\"\r\n\t},\r\n\t\"kaeya\": {\r\n\t\t\"name\": \"Kaeya\",\r\n\t\t\"title\": \"Spadaccino della bufera\"\r\n\t},\r\n\t\"kamisato-ayaka\": {\r\n\t\t\"name\": \"Kamisato Ayaka\",\r\n\t\t\"title\": \"Airone dei ghiacci\"\r\n\t},\r\n\t\"kamisato-ayato\": {\r\n\t\t\"name\": \"Kamisato Ayato\",\r\n\t\t\"title\": \"Pilastro della forza d'animo\"\r\n\t},\r\n\t\"kaveh\": {\r\n\t\t\"name\": \"Kaveh\",\r\n\t\t\"title\": \"Riflesso empireo\"\r\n\t},\r\n\t\"keqing\": {\r\n\t\t\"name\": \"Keqing\",\r\n\t\t\"title\": \"Dominatrice del tuono\"\r\n\t},\r\n\t\"kinich\": {\r\n\t\t\"name\": \"Kinich\",\r\n\t\t\"title\": \"Cacciatore del Voltafuoco\"\r\n\t},\r\n\t\"kirara\": {\r\n\t\t\"name\": \"Kirara\",\r\n\t\t\"title\": \"Gatta sulle grondaie\"\r\n\t},\r\n\t\"klee\": {\r\n\t\t\"name\": \"Klee\",\r\n\t\t\"title\": \"Sole fugace\"\r\n\t},\r\n\t\"kujou-sara\": {\r\n\t\t\"name\": \"Kujou Sara\",\r\n\t\t\"title\": \"Kaburaya piumata\"\r\n\t},\r\n\t\"kuki-shinobu\": {\r\n\t\t\"name\": \"Kuki Shinobu\",\r\n\t\t\"title\": \"Risolutrice di ogni problema\"\r\n\t},\r\n\t\"lan-yan\": {\r\n\t\t\"name\": \"Lan Yan\",\r\n\t\t\"title\": \"Intreccio di giada primaverile\"\r\n\t},\r\n\t\"lauma\": {\r\n\t\t\"name\": \"Lauma\",\r\n\t\t\"title\": \"Ode alla Luna imperitura\"\r\n\t},\r\n\t\"layla\": {\r\n\t\t\"name\": \"Layla\",\r\n\t\t\"title\": \"Stella fantastica della sera\"\r\n\t},\r\n\t\"linnea\": {\r\n\t\t\"name\": \"Linnea\",\r\n\t\t\"title\": \"Premonitrice di meraviglie\"\r\n\t},\r\n\t\"lisa\": {\r\n\t\t\"name\": \"Lisa\",\r\n\t\t\"title\": \"Strega della Rosa purpurea\"\r\n\t},\r\n\t\"lynette\": {\r\n\t\t\"name\": \"Lynette\",\r\n\t\t\"title\": \"Eleganza nell'ombra\"\r\n\t},\r\n\t\"lyney\": {\r\n\t\t\"name\": \"Lyney\",\r\n\t\t\"title\": \"Spettacolo fantasmagorico\"\r\n\t},\r\n\t\"mavuika\": {\r\n\t\t\"name\": \"Mavuika\",\r\n\t\t\"title\": \"Fiamma che incendia la notte\"\r\n\t},\r\n\t\"mika\": {\r\n\t\t\"name\": \"Mika\",\r\n\t\t\"title\": \"Coordinate del gelo solare\"\r\n\t},\r\n\t\"mona\": {\r\n\t\t\"name\": \"Mona\",\r\n\t\t\"title\": \"Riflesso astrale\"\r\n\t},\r\n\t\"mualani\": {\r\n\t\t\"name\": \"Mualani\",\r\n\t\t\"title\": \"Cacciatrice di onde gorgoglianti\"\r\n\t},\r\n\t\"nahida\": {\r\n\t\t\"name\": \"Nahida\",\r\n\t\t\"title\": \"Fisica della purezza\"\r\n\t},\r\n\t\"navia\": {\r\n\t\t\"name\": \"Navia\",\r\n\t\t\"title\": \"Timoniere della rosa splendente\"\r\n\t},\r\n\t\"nefer\": {\r\n\t\t\"name\": \"Nefer\",\r\n\t\t\"title\": \"Segreto insabbiato\"\r\n\t},\r\n\t\"neuvillette\": {\r\n\t\t\"name\": \"Neuvillette\",\r\n\t\t\"title\": \"Sentenza ineluttabile\"\r\n\t},\r\n\t\"nilou\": {\r\n\t\t\"name\": \"Nilou\",\r\n\t\t\"title\": \"Danza della luce di loto\"\r\n\t},\r\n\t\"ningguang\": {\r\n\t\t\"name\": \"Ningguang\",\r\n\t\t\"title\": \"Stella dell'eclissi\"\r\n\t},\r\n\t\"noelle\": {\r\n\t\t\"name\": \"Noelle\",\r\n\t\t\"title\": \"Fiore cavalleresco\"\r\n\t},\r\n\t\"ororon\": {\r\n\t\t\"name\": \"Ororon\",\r\n\t\t\"title\": \"Ombra del Vento della Notte\"\r\n\t},\r\n\t\"qiqi\": {\r\n\t\t\"name\": \"Qiqi\",\r\n\t\t\"title\": \"Rinascita glaciale\"\r\n\t},\r\n\t\"raiden-shogun\": {\r\n\t\t\"name\": \"Shogun Raiden\",\r\n\t\t\"title\": \"Piano dell'eutimia\"\r\n\t},\r\n\t\"razor\": {\r\n\t\t\"name\": \"Razor\",\r\n\t\t\"title\": \"Ragazzo lupo\"\r\n\t},\r\n\t\"rosaria\": {\r\n\t\t\"name\": \"Rosaria\",\r\n\t\t\"title\": \"Benevolenza spinosa\"\r\n\t},\r\n\t\"sangonomiya-kokomi\": {\r\n\t\t\"name\": \"Sangonomiya Kokomi\",\r\n\t\t\"title\": \"Perla di saggezza\"\r\n\t},\r\n\t\"sayu\": {\r\n\t\t\"name\": \"Sayu\",\r\n\t\t\"title\": \"Ninja mujina\"\r\n\t},\r\n\t\"sethos\": {\r\n\t\t\"name\": \"Sethos\",\r\n\t\t\"title\": \"Misurazione del sapere\"\r\n\t},\r\n\t\"shenhe\": {\r\n\t\t\"name\": \"Shenhe\",\r\n\t\t\"title\": \"Trascendenza solitaria\"\r\n\t},\r\n\t\"shikanoin-heizou\": {\r\n\t\t\"name\": \"Shikanoin Heizou\",\r\n\t\t\"title\": \"Armonia analitica\"\r\n\t},\r\n\t\"sigewinne\": {\r\n\t\t\"name\": \"Sigewinne\",\r\n\t\t\"title\": \"Prodigiosa erede del drago\"\r\n\t},\r\n\t\"skirk\": {\r\n\t\t\"name\": \"Skirk\",\r\n\t\t\"title\": \"Astro del Vuoto\"\r\n\t},\r\n\t\"sucrose\": {\r\n\t\t\"name\": \"Sucrose\",\r\n\t\t\"title\": \"Dolcezza innocua\"\r\n\t},\r\n\t\"tartaglia\": {\r\n\t\t\"name\": \"Tartaglia\",\r\n\t\t\"title\": \"Principe\"\r\n\t},\r\n\t\"thoma\": {\r\n\t\t\"name\": \"Thoma\",\r\n\t\t\"title\": \"Protettore venuto da lontano\"\r\n\t},\r\n\t\"tighnari\": {\r\n\t\t\"name\": \"Tighnari\",\r\n\t\t\"title\": \"Vagabondo verdeggiante\"\r\n\t},\r\n\t\"varesa\": {\r\n\t\t\"name\": \"Varesa\",\r\n\t\t\"title\": \"Forza nella serenità\"\r\n\t},\r\n\t\"varka\": {\r\n\t\t\"name\": \"Varka\",\r\n\t\t\"title\": \"Cavaliere di Boreas\"\r\n\t},\r\n\t\"venti\": {\r\n\t\t\"name\": \"Venti\",\r\n\t\t\"title\": \"Bardo itinerante\"\r\n\t},\r\n\t\"wanderer\": {\r\n\t\t\"name\": \"Vagabondo\",\r\n\t\t\"title\": \"Eternamente perduto\"\r\n\t},\r\n\t\"wriothesley\": {\r\n\t\t\"name\": \"Wriothesley\",\r\n\t\t\"title\": \"Emissario di colpe silenti\"\r\n\t},\r\n\t\"xiangling\": {\r\n\t\t\"name\": \"Xiangling\",\r\n\t\t\"title\": \"Maestra culinaria di Liyue\"\r\n\t},\r\n\t\"xianyun\": {\r\n\t\t\"name\": \"Xianyun\",\r\n\t\t\"title\": \"Messaggera gruiforme\"\r\n\t},\r\n\t\"xiao\": {\r\n\t\t\"name\": \"Xiao\",\r\n\t\t\"title\": \"Custode Yaksha\"\r\n\t},\r\n\t\"xilonen\": {\r\n\t\t\"name\": \"Xilonen\",\r\n\t\t\"title\": \"Anima forgiata da fiamme ardenti\"\r\n\t},\r\n\t\"xingqiu\": {\r\n\t\t\"name\": \"Xingqiu\",\r\n\t\t\"title\": \"Giovane paladino\"\r\n\t},\r\n\t\"xinyan\": {\r\n\t\t\"name\": \"Xinyan\",\r\n\t\t\"title\": \"Melodia incandescente\"\r\n\t},\r\n\t\"yae-miko\": {\r\n\t\t\"name\": \"Yae Miko\",\r\n\t\t\"title\": \"Divertimento astuto\"\r\n\t},\r\n\t\"yanfei\": {\r\n\t\t\"name\": \"Yanfei\",\r\n\t\t\"title\": \"Saggia innocenza\"\r\n\t},\r\n\t\"yaoyao\": {\r\n\t\t\"name\": \"Yaoyao\",\r\n\t\t\"title\": \"Grazia germogliante\"\r\n\t},\r\n\t\"yelan\": {\r\n\t\t\"name\": \"Yelan\",\r\n\t\t\"title\": \"Orchidea della valle\"\r\n\t},\r\n\t\"yoimiya\": {\r\n\t\t\"name\": \"Yoimiya\",\r\n\t\t\"title\": \"Euforia di fuochi\"\r\n\t},\r\n\t\"yumemizuki-mizuki\": {\r\n\t\t\"name\": \"Yumemizuki Mizuki\",\r\n\t\t\"title\": \"Intreccio di sogni incantevoli\"\r\n\t},\r\n\t\"yun-jin\": {\r\n\t\t\"name\": \"Yun Jin\",\r\n\t\t\"title\": \"Stella del palcoscenico\"\r\n\t},\r\n\t\"zhongli\": {\r\n\t\t\"name\": \"Zhongli\",\r\n\t\t\"title\": \"Vago mundo\"\r\n\t},\r\n\t\"zibai\": {\r\n\t\t\"name\": \"Zibai\",\r\n\t\t\"title\": \"Sorgente fugace del cavallo bianco\"\r\n\t}\r\n}\r\n"
  },
  {
    "path": "src/locales/items/ja-JP.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"千烈の日輪\",\n\t\"a-thousand-floating-dreams\": \"千夜に浮かぶ夢\",\n\t\"absolution\": \"赦罪\",\n\t\"akuoumaru\": \"惡王丸\",\n\t\"alley-hunter\": \"ダークアレイの狩人\",\n\t\"amos-bow\": \"アモスの弓\",\n\t\"astral-vultures-crimson-plumage\": \"星鷲の紅き羽\",\n\t\"aqua-simulacra\": \"若水\",\n\t\"aquila-favonia\": \"風鷹剣\",\n\t\"athame-artis\": \"黒蝕\",\n\t\"azurelight\": \"蒼耀\",\n\t\"beacon-of-the-reed-sea\": \"葦海の標\",\n\t\"black-tassel\": \"黒纓槍\",\n\t\"bloodsoaked-ruins\": \"血染めの荒れ地\",\n\t\"bloodtained-greatsword\": \"龍血を浴びた剣\",\n\t\"calamity-queller\": \"息災\",\n\t\"cashflow-supervision\": \"凛流の監視者\",\n\t\"cool-steel\": \"冷刃\",\n\t\"cranes-echoing-call\": \"鶴鳴の余韻\",\n\t\"crimson_moon_s-semblance\": \"赤月のシルエット\",\n\t\"dawning-frost\": \"霜辰\",\n\t\"debate-club\": \"理屈責め\",\n\t\"dragon_s-bane\": \"匣中滅龍\",\n\t\"elegy-for-the-end\": \"終焉を嘆く詩\",\n\t\"emerald-orb\": \"翡玉法珠\",\n\t\"engulfing-lightning\": \"草薙の稲光\",\n\t\"everlasting-moonglow\": \"不滅の月華\",\n\t\"eye-of-perception\": \"昭心\",\n\t\"fang-of-the-mountain-king\": \"山の王の長牙\",\n\t\"favonius-codex\": \"西風秘典\",\n\t\"favonius-greatsword\": \"西風大剣\",\n\t\"favonius-lance\": \"西風長槍\",\n\t\"favonius-sword\": \"西風剣\",\n\t\"favonius-warbow\": \"西風猟弓\",\n\t\"ferrous-shadow\": \"鉄影段平\",\n\t\"flower-wreathed-feathers\": \"花飾りの羽\",\n\t\"fractured-halo\": \"砕け散る光輪\",\n\t\"freedom-sworn\": \"蒼古なる自由への誓い\",\n\t\"fruitful-hook\": \"フルートゥフル・フック\",\n\t\"gest-of-the-mighty-wolf\": \"狼の武勲詩\",\n\t\"golden-frostbound-oath\": \"霜契の金枝\",\n\t\"haran-geppaku-futsu\": \"波乱月白経津\",\n\t\"harbinger-of-dawn\": \"黎明の神剣\",\n\t\"hunter_s-path\": \"狩人の道\",\n\t\"jadefall-splendor\": \"碧落の瓏\",\n\t\"kagura_s-verity\": \"神楽の真意\",\n\t\"key-of-khaj-nisut\": \"聖顕の鍵\",\n\t\"lightbearing-moonshard\": \"三日月の含光\",\n\t\"lion_s-roar\": \"匣中龍吟\",\n\t\"light-of-foliar-incision\": \"萃光の裁葉\",\n\t\"lithic-blade\": \"千岩古剣\",\n\t\"lithic-spear\": \"千岩長槍\",\n\t\"lost-prayer-to-the-sacred-winds\": \"四風原典\",\n\t\"lumidouce-elegy\": \"ルミドゥースの挽歌\",\n\t\"magic-guide\": \"魔導緒論\",\n\t\"makhaira-aquamarine\": \"マカイラの水色\",\n\t\"memory-of-dust\": \"浮世の錠\",\n\t\"mistsplitter-reforged\": \"霧切の廻光\",\n\t\"mitternachts-waltz\": \"幽夜のワルツ\",\n\t\"moonweavers-dawn\": \"月紡ぎの曙光\",\n\t\"mountain-bracing-bolt\": \"鎮山の釘\",\n\t\"mouun_s-moon\": \"曚雲の月\",\n\t\"nightweavers-looking-glass\": \"夜を紡ぐ天鏡\",\n\t\"nocturnes-curtain-call\": \"帳の夜曲\",\n\t\"peak-patrol-song\": \"岩峰巡礼の歌\",\n\t\"polar-star\": \"冬極の白星\",\n\t\"portable-power-saw\": \"携帯型チェーンソー\",\n\t\"primordial-jade-cutter\": \"磐岩結緑\",\n\t\"primordial-jade-winged-spear\": \"和璞鳶\",\n\t\"prospector-drill\": \"プロスペクタードリル\",\n\t\"rainslasher\": \"雨裁\",\n\t\"range-gauge\": \"レンジゲージ\",\n\t\"raven-bow\": \"鴉羽の弓\",\n\t\"redhorn-stonethresher\": \"赤角石塵滅砕\",\n\t\"reliquary-of-truth\": \"真言の匣\",\n\t\"rust\": \"弓蔵\",\n\t\"sacrificial-bow\": \"祭礼の弓\",\n\t\"sacrificial-fragments\": \"祭礼の断片\",\n\t\"sacrificial-greatsword\": \"祭礼の大剣\",\n\t\"sacrificial-sword\": \"祭礼の剣\",\n\t\"sacrificers-staff\": \"聖祭者の輝杖\",\n\t\"sharpshooter_s-oath\": \"シャープシューターの誓い\",\n\t\"silvershower-heartstrings\": \"白雨心弦\",\n\t\"skyrider-sword\": \"飛天御剣\",\n\t\"skyward-atlas\": \"天空の巻\",\n\t\"skyward-blade\": \"天空の刃\",\n\t\"skyward-harp\": \"天空の翼\",\n\t\"skyward-pride\": \"天空の傲\",\n\t\"skyward-spine\": \"天空の脊\",\n\t\"slingshot\": \"弾弓\",\n\t\"song-of-broken-pines\": \"松韻の響く頃\",\n\t\"splendor-of-tranquil-waters\": \"静水流転の輝き\",\n\t\"staff-of-homa\": \"護摩の杖\",\n\t\"staff-of-the-scarlet-sands\": \"赤砂の杖\",\n\t\"starcallers-watch\": \"祭星者の眺め\",\n\t\"sturdy-bone\": \"ストロング・ボーン\",\n\t\"summit-shaper\": \"斬山の刃\",\n\t\"sunny-morning-sleep-in\": \"寝正月の初晴\",\n\t\"surfs-up\": \"サーフィンタイム\",\n\t\"symphonist-of-scents\": \"香りのシンフォニスト\",\n\t\"the-alley-flash\": \"ダークアレイの閃光\",\n\t\"the-bell\": \"鐘の剣\",\n\t\"the-daybreak-chronicles\": \"暁を告げる歴史\",\n\t\"the-dockhands-assistant\": \"船渠剣\",\n\t\"the-first-great-magic\": \"最初の大魔術\",\n\t\"the-flute\": \"笛の剣\",\n\t\"the-stringless\": \"絶弦\",\n\t\"the-unforged\": \"無工の剣\",\n\t\"the-widsith\": \"流浪楽章\",\n\t\"thrilling-tales-of-dragon-slayers\": \"龍殺しの英傑譚\",\n\t\"thundering-pulse\": \"飛雷の鳴弦\",\n\t\"tome-of-the-eternal-flow\": \"久遠流転の大典\",\n\t\"tulaytullah_s-remembrance\": \"トゥライトゥーラの記憶\",\n\t\"uraku-misugiri\": \"有楽御簾切\",\n\t\"verdict\": \"裁断\",\n\t\"vivid-notions\": \"ヴィヴィッド・ハート\",\n\t\"vortex-vanquisher\": \"破天の槍\",\n\t\"wavebreaker_s-fin\": \"斬波のひれ長\",\n\t\"waveriding-whirl\": \"波乗りの旋回\",\n\t\"wandering-evenstar\": \"彷徨える星\",\n\t\"wine-and-song\": \"ダークアレイの酒と詩\",\n\t\"wolf_s-gravestone\": \"狼の末路\",\n\t\"xiphos-moonlight\": \"サイフォスの月明かり\",\n\t\"aino\": {\n\t\t\"name\": \"アイノ\",\n\t\t\"title\": \"ドンドンワンダフルマシーン\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"アルベド\",\n\t\t\"title\": \"白亜の申し子\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"アルハイゼン\",\n\t\t\"title\": \"権謀教戒\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"アンバー\",\n\t\t\"title\": \"飛行チャンピオン\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"荒瀧一斗\",\n\t\t\"title\": \"花坂豪快\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"アルレッキーノ\",\n\t\t\"title\": \"暝天の凶月\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"白朮\",\n\t\t\"title\": \"遵生合和\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"バーバラ\",\n\t\t\"title\": \"キラキラアイドル\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"北斗\",\n\t\t\"title\": \"無冠の龍王\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"ベネット\",\n\t\t\"title\": \"運命の試金石\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"キャンディス\",\n\t\t\"title\": \"浮金の誓願\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"シャルロット\",\n\t\t\"title\": \"真実を求める曇りなきモノクル\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"チャスカ\",\n\t\t\"title\": \"巡空の裁翼\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"シュヴルーズ\",\n\t\t\"title\": \"厳罰を与える法の通暁者\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"千織\",\n\t\t\"title\": \"雷鳴の裁錦師\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"重雲\",\n\t\t\"title\": \"雪消の跡\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"シトラリ\",\n\t\t\"title\": \"白星黒曜\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"クロリンデ\",\n\t\t\"title\": \"燭火を携えた影の狩人\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"コレイ\",\n\t\t\"title\": \"純真を抱く萌蘖\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"コロンビーナ\",\n\t\t\"title\": \"空月の帰郷\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"セノ\",\n\t\t\"title\": \"緘秘の裁き\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"ダリア\",\n\t\t\"title\": \"礼賛の祝祭\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"ディシア\",\n\t\t\"title\": \"熾鬣の獅子\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"ディルック\",\n\t\t\"title\": \"アカツキワイナリーの貴公子\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"ディオナ\",\n\t\t\"title\": \"キャッツテールスペシャル\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"ドリー\",\n\t\t\"title\": \"夢の庭に隠せし財宝\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"ドゥリン\",\n\t\t\"title\": \"消えない炎\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"エミリエ\",\n\t\t\"title\": \"千の跡を辿って\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"エスコフィエ\",\n\t\t\"title\": \"絢爛のフレーバー\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"エウルア\",\n\t\t\"title\": \"波沫のワルツ\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"ファルザン\",\n\t\t\"title\": \"機求封秘\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"フィッシュル\",\n\t\t\"title\": \"断罪の皇女！！\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"フリンズ\",\n\t\t\"title\": \"闇影と灯り\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"フレミネ\",\n\t\t\"title\": \"夢想の海を沈んで\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"フリーナ\",\n\t\t\"title\": \"不休のソリスト\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"嘉明\",\n\t\t\"title\": \"頭角を現す駿猊\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"甘雨\",\n\t\t\"title\": \"循々守月\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"ゴロー\",\n\t\t\"title\": \"雄々しき戎犬\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"胡桃\",\n\t\t\"title\": \"雪晴梅香\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"イアンサ\",\n\t\t\"title\": \"百折不撓の熔岩\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"イファ\",\n\t\t\"title\": \"魂を導く疾風\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"イルーガ\",\n\t\t\"title\": \"闇夜の燃芯\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"イネファ\",\n\t\t\"title\": \"ブンブンサンダーウェーブ\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"ヤフォダ\",\n\t\t\"title\": \"風を繋ぎ、影を捕らえる\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"ジン\",\n\t\t\"title\": \"蒲公英騎士\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"カチーナ\",\n\t\t\"title\": \"金の混じる原鉱\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"楓原万葉\",\n\t\t\"title\": \"風波流浪の紅葉\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"ガイア\",\n\t\t\"title\": \"寒風の剣士\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"神里綾華\",\n\t\t\"title\": \"白鷺氷華\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"神里綾人\",\n\t\t\"title\": \"磐祭葉守\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"カーヴェ\",\n\t\t\"title\": \"天穹の鏡\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"刻晴\",\n\t\t\"title\": \"疾雷快雨\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"キィニチ\",\n\t\t\"title\": \"廻焔を継ぐ狩人\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"綺良々\",\n\t\t\"title\": \"檐宇遊猫\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"クレー\",\n\t\t\"title\": \"逃げ回る太陽\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"九条裟羅\",\n\t\t\"title\": \"黒羽鳴鏑\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"久岐忍\",\n\t\t\"title\": \"煩悩刈除\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"藍硯\",\n\t\t\"title\": \"春を編む翦玉\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"ラウマ\",\n\t\t\"title\": \"永月の祀り歌\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"レイラ\",\n\t\t\"title\": \"綺思と夜星\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"リンネア\",\n\t\t\"title\": \"博聞の旅路\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"リサ\",\n\t\t\"title\": \"薔薇の魔女\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"リネット\",\n\t\t\"title\": \"綺影で魅せるエレガンス\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"リネ\",\n\t\t\"title\": \"幻光で惑わすトリック\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"マーヴィカ\",\n\t\t\"title\": \"夜を焼き尽くす炎\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"ミカ\",\n\t\t\"title\": \"霜晴の測量\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"モナ\",\n\t\t\"title\": \"星天水鏡\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"ムアラニ\",\n\t\t\"title\": \"ざぶざぶウェーブチェイサー\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"ナヒーダ\",\n\t\t\"title\": \"白草浄華\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"ナヴィア\",\n\t\t\"title\": \"舵を這うラディアントローズ\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"ネフェル\",\n\t\t\"title\": \"砂に埋もれた秘話\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"ヌヴィレット\",\n\t\t\"title\": \"告諭の潮騒\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"ニィロウ\",\n\t\t\"title\": \"絨毯に舞い落ちる蓮光\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"凝光\",\n\t\t\"title\": \"月を覆う天権\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"ノエル\",\n\t\t\"title\": \"騎士道の花咲\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"オロルン\",\n\t\t\"title\": \"暗黒の謎煙\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"七七\",\n\t\t\"title\": \"冷たき黄泉帰り\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"雷電将軍\",\n\t\t\"title\": \"一心浄土\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"レザー\",\n\t\t\"title\": \"狼少年\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"ロサリア\",\n\t\t\"title\": \"荊冠の恩典\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"珊瑚宮心海\",\n\t\t\"title\": \"真珠の智\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"早柚\",\n\t\t\"title\": \"忍びの里の貉\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"セトス\",\n\t\t\"title\": \"知恵のはかり手\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"申鶴\",\n\t\t\"title\": \"孤辰悲哀\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"鹿野院平藏\",\n\t\t\"title\": \"乂安を願うもの\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"シグウィン\",\n\t\t\"title\": \"龍の愛娘\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"スカーク\",\n\t\t\"title\": \"虚淵の暗星\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"スクロース\",\n\t\t\"title\": \"無害の甘味\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"タルタリヤ\",\n\t\t\"title\": \"「公子」\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"トーマ\",\n\t\t\"title\": \"渡来介者\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"ティナリ\",\n\t\t\"title\": \"緑土逍遥\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"ヴァレサ\",\n\t\t\"title\": \"おっとりパワフル！\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"ファルカ\",\n\t\t\"title\": \"北風騎士\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"ウェンティ\",\n\t\t\"title\": \"風色の詩人\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"放浪者\",\n\t\t\"title\": \"久世浮傾\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"リオセスリ\",\n\t\t\"title\": \"寂罪の密使\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"香菱\",\n\t\t\"title\": \"万民百味\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"閑雲\",\n\t\t\"title\": \"仙鶴の告げる佳音\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"魈\",\n\t\t\"title\": \"護法夜叉\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"シロネン\",\n\t\t\"title\": \"魂を鋳る烈火\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"行秋\",\n\t\t\"title\": \"少壮気鋭\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"辛炎\",\n\t\t\"title\": \"爆熱リズム\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"八重神子\",\n\t\t\"title\": \"浮世笑百姿\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"煙緋\",\n\t\t\"title\": \"無邪気な知恵\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"ヨォーヨ\",\n\t\t\"title\": \"仙蕊玲瓏\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"夜蘭\",\n\t\t\"title\": \"幽谷に咲く蘭\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"宵宮\",\n\t\t\"title\": \"琉焔に舞う大輪\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"夢見月瑞希\",\n\t\t\"title\": \"睦み合う綺羅の夢\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"雲菫\",\n\t\t\"title\": \"紅絨毯に舞う麗姿\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"鍾離\",\n\t\t\"title\": \"浮世闊歩\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"兹白\",\n\t\t\"title\": \"隙を過ぐ仙駒、幽隠の泉\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/ko-KR.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"타오르는 천 개의 태양\",\n\t\"a-thousand-floating-dreams\": \"떠오르는 천일 밤의 꿈\",\n\t\"absolution\": \"사면\",\n\t\"akuoumaru\": \"아쿠오마루\",\n\t\"alley-hunter\": \"뒷골목 사냥꾼\",\n\t\"amos-bow\": \"아모스의 활\",\n\t\"astral-vultures-crimson-plumage\": \"붉은 깃 별독수리\",\n\t\"aqua-simulacra\": \"약수\",\n\t\"aquila-favonia\": \"매의 검\",\n\t\"athame-artis\": \"검은 침식\",\n\t\"azurelight\": \"창백한 섬광\",\n\t\"beacon-of-the-reed-sea\": \"갈대 바다의 등대\",\n\t\"black-tassel\": \"흑술창\",\n\t\"bloodsoaked-ruins\": \"피로 물든 성\",\n\t\"bloodtained-greatsword\": \"드래곤 블러드 소드\",\n\t\"calamity-queller\": \"식재\",\n\t\"cashflow-supervision\": \"현금 흐름 감독\",\n\t\"cool-steel\": \"차가운 칼날\",\n\t\"cranes-echoing-call\": \"학의 여음\",\n\t\"crimson_moon_s-semblance\": \"붉은 달의 형상\",\n\t\"dawning-frost\": \"서릿빛 새벽\",\n\t\"debate-club\": \"훌륭한 대화수단\",\n\t\"dragon_s-bane\": \"용학살창\",\n\t\"elegy-for-the-end\": \"종말 탄식의 노래\",\n\t\"emerald-orb\": \"비취 오브\",\n\t\"engulfing-lightning\": \"예초의 번개\",\n\t\"everlasting-moonglow\": \"불멸의 달빛\",\n\t\"eye-of-perception\": \"소심\",\n\t\"fang-of-the-mountain-king\": \"산왕의 엄니\",\n\t\"favonius-codex\": \"페보니우스 비전\",\n\t\"favonius-greatsword\": \"페보니우스 대검\",\n\t\"favonius-lance\": \"페보니우스 장창\",\n\t\"favonius-sword\": \"페보니우스 검\",\n\t\"favonius-warbow\": \"페보니우스 활\",\n\t\"ferrous-shadow\": \"강철의 그림자\",\n\t\"flower-wreathed-feathers\": \"꽃장식 깃\",\n\t\"freedom-sworn\": \"오래된 자유의 서약\",\n\t\"fractured-halo\": \"파멸의 빛고리\",\n\t\"fruitful-hook\": \"수확의 갈고리\",\n\t\"gest-of-the-mighty-wolf\": \"늑대의 무용담\",\n\t\"golden-frostbound-oath\": \"서리 맺힌 금빛 가지\",\n\t\"haran-geppaku-futsu\": \"하란 월백의 후츠\",\n\t\"harbinger-of-dawn\": \"여명신검\",\n\t\"hunter_s-path\": \"사냥꾼의 길\",\n\t\"jadefall-splendor\": \"벽락의 옥\",\n\t\"kagura_s-verity\": \"카구라의 진의\",\n\t\"key-of-khaj-nisut\": \"성현의 열쇠\",\n\t\"lightbearing-moonshard\": \"신월의 달빛\",\n\t\"light-of-foliar-incision\": \"잎을 가르는 빛\",\n\t\"lion_s-roar\": \"용의 포효\",\n\t\"lithic-blade\": \"천암고검\",\n\t\"lithic-spear\": \"천암장창\",\n\t\"lost-prayer-to-the-sacred-winds\": \"사풍 원서\",\n\t\"lumidouce-elegy\": \"등방울꽃의 애가\",\n\t\"magic-guide\": \"마도 서론\",\n\t\"makhaira-aquamarine\": \"물빛 마카이라\",\n\t\"memory-of-dust\": \"속세의 자물쇠\",\n\t\"mistsplitter-reforged\": \"안개를 가르는 회광\",\n\t\"mitternachts-waltz\": \"유야의 왈츠\",\n\t\"moonweavers-dawn\": \"달을 엮는 자의 새벽빛\",\n\t\"mountain-bracing-bolt\": \"산을 고정하는 못\",\n\t\"mouun_s-moon\": \"모운의 달\",\n\t\"nightweavers-looking-glass\": \"밤을 엮는 거울\",\n\t\"nocturnes-curtain-call\": \"막간의 야상곡\",\n\t\"peak-patrol-song\": \"바위산을 맴도는 노래\",\n\t\"polar-star\": \"극지의 별\",\n\t\"portable-power-saw\": \"휴대용 체인톱\",\n\t\"primordial-jade-cutter\": \"반암결록\",\n\t\"primordial-jade-winged-spear\": \"화박연\",\n\t\"prospector-drill\": \"탐사용 드릴\",\n\t\"rainslasher\": \"빗물 베기\",\n\t\"range-gauge\": \"거리 측정기\",\n\t\"raven-bow\": \"까마귀깃 활\",\n\t\"redhorn-stonethresher\": \"쇄석의 붉은 뿔\",\n\t\"reliquary-of-truth\": \"진실의 함\",\n\t\"rust\": \"녹슨 활\",\n\t\"sacrificial-bow\": \"제례활\",\n\t\"sacrificial-fragments\": \"제례의 악장\",\n\t\"sacrificial-greatsword\": \"제례 대검\",\n\t\"sacrificial-sword\": \"제례검\",\n\t\"sacrificers-staff\": \"신성한 제사의 지팡이\",\n\t\"sharpshooter_s-oath\": \"신궁의 서약\",\n\t\"silvershower-heartstrings\": \"심금을 울리는 하얀 비\",\n\t\"skyrider-sword\": \"비천어검\",\n\t\"skyward-atlas\": \"천공의 두루마리\",\n\t\"skyward-blade\": \"천공의 검\",\n\t\"skyward-harp\": \"천공의 날개\",\n\t\"skyward-pride\": \"천공의 긍지\",\n\t\"skyward-spine\": \"천공의 마루\",\n\t\"slingshot\": \"탄궁\",\n\t\"song-of-broken-pines\": \"송뢰가 울릴 무렵\",\n\t\"splendor-of-tranquil-waters\": \"고요히 샘솟는 빛\",\n\t\"staff-of-homa\": \"호마의 지팡이\",\n\t\"staff-of-the-scarlet-sands\": \"적색 사막의 지팡이\",\n\t\"starcallers-watch\": \"별지기의 시선\",\n\t\"sturdy-bone\": \"견고한 골검\",\n\t\"summit-shaper\": \"참봉의 칼날\",\n\t\"sunny-morning-sleep-in\": \"나른한 새해\",\n\t\"surfs-up\": \"서핑 타임\",\n\t\"symphonist-of-scents\": \"맛의 지휘자\",\n\t\"the-alley-flash\": \"뒷골목의 섬광\",\n\t\"the-bell\": \"시간의 검\",\n\t\"the-daybreak-chronicles\": \"여명이 트는 역사\",\n\t\"the-dockhands-assistant\": \"뱃도랑 장검\",\n\t\"the-first-great-magic\": \"최초의 대마술\",\n\t\"the-flute\": \"피리검\",\n\t\"the-stringless\": \"절현\",\n\t\"the-unforged\": \"무공의 검\",\n\t\"the-widsith\": \"음유시인의 악장\",\n\t\"thrilling-tales-of-dragon-slayers\": \"드래곤 슬레이어 영웅담\",\n\t\"thundering-pulse\": \"비뢰의 고동\",\n\t\"tome-of-the-eternal-flow\": \"영원히 샘솟는 법전\",\n\t\"tulaytullah_s-remembrance\": \"툴레이툴라의 기억\",\n\t\"uraku-misugiri\": \"우라쿠의 미스기리\",\n\t\"verdict\": \"판정\",\n\t\"vivid-notions\": \"빛나는 마음\",\n\t\"vortex-vanquisher\": \"관홍의 창\",\n\t\"wavebreaker_s-fin\": \"파도 베는 지느러미\",\n\t\"wandering-evenstar\": \"방황하는 저녁별\",\n\t\"waveriding-whirl\": \"돌아오는 파도\",\n\t\"wine-and-song\": \"뒷골목의 술과 시\",\n\t\"wolf_s-gravestone\": \"늑대의 말로\",\n\t\"xiphos-moonlight\": \"크시포스의 달빛\",\n\t\"aino\": {\n\t\t\"name\": \"아이노\",\n\t\t\"title\": \"쾅쾅 발명가\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"알베도\",\n\t\t\"title\": \"백악의 아이\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"알하이탐\",\n\t\t\"title\": \"충고와 직언\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"앰버\",\n\t\t\"title\": \"비행 챔피언\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"아를레키노\",\n\t\t\"title\": \"어둠 속 재액의 달\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"아라타키 이토\",\n\t\t\"title\": \"하나미자카 쾌걸\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"백출\",\n\t\t\"title\": \"양생의 도\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"바바라\",\n\t\t\"title\": \"빛나는 아이돌\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"북두\",\n\t\t\"title\": \"무관의 용왕\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"베넷\",\n\t\t\"title\": \"운명의 시금석\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"캔디스\",\n\t\t\"title\": \"수면 위 금빛 결의\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"샤를로트\",\n\t\t\"title\": \"진실을 쫓는 렌즈\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"차스카\",\n\t\t\"title\": \"하늘을 누비는 중재자\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"슈브르즈\",\n\t\t\"title\": \"엄정한 법의 집행자\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"중운\",\n\t\t\"title\": \"얼어붙은 열정\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"시틀라리\",\n\t\t\"title\": \"흰별을 품은 흑요석\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"클로린드\",\n\t\t\"title\": \"그림자를 밝히는 사냥꾼\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"치오리\",\n\t\t\"title\": \"뇌명의 재단사\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"콜레이\",\n\t\t\"title\": \"다시 움튼 새싹\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"콜롬비나\",\n\t\t\"title\": \"돌아온 공월\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"사이노\",\n\t\t\"title\": \"비밀 심판\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"달리아\",\n\t\t\"title\": \"찬송의 기도\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"데히야\",\n\t\t\"title\": \"화염 갈기의 사자\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"다이루크\",\n\t\t\"title\": \"새벽의 어둠\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"디오나\",\n\t\t\"title\": \"캐츠라인 칵테일\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"도리\",\n\t\t\"title\": \"꿈의 정원에 감춰진 보물\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"두린\",\n\t\t\"title\": \"「꺼지지 않는 불」\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"에밀리\",\n\t\t\"title\": \"천 갈래 향의 자취\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"에스코피에\",\n\t\t\"title\": \"화려한 맛의 화음\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"유라\",\n\t\t\"title\": \"물보라의 춤\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"파루잔\",\n\t\t\"title\": \"수수께기의 장치학자\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"피슬\",\n\t\t\"title\": \"단죄의 황녀!!\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"플린스\",\n\t\t\"title\": \"등불의 그림자\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"프레미네\",\n\t\t\"title\": \"심해에 잠긴 아득한 꿈\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"푸리나\",\n\t\t\"title\": \"멈추지 않는 독무\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"가명\",\n\t\t\"title\": \"고개를 치켜든 산예\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"감우\",\n\t\t\"title\": \"리월의 수호자\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"고로\",\n\t\t\"title\": \"견족의 전사\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"호두\",\n\t\t\"title\": \"눈 그친 뒤의 매화향\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"얀사\",\n\t\t\"title\": \"불굴의 용암\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"이파\",\n\t\t\"title\": \"생명을 잇는 바람\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"일루가\",\n\t\t\"title\": \"악몽을 불태우는 심지\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"이네파\",\n\t\t\"title\": \"쾅쾅 번개파\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"야호다\",\n\t\t\"title\": \"바람을 묶는 그림자\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"진\",\n\t\t\"title\": \"민들레 기사\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"카치나\",\n\t\t\"title\": \"순수한 금빛 원석\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"카에데하라 카즈하\",\n\t\t\"title\": \"파도를 쫓는 단풍\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"케이아\",\n\t\t\"title\": \"한풍의 검사\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"카미사토 아야카\",\n\t\t\"title\": \"눈꽃의 백로\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"카미사토 아야토\",\n\t\t\"title\": \"잎을 수호하는 반석\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"카베\",\n\t\t\"title\": \"천공의 거울\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"각청\",\n\t\t\"title\": \"질뢰쾌우\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"키니치\",\n\t\t\"title\": \"회고의 불 사냥꾼\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"키라라\",\n\t\t\"title\": \"지붕을 누비는 고양이\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"클레\",\n\t\t\"title\": \"도망치는 태양\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"쿠죠 사라\",\n\t\t\"title\": \"검은 깃의 효시\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"쿠키 시노부\",\n\t\t\"title\": \"번뇌의 제거자\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"남연\",\n\t\t\"title\": \"옥으로 엮은 봄\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"라우마\",\n\t\t\"title\": \"달에게 바치는 찬가\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"레일라\",\n\t\t\"title\": \"저녁별의 아름다운 사색\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"린네아\",\n\t\t\"title\": \"신비한 박물학자\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"리사\",\n\t\t\"title\": \"장미 마녀\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"리넷\",\n\t\t\"title\": \"그림자 속 우아한 걸음\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"리니\",\n\t\t\"title\": \"현란한 빛의 마술쇼\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"마비카\",\n\t\t\"title\": \"밤을 사르는 불꽃\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"미카\",\n\t\t\"title\": \"맑은 서리의 좌표\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"모나\",\n\t\t\"title\": \"별하늘의 물거울\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"말라니\",\n\t\t\"title\": \"첨벙첨벙 파도잡이\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"나히다\",\n\t\t\"title\": \"정화의 하얀 풀\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"나비아\",\n\t\t\"title\": \"빛나는 장미의 타륜\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"네페르\",\n\t\t\"title\": \"모래의 비밀\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"느비예트\",\n\t\t\"title\": \"훈시의 파도 소리\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"닐루\",\n\t\t\"title\": \"무대에 내려앉은 연꽃\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"응광\",\n\t\t\"title\": \"엄월천권\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"노엘\",\n\t\t\"title\": \"수여받지 못한 꽃\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"올로룬\",\n\t\t\"title\": \"깊은 어둠의 연기\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"치치\",\n\t\t\"title\": \"차가운 환혼의 밤\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"라이덴 쇼군\",\n\t\t\"title\": \"일심정토\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"레이저\",\n\t\t\"title\": \"늑대소년\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"로사리아\",\n\t\t\"title\": \"가시관의 은혜\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"산고노미야 코코미\",\n\t\t\"title\": \"진주의 지혜\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"사유\",\n\t\t\"title\": \"닌자 너구리\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"세토스\",\n\t\t\"title\": \"지혜의 척도\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"신학\",\n\t\t\"title\": \"고독한 액신\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"시카노인 헤이조\",\n\t\t\"title\": \"태평을 향한 마음\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"시그윈\",\n\t\t\"title\": \"용의 딸의 화려한 변신\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"스커크\",\n\t\t\"title\": \"허계의 별\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"설탕\",\n\t\t\"title\": \"무해한 달콤함\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"타르탈리아\",\n\t\t\"title\": \"귀공자\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"토마\",\n\t\t\"title\": \"바다 건너온 수호자\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"타이나리\",\n\t\t\"title\": \"신록의 발걸음\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"바레사\",\n\t\t\"title\": \"부드러운 괴력\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"바르카\",\n\t\t\"title\": \"북풍 기사\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"벤티\",\n\t\t\"title\": \"바람의 시인\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"방랑자\",\n\t\t\"title\": \"기나긴 방황\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"라이오슬리\",\n\t\t\"title\": \"고요한 죄의 밀사\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"향릉\",\n\t\t\"title\": \"만민백미\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"한운\",\n\t\t\"title\": \"소식을 전하는 선학\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"소\",\n\t\t\"title\": \"호법야차\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"실로닌\",\n\t\t\"title\": \"영혼을 벼리는 불꽃\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"행추\",\n\t\t\"title\": \"의기충천\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"신염\",\n\t\t\"title\": \"폭열 멜로디\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"야에 미코\",\n\t\t\"title\": \"속세를 비웃는 백 가지 자태\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"연비\",\n\t\t\"title\": \"순수한 지혜\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"요요\",\n\t\t\"title\": \"영롱한 선인의 꽃망울\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"야란\",\n\t\t\"title\": \"유곡에 피어난 난초\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"요이미야\",\n\t\t\"title\": \"유염화무\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"유메미즈키 미즈키\",\n\t\t\"title\": \"아름답게 얽힌 꿈\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"운근\",\n\t\t\"title\": \"무대를 빛내는 가인\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"종려\",\n\t\t\"title\": \"속세 한유\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"자백\",\n\t\t\"title\": \"샘물에 숨은 세월\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/pt-BR.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"Mil Sóis Ardentes\",\n\t\"a-thousand-floating-dreams\": \"Sonhos Flutuantes das Mil Noites\",\n\t\"absolution\": \"Absolvição\",\n\t\"akuoumaru\": \"Akuoumaru\",\n\t\"alley-hunter\": \"Caçador do Beco\",\n\t\"amos-bow\": \"Arco de Amos\",\n\t\"astral-vultures-crimson-plumage\": \"Plumagem Escarlate do Abutre Astral\",\n\t\"aqua-simulacra\": \"Aqua Simulacra\",\n\t\"aquila-favonia\": \"Falcão\",\n\t\"athame-artis\": \"Corrupção Sombria\",\n\t\"azurelight\": \"Azul Brilhante\",\n\t\"beacon-of-the-reed-sea\": \"Sinal dos Mares\",\n\t\"black-tassel\": \"Borla Preta\",\n\t\"bloodsoaked-ruins\": \"Ruínas Ensanguentadas\",\n\t\"bloodtained-greatsword\": \"Espadão Sangrento\",\n\t\"calamity-queller\": \"Subjugadora de Calamidades\",\n\t\"cashflow-supervision\": \"Supervisão de Caixa\",\n\t\"cool-steel\": \"Lâmina Fria\",\n\t\"cranes-echoing-call\": \"Chamado Ecoante da Garça\",\n\t\"crimson_moon_s-semblance\": \"Semblante da Lua Carmesim\",\n\t\"dawning-frost\": \"Estrela Gelada\",\n\t\"debate-club\": \"Pacifista\",\n\t\"dragon_s-bane\": \"Perdição do Dragão\",\n\t\"elegy-for-the-end\": \"Elegia do Suspiro Final\",\n\t\"emerald-orb\": \"Orbe Esmeralda\",\n\t\"engulfing-lightning\": \"Luz do Cortador de Grama\",\n\t\"everlasting-moonglow\": \"Fumetsu Gekka\",\n\t\"eye-of-perception\": \"Olho da Percepção\",\n\t\"fang-of-the-mountain-king\": \"Presa do Rei da Montanhag\",\n\t\"favonius-codex\": \"Codex de Favonius\",\n\t\"favonius-greatsword\": \"Espadão de Favonius\",\n\t\"favonius-lance\": \"Lança de Favonius\",\n\t\"favonius-sword\": \"Espada de Favonius\",\n\t\"favonius-warbow\": \"Arco de Favonius\",\n\t\"ferrous-shadow\": \"Espadão de Ferro Branco\",\n\t\"flower-wreathed-feathers\": \"Penas Cercadas de Flores\",\n\t\"fractured-halo\": \"Resplendor Fragmentado\",\n\t\"freedom-sworn\": \"Juramento pela Liberdade\",\n\t\"fruitful-hook\": \"Gancho Frutífero\",\n\t\"gest-of-the-mighty-wolf\": \"Balada do Poderoso Lobo\",\n\t\"golden-frostbound-oath\": \"Ramo Dourado do Juramento Gelado\",\n\t\"haran-geppaku-futsu\": \"Maremoto da Lua de Futsu\",\n\t\"harbinger-of-dawn\": \"Prenúncio do Alvorecer\",\n\t\"hunter_s-path\": \"Caminho do Caçador\",\n\t\"jadefall-splendor\": \"Esplendor Índigo\",\n\t\"kagura_s-verity\": \"Prova de Kagura\",\n\t\"key-of-khaj-nisut\": \"Chave de Hierofania\",\n\t\"lightbearing-moonshard\": \"Fragmento Lunar da Luz\",\n\t\"light-of-foliar-incision\": \"Luz das Folhas Cortadas\",\n\t\"lion_s-roar\": \"Rugido do Leão\",\n\t\"lithic-blade\": \"Espada Antiga de Millelith\",\n\t\"lithic-spear\": \"Lança de Millelith\",\n\t\"lost-prayer-to-the-sacred-winds\": \"Oração Perdida aos Ventos Sagrados\",\n\t\"lumidouce-elegy\": \"Elegia Lumidouce\",\n\t\"magic-guide\": \"Guia de Magia\",\n\t\"makhaira-aquamarine\": \"Água-Marinha de Mahara\",\n\t\"memory-of-dust\": \"Memória da Poeira\",\n\t\"mistsplitter-reforged\": \"Cortadora da Neblina Reforjada\",\n\t\"mitternachts-waltz\": \"Valsa do Crepúsculo\",\n\t\"moonweavers-dawn\": \"Alvorada do Tecedor do Luar\",\n\t\"mountain-bracing-bolt\": \"Prego Esmagador de Montanhas\",\n\t\"mouun_s-moon\": \"Lua de Mouun\",\n\t\"nightweavers-looking-glass\": \"Luneta do Tecedor da Noite\",\n\t\"nocturnes-curtain-call\": \"Cortinas Noturnas\",\n\t\"peak-patrol-song\": \"Canção da Patrulha do Pico\",\n\t\"polar-star\": \"Polar Star\",\n\t\"portable-power-saw\": \"Serra Elétrica Portátil\",\n\t\"primordial-jade-cutter\": \"Cortador de Jade Primordial\",\n\t\"primordial-jade-winged-spear\": \"Lança de Jade Primitiva\",\n\t\"prospector-drill\": \"Broca do Prospector\",\n\t\"rainslasher\": \"Segadeira da Chuva\",\n\t\"range-gauge\": \"Medidor de Alcance\",\n\t\"raven-bow\": \"Arco de Corvo\",\n\t\"redhorn-stonethresher\": \"Chifres Vermelhos Destruidores de Pedras\",\n\t\"reliquary-of-truth\": \"Relicário da Verdade\",\n\t\"rust\": \"Enferrujado\",\n\t\"sacrificial-bow\": \"Arco do Sacrifício\",\n\t\"sacrificial-fragments\": \"Memórias de Sacrifício\",\n\t\"sacrificial-greatsword\": \"Espadão do Sacrifício\",\n\t\"sacrificial-sword\": \"Espada do Sacrifício\",\n\t\"sacrificers-staff\": \"Cajado do Sacrificador\",\n\t\"sharpshooter_s-oath\": \"Juramento de Sagitário\",\n\t\"silvershower-heartstrings\": \"Cordas da Chuva Branca\",\n\t\"skyrider-sword\": \"Espadão do Cavaleiro do Céu\",\n\t\"skyward-atlas\": \"Atlas Celestial\",\n\t\"skyward-blade\": \"Espada Celestial\",\n\t\"skyward-harp\": \"Harpa Celestial\",\n\t\"skyward-pride\": \"Orgulho Celestial\",\n\t\"skyward-spine\": \"Espinha Celestial\",\n\t\"slingshot\": \"Estilingue\",\n\t\"song-of-broken-pines\": \"Canção dos Pinhos\",\n\t\"splendor-of-tranquil-waters\": \"Esplendor das Águas Silenciosas\",\n\t\"staff-of-homa\": \"Báculo de Homa\",\n\t\"staff-of-the-scarlet-sands\": \"Báculo das Areias Escarlates\",\n\t\"starcallers-watch\": \"Observatório do Chamador de Estrelas\",\n\t\"sturdy-bone\": \"Osso Robusto\",\n\t\"summit-shaper\": \"Cortador de Montanhas\",\n\t\"sunny-morning-sleep-in\": \"Hibernação Matinal do Ano Novo\",\n\t\"surfs-up\": \"Hora do Surfe\",\n\t\"symphonist-of-scents\": \"Sinfonista de Aromas\",\n\t\"the-alley-flash\": \"Brilho do Beco\",\n\t\"the-bell\": \"O Sino\",\n\t\"the-daybreak-chronicles\": \"As Crônicas do Amanhecer\",\n\t\"the-dockhands-assistant\": \"A Doca\",\n\t\"the-first-great-magic\": \"Arcana Original\",\n\t\"the-flute\": \"The Flute\",\n\t\"the-stringless\": \"Último Acorde\",\n\t\"the-unforged\": \"Espada Áspera\",\n\t\"the-widsith\": \"Sinfonia dos Indolentes\",\n\t\"thrilling-tales-of-dragon-slayers\": \"Histórias Extraordinárias de Caçadores de Dragões\",\n\t\"thundering-pulse\": \"Agitação Trovejante\",\n\t\"tome-of-the-eternal-flow\": \"Rito do Fluxo Eterno\",\n\t\"tulaytullah_s-remembrance\": \"Reminiscências de Tulaytullah\",\n\t\"uraku-misugiri\": \"Urakugo Rensai\",\n\t\"verdict\": \"Veredito\",\n\t\"vivid-notions\": \"Coração Resplandecente\",\n\t\"vortex-vanquisher\": \"Perfuradora Prismática\",\n\t\"wavebreaker_s-fin\": \"Barbatana do Quebra Ondas\",\n\t\"wandering-evenstar\": \"Estrela Itinerante\",\n\t\"waveriding-whirl\": \"Redemoinho das Ondas\",\n\t\"wine-and-song\": \"Vinho e Música\",\n\t\"wolf_s-gravestone\": \"Túmulo do Lobo\",\n\t\"xiphos-moonlight\": \"Luz Lunar de Xiphos\",\n\t\"aino\": {\n\t\t\"name\": \"Aino\",\n\t\t\"title\": \"Máquinas Milagrosas Trim-Trim-Bum\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"Albedo\",\n\t\t\"title\": \"Príncipe do Giz\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"Alhaitham\",\n\t\t\"title\": \"Reprimenda Instrutiva\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"Amber\",\n\t\t\"title\": \"Aventureira\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"Arataki Itto\",\n\t\t\"title\": \"Heroísmo de Hanamizaka\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"Arlecchino\",\n\t\t\"title\": \"Lua Solitária da Escuridão\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"Baizhu\",\n\t\t\"title\": \"Além da Mortalidade\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"Barbara\",\n\t\t\"title\": \"Ídolo Radiante\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"Beidou\",\n\t\t\"title\": \"Rainha do Mar Sem Coroa\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"Bennett\",\n\t\t\"title\": \"Julgamento por Fogo\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"Candace\",\n\t\t\"title\": \"Promessa Dourada\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"Charlotte\",\n\t\t\"title\": \"Lentes em Busca da Verdade\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"Chasca\",\n\t\t\"title\": \"Exploradora Celestial\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"Chevreuse\",\n\t\t\"title\": \"Executora da Justiça\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"Chiori\",\n\t\t\"title\": \"Costureira Trovejante\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"Chongyun\",\n\t\t\"title\": \"Pegadas na Neve\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"Citlali\",\n\t\t\"title\": \"Estrela Branca e Obsidiana\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"Clorinde\",\n\t\t\"title\": \"Segurando a Vela, Espreitando as Sombras\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"Collei\",\n\t\t\"title\": \"Broto de Renascimento\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"Columbina\",\n\t\t\"title\": \"Retorno da Lua Nova\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"Cyno\",\n\t\t\"title\": \"Juiz dos Segredos\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"Dahlia\",\n\t\t\"title\": \"Ode and Oblation\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"Dehya\",\n\t\t\"title\": \"Leoa Flamejante\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"Diluc\",\n\t\t\"title\": \"Herdeiro do Adega do Alvorecer\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"Diona\",\n\t\t\"title\": \"Coquetel da Cauda do Gato\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"Dori\",\n\t\t\"title\": \"Tesouro do Jardim dos Sonhos\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"Durin\",\n\t\t\"title\": \"“As Chamas Eternas”\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"Emilie\",\n\t\t\"title\": \"Vislumbres de Mil Aromas\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"Escoffier\",\n\t\t\"title\": \"Brilho de Mil Melodias\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"Eula\",\n\t\t\"title\": \"Dança da Onda Quebradora\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"Faruzan\",\n\t\t\"title\": \"Maquinista Enigmática\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"Fischl\",\n\t\t\"title\": \"Contemplações da Estrela Noturna\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"Flins\",\n\t\t\"title\": \"Sombra da Luz Ominosa\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"Freminet\",\n\t\t\"title\": \"Ansioso por Sonhos Profundos\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"Furina\",\n\t\t\"title\": \"Dançarina Solitária Eterna\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"Gaming\",\n\t\t\"title\": \"Olhar Leonino\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"Ganyu\",\n\t\t\"title\": \"Defensora Devota\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"Gorou\",\n\t\t\"title\": \"Guerreiro Canino\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"Hu Tao\",\n\t\t\"title\": \"Fragrância de Ameixa Descongelada\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"Iansan\",\n\t\t\"title\": \"Forjada na Pedra Ardente\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"Ifa\",\n\t\t\"title\": \"Brisa Espiritual\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"Illuga\",\n\t\t\"title\": \"Coração em Chamas do Pesadelo\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"Ineffa\",\n\t\t\"title\": \"Estrondo Trovejante\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"Jahoda\",\n\t\t\"title\": \"Sombras da Ventania\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"Jean\",\n\t\t\"title\": \"Cavaleira de Dandelion\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"Kachina\",\n\t\t\"title\": \"Minério de Ouro Não Fundido\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"Kaedehara Kazuha\",\n\t\t\"title\": \"Samurai Errante que se Separa da sua Terra\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"Kaeya\",\n\t\t\"title\": \"Capitão de Cavalaria\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"Kamisato Ayaka\",\n\t\t\"title\": \"Transcendência Solitária\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"Kamisato Ayato\",\n\t\t\"title\": \"Pilar da Fortaleza\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"Kaveh\",\n\t\t\"title\": \"Refletor Empíreo\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"Keqing\",\n\t\t\"title\": \"Trovão Condutor\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"Kinich\",\n\t\t\"title\": \"Caçador da Têmpera\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"Kirara\",\n\t\t\"title\": \"Gatinha dos Beirais\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"Klee\",\n\t\t\"title\": \"Sol Fugitivo\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"Kujou Sara\",\n\t\t\"title\": \"Flecha de Penas de Corvo\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"Kuki Shinobu\",\n\t\t\"title\": \"Erradicadora das Preocupações\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"Lan Yan\",\n\t\t\"title\": \"Jade Primaveril\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"Lauma\",\n\t\t\"title\": \"Eterna Canção Lunar\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"Layla\",\n\t\t\"title\": \"Contemplações da Estrela Noturna\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"Linnea\",\n\t\t\"title\": \"Caçadora das Maravilhas\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"Lisa\",\n\t\t\"title\": \"Bruxa das Rosas\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"Lynette\",\n\t\t\"title\": \"Elegância nas Sombras\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"Lyney\",\n\t\t\"title\": \"Espetáculo Fantasmagórico\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"Mavuika\",\n\t\t\"title\": \"Chama da Noite Ardente\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"Mika\",\n\t\t\"title\": \"Topógrafo da Geada Translúcida\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"Mona\",\n\t\t\"title\": \"Reflexão Astral\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"Mualani\",\n\t\t\"title\": \"Surfista Perseguidora das Ondas\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"Nahida\",\n\t\t\"title\": \"Pureza Restauradora\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"Navia\",\n\t\t\"title\": \"Leme da Rosa Radiante\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"Nefer\",\n\t\t\"title\": \"Segredo Sob as Areias\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"Neuvillette\",\n\t\t\"title\": \"Ordenador das Marés\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"Nilou\",\n\t\t\"title\": \"Dança da Luz de Lótus\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"Ningguang\",\n\t\t\"title\": \"Estrela em Eclipse\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"Noelle\",\n\t\t\"title\": \"Flor da Cavalaria\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"Ororon\",\n\t\t\"title\": \"Sombra do Vento Noturno\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"Qiqi\",\n\t\t\"title\": \"Ressurreição Gélida\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"Raiden Shogun\",\n\t\t\"title\": \"Plano da Eutimia\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"Razor\",\n\t\t\"title\": \"Menino Lobo\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"Rosaria\",\n\t\t\"title\": \"Benevolência Espinhosa\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"Sangonomiya Kokomi\",\n\t\t\"title\": \"Pérolas de Sabedoria\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"Sayu\",\n\t\t\"title\": \"Mujina Ninja\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"Sethos\",\n\t\t\"title\": \"Medida da Sabedoria\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"Shenhe\",\n\t\t\"title\": \"Transcendência Solitária\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"Shikanoin Heizou\",\n\t\t\"title\": \"Mente Condizente\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"Sigewinne\",\n\t\t\"title\": \"A Filha Transmutada do Dragão\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"Skirk\",\n\t\t\"title\": \"Diácono da Ode Divina\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"Sucrose\",\n\t\t\"title\": \"Doçura Inofensiva\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"Tartaglia\",\n\t\t\"title\": \"Childe\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"Thoma\",\n\t\t\"title\": \"Protetor de Longe\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"Tighnari\",\n\t\t\"title\": \"Andarilho Verdejante\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"Varesa\",\n\t\t\"title\": \"Ócio Vigoroso\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"Varka\",\n\t\t\"title\": \"Cavaleiro de Boreas\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"Venti\",\n\t\t\"title\": \"Cantor dos Ventos Celestiais\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"Wanderer\",\n\t\t\"title\": \"Caminhante Eterno\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"Wriothesley\",\n\t\t\"title\": \"Emissário da Culpa Incógnita\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"Xiangling\",\n\t\t\"title\": \"Mestre de Culinária de Liyue\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"Xianyun\",\n\t\t\"title\": \"Mensageira Celestial\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"Xiao\",\n\t\t\"title\": \"Guardião Yaksha\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"Xilonen\",\n\t\t\"title\": \"Fogo Ardente Forja a Alma\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"Xingqiu\",\n\t\t\"title\": \"Galante Juvenil\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"Xinyan\",\n\t\t\"title\": \"Melodia Incandescente\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"Yae Miko\",\n\t\t\"title\": \"Diversão Astuta\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"Yanfei\",\n\t\t\"title\": \"Inocência Sábia\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"Yaoyao\",\n\t\t\"title\": \"Burgeoning Grace\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"Yelan\",\n\t\t\"title\": \"Vale das Orquídeas\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"Yoimiya\",\n\t\t\"title\": \"Dança das Chamas\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"Yumemizuki Mizuki\",\n\t\t\"title\": \"Sonhos Entrelaçados\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"Yun Jin\",\n\t\t\"title\": \"Palco Lúcida\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"Zhongli\",\n\t\t\"title\": \"Andarilho do Reino Mortal\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"Zibai\",\n\t\t\"title\": \"Primavera Efêmera do Cavalo Branco\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/ru-RU.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"Тысяча ослепительных солнц\",\n\t\"a-thousand-floating-dreams\": \"Сновидения тысячи ночей\",\n\t\"absolution\": \"Отпущение грехов\",\n\t\"akuoumaru\": \"Акуомару\",\n\t\"alley-hunter\": \"Охотник во тьме\",\n\t\"amos-bow\": \"Лук Амоса\",\n\t\"astral-vultures-crimson-plumage\": \"Алое перо звёздного грифа\",\n\t\"aqua-simulacra\": \"Аква симулякрум\",\n\t\"aquila-favonia\": \"Меч Сокола\",\n\t\"athame-artis\": \"Атаме артис\",\n\t\"azurelight\": \"Лазурное сияние\",\n\t\"beacon-of-the-reed-sea\": \"Маяк тростникового моря\",\n\t\"black-tassel\": \"Чёрная кисть\",\n\t\"bloodsoaked-ruins\": \"Окровавленные руины\",\n\t\"bloodtained-greatsword\": \"Меч драконьей крови\",\n\t\"calamity-queller\": \"Усмиритель бед\",\n\t\"cashflow-supervision\": \"Казначейский надзор\",\n\t\"cool-steel\": \"Холодное лезвие\",\n\t\"cranes-echoing-call\": \"Звонкий клич журавля\",\n\t\"crimson_moon_s-semblance\": \"Очертания алой луны\",\n\t\"dawning-frost\": \"Рассветный иней\",\n\t\"debate-club\": \"Дубина переговоров\",\n\t\"dragon_s-bane\": \"Гроза драконов\",\n\t\"elegy-for-the-end\": \"Элегия погибели\",\n\t\"emerald-orb\": \"Изумрудный шар\",\n\t\"engulfing-lightning\": \"Сияющая жатва\",\n\t\"everlasting-moonglow\": \"Вечное лунное сияние\",\n\t\"eye-of-perception\": \"Око сознания\",\n\t\"fang-of-the-mountain-king\": \"Клык Горного короля\",\n\t\"favonius-codex\": \"Кодекс Фавония\",\n\t\"favonius-greatsword\": \"Двуручный меч Фавония\",\n\t\"favonius-lance\": \"Копьё Фавония\",\n\t\"favonius-sword\": \"Меч Фавония\",\n\t\"favonius-warbow\": \"Боевой лук Фавония\",\n\t\"ferrous-shadow\": \"Металлическая тень\",\n\t\"flower-wreathed-feathers\": \"Украшенные цветами перья\",\n\t\"fractured-halo\": \"Расколотый ореол\",\n\t\"freedom-sworn\": \"Клятва свободы\",\n\t\"fruitful-hook\": \"Плодотворный крюк\",\n\t\"gest-of-the-mighty-wolf\": \"Gest of the Mighty Wolf\",\n\t\"golden-frostbound-oath\": \"Золотая клятва льда\",\n\t\"haran-geppaku-futsu\": \"Харан гэппаку фуцу\",\n\t\"harbinger-of-dawn\": \"Предвестник зари\",\n\t\"hunter_s-path\": \"Охотничья тропа\",\n\t\"jadefall-splendor\": \"Великолепие лазурного свода\",\n\t\"kagura_s-verity\": \"Истина кагура\",\n\t\"key-of-khaj-nisut\": \"Ключ Хадж-нисут\",\n\t\"lightbearing-moonshard\": \"Светоносный осколок луны\",\n\t\"lion_s-roar\": \"Драконий рык\",\n\t\"light-of-foliar-incision\": \"Свет лиственного разреза\",\n\t\"lithic-blade\": \"Каменный меч\",\n\t\"lithic-spear\": \"Каменное копьё\",\n\t\"lost-prayer-to-the-sacred-winds\": \"Молитва святым ветрам\",\n\t\"lumidouce-elegy\": \"Элегия Люмидус\",\n\t\"magic-guide\": \"Руководство по магии\",\n\t\"makhaira-aquamarine\": \"Аквамарин махайры\",\n\t\"memory-of-dust\": \"Память о пыли\",\n\t\"mistsplitter-reforged\": \"Рассекающий туман\",\n\t\"mitternachts-waltz\": \"Вальс Нирваны Ночи\",\n\t\"moonweavers-dawn\": \"Рассвет прядильщицы луны\",\n\t\"mountain-bracing-bolt\": \"Крепящий горы шип\",\n\t\"mouun_s-moon\": \"Луна Моун\",\n\t\"nightweavers-looking-glass\": \"Зеркало прядильщицы ночи\",\n\t\"nocturnes-curtain-call\": \"Вызов ноктюрна\",\n\t\"peak-patrol-song\": \"Песнь патруля пиков\",\n\t\"polar-star\": \"Полярная звезда\",\n\t\"portable-power-saw\": \"Переносная мотопила\",\n\t\"primordial-jade-cutter\": \"Драгоценный омут\",\n\t\"primordial-jade-winged-spear\": \"Нефритовый коршун\",\n\t\"prospector-drill\": \"Бур рудоискателя\",\n\t\"rainslasher\": \"Дождерез\",\n\t\"range-gauge\": \"Дальномер\",\n\t\"raven-bow\": \"Лук ворона\",\n\t\"redhorn-stonethresher\": \"Краснорогий камнеруб\",\n\t\"reliquary-of-truth\": \"Шкатулка истин\",\n\t\"rust\": \"Ржавый лук\",\n\t\"sacrificial-bow\": \"Церемониальный лук\",\n\t\"sacrificial-fragments\": \"Церемониальные мемуары\",\n\t\"sacrificial-greatsword\": \"Церемониальный двуручный меч\",\n\t\"sacrificial-sword\": \"Церемониальный меч\",\n\t\"sacrificers-staff\": \"Посох жертвующей\",\n\t\"sharpshooter_s-oath\": \"Клятва стрелка\",\n\t\"silvershower-heartstrings\": \"Сердечные струны дождя\",\n\t\"skyrider-sword\": \"Меч небесного всадника\",\n\t\"skyward-atlas\": \"Небесный атлас\",\n\t\"skyward-blade\": \"Небесный меч\",\n\t\"skyward-harp\": \"Небесное крыло\",\n\t\"skyward-pride\": \"Небесное величие\",\n\t\"skyward-spine\": \"Небесная ось\",\n\t\"slingshot\": \"Рогатка\",\n\t\"song-of-broken-pines\": \"Песнь разбитых сосен\",\n\t\"splendor-of-tranquil-waters\": \"Блеск тихих вод\",\n\t\"staff-of-homa\": \"Посох Хомы\",\n\t\"staff-of-the-scarlet-sands\": \"Посох алых песков\",\n\t\"starcallers-watch\": \"Бдение взывающего к звёздам\",\n\t\"sturdy-bone\": \"Крепкая кость\",\n\t\"summit-shaper\": \"Кромсатель пиков\",\n\t\"sunny-morning-sleep-in\": \"Сон солнечным утром\",\n\t\"surfs-up\": \"Лови волну\",\n\t\"symphonist-of-scents\": \"Симфонист ароматов\",\n\t\"the-alley-flash\": \"Вспышка во тьме\",\n\t\"the-bell\": \"Меч-колокол\",\n\t\"the-daybreak-chronicles\": \"Хроники рассвета\",\n\t\"the-dockhands-assistant\": \"Верфь\",\n\t\"the-first-great-magic\": \"Первый великий фокус\",\n\t\"the-flute\": \"Меч-флейта\",\n\t\"the-stringless\": \"Бесструнный\",\n\t\"the-unforged\": \"Некованый\",\n\t\"the-widsith\": \"Песнь странника\",\n\t\"thrilling-tales-of-dragon-slayers\": \"Эпос о драконоборцах\",\n\t\"thundering-pulse\": \"Громовой пульс\",\n\t\"tome-of-the-eternal-flow\": \"Обряд вечного течения\",\n\t\"tulaytullah_s-remembrance\": \"Воспоминания Тулайтуллы\",\n\t\"uraku-misugiri\": \"Ураку мисугири\",\n\t\"verdict\": \"Вердикт\",\n\t\"vivid-notions\": \"Переливающиеся чаяния\",\n\t\"vortex-vanquisher\": \"Покоритель вихря\",\n\t\"wavebreaker_s-fin\": \"Режущий волны плавник\",\n\t\"wandering-evenstar\": \"Скитающаяся звезда\",\n\t\"waveriding-whirl\": \"Вихрь на волнах\",\n\t\"wine-and-song\": \"Вино и песни\",\n\t\"wolf_s-gravestone\": \"Волчья погибель\",\n\t\"xiphos-moonlight\": \"Лунное сияние ксифоса\",\n\t\"aino\": {\n\t\t\"name\": \"Айно\",\n\t\t\"title\": \"Грохочущие чудо-машины\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"Альбедо\",\n\t\t\"title\": \"Принц мела\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"Аль-Хайтам\",\n\t\t\"title\": \"Голос разума\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"Эмбер\",\n\t\t\"title\": \"Чемпион полётов\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"Итто\",\n\t\t\"title\": \"Герой Ханамидзаки\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"Арлекино\",\n\t\t\"title\": \"Роковая луна\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"Бай Чжу\",\n\t\t\"title\": \"Преодоление бренности\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"Барбара\",\n\t\t\"title\": \"Сияющая звёздочка\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"Бэй Доу\",\n\t\t\"title\": \"Владычица морей\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"Беннет\",\n\t\t\"title\": \"Испытание огнём\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"Кандакия\",\n\t\t\"title\": \"Позолоченная клятва\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"Шарлотта\",\n\t\t\"title\": \"Объективная реальность\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"Часка\",\n\t\t\"title\": \"Небесный примиритель\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"Шеврёз\",\n\t\t\"title\": \"Вершитель правосудия\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"Тиори\",\n\t\t\"title\": \"Громоподобная закройщица\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"Чун Юнь\",\n\t\t\"title\": \"Морозная пылкость\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"Ситлали\",\n\t\t\"title\": \"Чёрный отблеск белой звезды\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"Клоринда\",\n\t\t\"title\": \"Хранительница света, теневая охотница\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"Коллеи\",\n\t\t\"title\": \"Росток возрождения\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"Коломбина\",\n\t\t\"title\": \"Возвращение полой луны\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"Сайно\",\n\t\t\"title\": \"Вершитель таинств\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"Далия\",\n\t\t\"title\": \"Хвала и подношение\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"Дэхья\",\n\t\t\"title\": \"Пламенная Грива\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"Дилюк\",\n\t\t\"title\": \"Тёмный рассвет\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"Диона\",\n\t\t\"title\": \"Кошкин коктейль\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"Дори\",\n\t\t\"title\": \"Сокровище сада снов\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"Дурин\",\n\t\t\"title\": \"Вечное пламя\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"Эмилия\",\n\t\t\"title\": \"След тысячи ароматов\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"Эскофье\",\n\t\t\"title\": \"Изысканное великолепие\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"Эола\",\n\t\t\"title\": \"Танец морской пены\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"Фарузан\",\n\t\t\"title\": \"Загадочный механик\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"Фишль\",\n\t\t\"title\": \"Принцесса осуждения\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"Флинс\",\n\t\t\"title\": \"Дивный свет, неведомые тени\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"Фремине\",\n\t\t\"title\": \"Тоска по невиданным глубинам\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"Фурина\",\n\t\t\"title\": \"Бесконечный танец одиночества\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"Ка Мин\",\n\t\t\"title\": \"Львиный авангард\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"Гань Юй\",\n\t\t\"title\": \"Взгляд полнолуния\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"Горо\",\n\t\t\"title\": \"Пёс войны\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"Ху Тао\",\n\t\t\"title\": \"Весенний аромат\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"Иансан\",\n\t\t\"title\": \"Непрерывная закалка\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"Ifa\",\n\t\t\"title\": \"Вслед за блуждающим ветром\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"Иллуги\",\n\t\t\"title\": \"Пылающее сердце ночного кошмара\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"Инеффа\",\n\t\t\"title\": \"Взрывная громовая волна\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"Ягода\",\n\t\t\"title\": \"Охотница на ветер и тени\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"Джинн\",\n\t\t\"title\": \"Рыцарь Одуванчик\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"Качина\",\n\t\t\"title\": \"Крапчатое самородное золото\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"Кадзуха\",\n\t\t\"title\": \"Багряные листья и неистовые волны\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"Кэйа\",\n\t\t\"title\": \"Зимний клинок\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"Аяка\",\n\t\t\"title\": \"Инеевая цапля\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"Аято\",\n\t\t\"title\": \"Оплот стойкости\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"Кавех\",\n\t\t\"title\": \"Отражение эмпирея\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"Кэ Цин\",\n\t\t\"title\": \"Раскаты грома\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"Кинич\",\n\t\t\"title\": \"Охотник Пламени поворота\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"Кирара\",\n\t\t\"title\": \"Кошка на гребне крыши\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"Кли\",\n\t\t\"title\": \"Ускользающее солнце\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"Сара\",\n\t\t\"title\": \"Кабурая вороньего пера\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"Синобу\",\n\t\t\"title\": \"Избавительница\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"Лань Янь\",\n\t\t\"title\": \"Нефритовая весна\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"Лаума\",\n\t\t\"title\": \"Жертвенная песнь вечной Луне\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"Лайла\",\n\t\t\"title\": \"Дивная вечерняя звезда\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"Линнея\",\n\t\t\"title\": \"Пророчица чудес\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"Лиза\",\n\t\t\"title\": \"Пурпурная ведьма\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"Линетт\",\n\t\t\"title\": \"Изящество среди теней\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"Лини\",\n\t\t\"title\": \"Зрелищные фантасмагории\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"Мавуика\",\n\t\t\"title\": \"Пылающая ночь\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"Мика\",\n\t\t\"title\": \"Картограф чистого инея\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"Мона\",\n\t\t\"title\": \"Звёздное отражение\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"Муалани\",\n\t\t\"title\": \"Укротительница волн\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"Нахида\",\n\t\t\"title\": \"Средоточие чистоты\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"Навия\",\n\t\t\"title\": \"Штурвал цветущей розы\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"Нефер\",\n\t\t\"title\": \"Тайна, скрытая песками\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"Neuvillette\",\n\t\t\"title\": \"Распорядитель неумолимого суда\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"Нилу\",\n\t\t\"title\": \"Танец лотоса\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"Нин Гуан\",\n\t\t\"title\": \"Лунное затмение\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"Ноэлль\",\n\t\t\"title\": \"Нераспустившийся цветок\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"Оророн\",\n\t\t\"title\": \"Тень Ночного Ветра\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"Ци Ци\",\n\t\t\"title\": \"Ледяное воскрешение\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"Райдэн\",\n\t\t\"title\": \"Царство эвтюмии\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"Рэйзор\",\n\t\t\"title\": \"Инстинкт стаи\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"Розария\",\n\t\t\"title\": \"Венец милости\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"Кокоми\",\n\t\t\"title\": \"Жемчужина мудрости\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"Саю\",\n\t\t\"title\": \"Мудзина-ниндзя\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"Сетос\",\n\t\t\"title\": \"Мера мудрости\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"Шэнь Хэ\",\n\t\t\"title\": \"Одиночество превосходства\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"Хэйдзо\",\n\t\t\"title\": \"Невозмутимое спокойствие\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"Сиджвин\",\n\t\t\"title\": \"Преображённая дочь дракона\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"Скирк\",\n\t\t\"title\": \"Звезда пустоты\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"Сахароза\",\n\t\t\"title\": \"Безобидная карамелька\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"Тарталья\",\n\t\t\"title\": \"Чайльд\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"Тома\",\n\t\t\"title\": \"Защитник издалека\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"Тигнари\",\n\t\t\"title\": \"Зелёный странник\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"Вареса\",\n\t\t\"title\": \"Безмятежная сила\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"Varka\",\n\t\t\"title\": \"Knight of Boreas\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"Венти\",\n\t\t\"title\": \"Поэт ветров\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"Странник\",\n\t\t\"title\": \"Затерявшийся в вечности\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"Ризли\",\n\t\t\"title\": \"Эмиссар заточённых злодеяний\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"Сян Лин\",\n\t\t\"title\": \"Миллион вкусов\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"Сянь Юнь\",\n\t\t\"title\": \"Вестница небес\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"Сяо\",\n\t\t\"title\": \"Защитник Якса\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"Шилонен\",\n\t\t\"title\": \"Закалённая пламенем душа\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"Син Цю\",\n\t\t\"title\": \"Галантный юноша\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"Синь Янь\",\n\t\t\"title\": \"Пламенная мелодия\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"Яэ Мико\",\n\t\t\"title\": \"Озорное лукавство\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"Янь Фэй\",\n\t\t\"title\": \"Непорочная мудрость\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"Яо Яо\",\n\t\t\"title\": \"Бутон изящества\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"Е Лань\",\n\t\t\"title\": \"Орхидея долины\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"Ёимия\",\n\t\t\"title\": \"Пляшущие огоньки\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"Yumemizuki Mizuki\",\n\t\t\"title\": \"ห้วงนิทราคะนึงฝัน\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"Юнь Цзинь\",\n\t\t\"title\": \"Изящество на сцене\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"Чжун Ли\",\n\t\t\"title\": \"Бренный скиталец\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"Цзы Бай\",\n\t\t\"title\": \"Быстротечные воды сокрытого ручья\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/vi-VN.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"Thiên Dương Rực Lửa\",\n\t\"a-thousand-floating-dreams\": \"Cõi Mộng Ngàn Đêm\",\n\t\"absolution\": \"Xá Tội\",\n\t\"akuoumaru\": \"Akuoumaru\",\n\t\"alley-hunter\": \"Thợ Săn Hẻm Tối\",\n\t\"amos-bow\": \"Cung Amos\",\n\t\"astral-vultures-crimson-plumage\": \"Xích Vũ Tinh Tựu\",\n\t\"aqua-simulacra\": \"Nhược Thủy\",\n\t\"aquila-favonia\": \"Phong Ưng Kiếm\",\n\t\"athame-artis\": \"Hắc Ám Xâm Thực\",\n\t\"azurelight\": \"Thương Diệu\",\n\t\"beacon-of-the-reed-sea\": \"Hải Đăng Bờ Biển Lau\",\n\t\"black-tassel\": \"Hắc Anh Thương\",\n\t\"bloodsoaked-ruins\": \"Tàn Tích Nhuốm Máu\",\n\t\"bloodtained-greatsword\": \"Kiếm Huyết Rồng\",\n\t\"calamity-queller\": \"Hủy Diệt\",\n\t\"cashflow-supervision\": \"Quản Đốc Vàng Ròng\",\n\t\"cool-steel\": \"Lãnh Nhẫn\",\n\t\"cranes-echoing-call\": \"Dư Âm Tiếng Hạc\",\n\t\"crimson_moon_s-semblance\": \"Hình Thái Xích Nguyệt\",\n\t\"dawning-frost\": \"Sương Mai\",\n\t\"debate-club\": \"Gậy Thu Phục\",\n\t\"dragon_s-bane\": \"Tai Ương Của Rồng\",\n\t\"elegy-for-the-end\": \"Tiếng Thở Dài Vô Tận\",\n\t\"emerald-orb\": \"Quả Cầu Ngọc\",\n\t\"engulfing-lightning\": \"Đoạn Thảo Trường Đao\",\n\t\"everlasting-moonglow\": \"Vầng Trăng Bất Diệt\",\n\t\"eye-of-perception\": \"Chiêu Tâm\",\n\t\"fang-of-the-mountain-king\": \"Nanh Sơn Vương\",\n\t\"favonius-codex\": \"Tây Phong Mật Điển\",\n\t\"favonius-greatsword\": \"Đại Kiếm Tây Phong\",\n\t\"favonius-lance\": \"Thương Tây Phong\",\n\t\"favonius-sword\": \"Tây Phong Kiếm\",\n\t\"favonius-warbow\": \"Cung Tây Phong\",\n\t\"ferrous-shadow\": \"Kiếm Thiết Ảnh\",\n\t\"flower-wreathed-feathers\": \"Lông Vũ Thêu Hoa\",\n\t\"fractured-halo\": \"Hào Quang Tách Rời\",\n\t\"freedom-sworn\": \"Lời Thề Tự Do Cổ Xưa\",\n\t\"fruitful-hook\": \"Móc Trĩu Quả\",\n\t\"gest-of-the-mighty-wolf\": \"Chiến Hùng Ca Của Sói\",\n\t\"golden-frostbound-oath\": \"Lời Thề Vàng Sương Giá\",\n\t\"haran-geppaku-futsu\": \"Haran Geppaku Futsu\",\n\t\"harbinger-of-dawn\": \"Thần Kiếm Lê Minh\",\n\t\"hunter_s-path\": \"Con Đường Thợ Săn\",\n\t\"jadefall-splendor\": \"Ngọc Bích Huy Hoàng\",\n\t\"kagura_s-verity\": \"Chân Ý Của Kagura\",\n\t\"key-of-khaj-nisut\": \"Chìa Khóa Khaj-Nisut\",\n\t\"lightbearing-moonshard\": \"Mảnh Trăng Ánh Sáng\",\n\t\"lion_s-roar\": \"Tiếng Hét Của Rồng\",\n\t\"light-of-foliar-incision\": \"Ánh Lá Phán Quyết\",\n\t\"lithic-blade\": \"Thiên Nham Cổ Kiếm\",\n\t\"lithic-spear\": \"Thương Thiên Nham\",\n\t\"lost-prayer-to-the-sacred-winds\": \"Điển Tích Tây Phong\",\n\t\"lumidouce-elegy\": \"Bi Ca Lumidouce\",\n\t\"magic-guide\": \"Tóm Tắt Ma Pháp\",\n\t\"makhaira-aquamarine\": \"Sắc Nước Makhaira\",\n\t\"memory-of-dust\": \"Khóa Trần Thế\",\n\t\"mistsplitter-reforged\": \"Ánh Sáng Đêm Sương Mù\",\n\t\"mitternachts-waltz\": \"Điệu Van Ban Đêm\",\n\t\"moonweavers-dawn\": \"Bình Minh Của Người Dệt Trăng\",\n\t\"mountain-bracing-bolt\": \"Mũi Đinh Trấn Núi\",\n\t\"mouun_s-moon\": \"Ánh Trăng Mouun\",\n\t\"nightweavers-looking-glass\": \"Kính Dệt Màn Đêm\",\n\t\"nocturnes-curtain-call\": \"Dạ Khúc Hạ Màn\",\n\t\"peak-patrol-song\": \"Khúc Ca Núi Đá\",\n\t\"polar-star\": \"Ngôi Sao Cực Đông\",\n\t\"portable-power-saw\": \"Máy Cưa Cầm Tay\",\n\t\"primordial-jade-cutter\": \"Bàn Nham Kết Lục\",\n\t\"primordial-jade-winged-spear\": \"Hòa Phác Diên\",\n\t\"prospector-drill\": \"Mũi Khoan Thăm Dò\",\n\t\"rainslasher\": \"Vũ Tài\",\n\t\"range-gauge\": \"Máy Đo Cự Ly\",\n\t\"raven-bow\": \"Cung Lông Vịt\",\n\t\"redhorn-stonethresher\": \"Xích Giác Phá Thạch Đao\",\n\t\"reliquary-of-truth\": \"Chân Ngôn Bí Hạp\",\n\t\"rust\": \"Cung Rỉ Sét\",\n\t\"sacrificial-bow\": \"Cung Tế Lễ\",\n\t\"sacrificial-fragments\": \"Mảnh Chương Tế Lễ\",\n\t\"sacrificial-greatsword\": \"Đại Kiếm Tế Lễ\",\n\t\"sacrificial-sword\": \"Kiếm Tế Lễ\",\n\t\"sacrificers-staff\": \"Quyền Trượng Kẻ Thánh Tế\",\n\t\"sharpshooter_s-oath\": \"Lời Thề Xạ Thủ Thần\",\n\t\"silvershower-heartstrings\": \"Màn Mưa Tơ Lòng\",\n\t\"skyrider-sword\": \"Kiếm Phi Thiên\",\n\t\"skyward-atlas\": \"Quyển Thiên Không\",\n\t\"skyward-blade\": \"Thiên Không Kiếm\",\n\t\"skyward-harp\": \"Cánh Thiên Không\",\n\t\"skyward-pride\": \"Thiên Không Kiêu Ngạo\",\n\t\"skyward-spine\": \"Xương Sống Thiên Không\",\n\t\"slingshot\": \"Nỏ Kéo\",\n\t\"song-of-broken-pines\": \"Tiếng Gió Trong Rừng Thông\",\n\t\"splendor-of-tranquil-waters\": \"Sắc Nước Lộng Lẫy\",\n\t\"staff-of-homa\": \"Trượng Hộ Ma\",\n\t\"staff-of-the-scarlet-sands\": \"Quyền Trượng Cát Đỏ\",\n\t\"starcallers-watch\": \"Ánh Nhìn Tư Tế\",\n\t\"sturdy-bone\": \"Xương Cứng\",\n\t\"summit-shaper\": \"Kiếm Chước Phong\",\n\t\"sunny-morning-sleep-in\": \"Hòa Giấc Trong Nắng Mai\",\n\t\"surfs-up\": \"Thời Khắc Lướt Sóng\",\n\t\"symphonist-of-scents\": \"Nhạc Sĩ Hương Thơm\",\n\t\"the-alley-flash\": \"Tia Sáng Nơi Hẻm Tối\",\n\t\"the-bell\": \"Kiếm Chuông\",\n\t\"the-daybreak-chronicles\": \"Biên Niên Sử Bình Minh\",\n\t\"the-dockhands-assistant\": \"Kiếm Bến Tàu\",\n\t\"the-first-great-magic\": \"Màn Ảo Thuật Đầu Tiên\",\n\t\"the-flute\": \"Kiếm Sáo\",\n\t\"the-stringless\": \"Tuyệt Huyền\",\n\t\"the-unforged\": \"Kiếm Vô Công\",\n\t\"the-widsith\": \"Chương Nhạc Lang Thang\",\n\t\"thrilling-tales-of-dragon-slayers\": \"Câu Chuyện Diệt Rồng\",\n\t\"thundering-pulse\": \"Sấm Sét Rung Động\",\n\t\"tome-of-the-eternal-flow\": \"Nghi Thức Dòng Chảy Vĩnh Hằng\",\n\t\"tulaytullah_s-remembrance\": \"Hồi Ức Tulaytullah\",\n\t\"uraku-misugiri\": \"Uraku Misugiri\",\n\t\"verdict\": \"Phán Quyết\",\n\t\"vivid-notions\": \"Tâm Niệm Sắc Màu\",\n\t\"vortex-vanquisher\": \"Giáo Nịnh Thần\",\n\t\"wavebreaker_s-fin\": \"Vây Cá Chẻ Sóng\",\n\t\"wandering-evenstar\": \"Sao Đêm Rong Ruổi\",\n\t\"waveriding-whirl\": \"Vòng Xoáy Cưỡi Sóng\",\n\t\"wine-and-song\": \"Rượu Và Thơ Nơi Hẻm Tối\",\n\t\"wolf_s-gravestone\": \"Đường Cùng Của Sói\",\n\t\"xiphos-moonlight\": \"Ánh Trăng Xiphos\",\n\t\"aino\": {\n\t\t\"name\": \"Aino\",\n\t\t\"title\": \"Clinky-Clank Diệu Kỳ\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"Albedo\",\n\t\t\"title\": \"Kreideprinz\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"Alhaitham\",\n\t\t\"title\": \"Lời Khuyên Tận Tình\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"Amber\",\n\t\t\"title\": \"Quán Quân Bay Lượn\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"Arataki Itto\",\n\t\t\"title\": \"Quái Kiệt Hanamizaka\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"Arlecchino\",\n\t\t\"title\": \"Vầng Trăng Tai Họa\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"Baizhu\",\n\t\t\"title\": \"Sinh Tử Giao Hòa\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"Barbara\",\n\t\t\"title\": \"Thần Tượng Tỏa Sáng\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"Beidou\",\n\t\t\"title\": \"Long Vương Không Vương Miện\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"Bennett\",\n\t\t\"title\": \"Thử Thách Của Lửa\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"Candace\",\n\t\t\"title\": \"Thề Nguyện Ánh Kim\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"Charlotte\",\n\t\t\"title\": \"Ống Kính Sự Thật\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"Chasca\",\n\t\t\"title\": \"Phán Quyết Trên Cao\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"Chevreuse\",\n\t\t\"title\": \"Người Thực Thi Công Lý\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"Chiori\",\n\t\t\"title\": \"Nhà Thiết Kế Sấm Chớp\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"Chongyun\",\n\t\t\"title\": \"Bòng Hình Băng Giá\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"Citlali\",\n\t\t\"title\": \"Tinh Tú Obsidian\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"Clorinde\",\n\t\t\"title\": \"Thắp Nến Diệt Bóng Tối\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"Collei\",\n\t\t\"title\": \"Mầm Non Tái Sinh\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"Columbina\",\n\t\t\"title\": \"Không Nguyệt Trở Về\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"Cyno\",\n\t\t\"title\": \"Phán Quyết Ẩn Mật\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"Dahlia\",\n\t\t\"title\": \"Hoan Ca Tế Lễ\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"Dehya\",\n\t\t\"title\": \"Sư Tử Lửa\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"Diluc\",\n\t\t\"title\": \"Mặt Tối Của Bình Minh\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"Diona\",\n\t\t\"title\": \"Đặc Chế Quán Rượu Đuôi Mèo\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"Dori\",\n\t\t\"title\": \"Kho Báu Vườn Mơ\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"Durin\",\n\t\t\"title\": \"“Ngọn Lửa Bất Diệt”\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"Emilie\",\n\t\t\"title\": \"Muôn Ngàn Hương Thơm\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"Escoffier\",\n\t\t\"title\": \"Muôn Hương Hòa Quyện\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"Eula\",\n\t\t\"title\": \"Vũ Điệu Bọt Biển\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"Faruzan\",\n\t\t\"title\": \"Người Giải Bí Ẩn\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"Fischl\",\n\t\t\"title\": \"Công Chúa Định Tội\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"Flins\",\n\t\t\"title\": \"Kỳ Ảnh Bên Đèn\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"Freminet\",\n\t\t\"title\": \"Khát Khao Chìm Đắm\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"Furina\",\n\t\t\"title\": \"Độc Diễn Vô Tận\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"Gaming\",\n\t\t\"title\": \"Tuấn Nghê Ngẩng Đầu\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"Ganyu\",\n\t\t\"title\": \"Người Bảo Vệ Tận Tâm\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"Gorou\",\n\t\t\"title\": \"Chiến Khuyển Nanh Nhọn\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"Hu Tao\",\n\t\t\"title\": \"Tuyết Tễ Mai Hương\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"Iansan\",\n\t\t\"title\": \"Phôi Đá Bách Luyện\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"Ifa\",\n\t\t\"title\": \"Gió Xanh Dẫn Lối\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"Illuga\",\n\t\t\"title\": \"Đốm Lửa Đêm Ác Mộng\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"Ineffa\",\n\t\t\"title\": \"Sóng Điện Rền Vang\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"Jahoda\",\n\t\t\"title\": \"Bóng Hình Đan Gió\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"Jean\",\n\t\t\"title\": \"Kỵ Sĩ Bồ Công Anh\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"Kachina\",\n\t\t\"title\": \"Khoáng Thạch Ánh Vàng\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"Kaedehara Kazuha\",\n\t\t\"title\": \"Lá Đỏ Đuổi Sóng\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"Kaeya\",\n\t\t\"title\": \"Hàn Phong Kiếm Sĩ\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"Kamisato Ayaka\",\n\t\t\"title\": \"Bạch Hạc Sương Hoa\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"Kamisato Ayato\",\n\t\t\"title\": \"Trụ Cột Vững Vàng\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"Kaveh\",\n\t\t\"title\": \"Lăng Kính Vòm Trời\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"Keqing\",\n\t\t\"title\": \"Sấm Chớp Trước Cơn Mưa\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"Kinich\",\n\t\t\"title\": \"Thợ Săn Hồi Hỏa\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"Kirara\",\n\t\t\"title\": \"Mèo Leo Nóc Nhà\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"Klee\",\n\t\t\"title\": \"Mặt Trời Chạy Trốn\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"Kujou Sara\",\n\t\t\"title\": \"Hắc Vũ Tiễn\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"Kuki Shinobu\",\n\t\t\"title\": \"Gạt Bỏ Phiền Não\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"Lan Yan\",\n\t\t\"title\": \"Cắt Ngọc Đan Xuân\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"Lauma\",\n\t\t\"title\": \"Tế Ca Vĩnh Nguyệt\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"Layla\",\n\t\t\"title\": \"Sao Đêm Kỳ Ảo\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"Linnea\",\n\t\t\"title\": \"Lữ Khách Uyên Bác\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"Lisa\",\n\t\t\"title\": \"Ma Nữ Tường Vi\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"Lynette\",\n\t\t\"title\": \"Bóng Hình Trang Nhã\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"Lyney\",\n\t\t\"title\": \"Ảo Ảnh Ngoạn Mục\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"Mavuika\",\n\t\t\"title\": \"Lửa Thiêu Đêm Đen\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"Mika\",\n\t\t\"title\": \"Dấu Hiệu Sương Mai\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"Mona\",\n\t\t\"title\": \"Thủy Kính Thiên Tinh\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"Mualani\",\n\t\t\"title\": \"Người Đuổi Theo Sóng\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"Nahida\",\n\t\t\"title\": \"Kết Tinh Bạch Thảo\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"Navia\",\n\t\t\"title\": \"Bánh Lái Hoa Lệ\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"Nefer\",\n\t\t\"title\": \"Bí Mật Cát Phủ\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"Neuvillette\",\n\t\t\"title\": \"Tiếng Sóng Phán Quyết\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"Nilou\",\n\t\t\"title\": \"Vũ Điệu Ánh Sen\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"Ningguang\",\n\t\t\"title\": \"Yểm Nguyệt Thiên Quyền\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"Noelle\",\n\t\t\"title\": \"Đóa Hoa Chưa Vinh Danh\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"Ororon\",\n\t\t\"title\": \"Làn Khói U Ám\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"Qiqi\",\n\t\t\"title\": \"Đêm Hồn Về Lạnh Giá\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"Raiden Shogun\",\n\t\t\"title\": \"Nhất Tâm Tịnh Thổ\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"Razor\",\n\t\t\"title\": \"Thiếu Niên Sói\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"Rosaria\",\n\t\t\"title\": \"Ân Điền Mũ Gai\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"Sangonomiya Kokomi\",\n\t\t\"title\": \"Trí Tuệ Trân Châu\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"Sayu\",\n\t\t\"title\": \"Ninja Mujina\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"Sethos\",\n\t\t\"title\": \"Thước Đo Trí Tuệ\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"Shenhe\",\n\t\t\"title\": \"Thiên Thể Cô Độc\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"Shikanoin Heizou\",\n\t\t\"title\": \"Con Tim Giao Hòa\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"Sigewinne\",\n\t\t\"title\": \"Long Nữ Diệu Biến\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"Skirk\",\n\t\t\"title\": \"Ánh Sao Hư Không\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"Sucrose\",\n\t\t\"title\": \"Độ Ngọt Vô Hại\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"Tartaglia\",\n\t\t\"title\": \"Childe\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"Thoma\",\n\t\t\"title\": \"Người Bảo Vệ Phương Xa\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"Tighnari\",\n\t\t\"title\": \"Dạo Bước Rừng Xanh\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"Varesa\",\n\t\t\"title\": \"Sức Mạnh Nhàn Nhã\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"Varka\",\n\t\t\"title\": \"Kỵ Sĩ Bắc Phong\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"Venti\",\n\t\t\"title\": \"Nhà Thơ Có Màu Của Gió\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"Kẻ Lang Thang\",\n\t\t\"title\": \"Đoạn Tuyệt Thế Gian\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"Wriothesley\",\n\t\t\"title\": \"Sứ Giả Tội Danh Ẩn Mật\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"Xiangling\",\n\t\t\"title\": \"Vạn Dân Bách Vị\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"Xianyun\",\n\t\t\"title\": \"Hạc Sứ Cõi Tiên\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"Xiao\",\n\t\t\"title\": \"Hộ Pháp Dạ Xoa\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"Xilonen\",\n\t\t\"title\": \"Lửa Nung Đúc Hồn\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"Xingqiu\",\n\t\t\"title\": \"Tuổi Trẻ Tài Cao\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"Xinyan\",\n\t\t\"title\": \"Giai Điệu Nóng Bỏng\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"Yae Miko\",\n\t\t\"title\": \"Tiếu Ngạo Thế Gian\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"Yanfei\",\n\t\t\"title\": \"Cơ Trí Ngây Thơ\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"Yaoyao\",\n\t\t\"title\": \"Nhụy Hoa Hoạt Bát\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"Yelan\",\n\t\t\"title\": \"Lan Sinh U Cốc\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"Yoimiya\",\n\t\t\"title\": \"Vũ Điệu Bão Lửa\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"Yumemizuki Mizuki\",\n\t\t\"title\": \"Ảo Mộng Trùng Điệp\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"Yun Jin\",\n\t\t\"title\": \"Mỹ Nhân Trên Sân Khấu\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"Zhongli\",\n\t\t\"title\": \"Nham Vương Đế Quân\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"Zibai\",\n\t\t\"title\": \"Ngựa Phi Suối Chảy\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/zh-CN.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"焚曜千阳\",\n\t\"a-thousand-floating-dreams\": \"千夜浮梦\",\n\t\"absolution\": \"赦罪\",\n\t\"akuoumaru\": \"恶王丸\",\n\t\"alley-hunter\": \"暗巷猎手\",\n\t\"amos-bow\": \"阿莫斯之弓\",\n\t\"astral-vultures-crimson-plumage\": \"星鹫赤羽\",\n\t\"aqua-simulacra\": \"若水\",\n\t\"aquila-favonia\": \"风鹰剑\",\n\t\"athame-artis\": \"黑蚀\",\n\t\"azurelight\": \"苍耀\",\n\t\"beacon-of-the-reed-sea\": \"苇海信标\",\n\t\"black-tassel\": \"黑缨枪\",\n\t\"bloodsoaked-ruins\": \"血染荒城\",\n\t\"bloodtained-greatsword\": \"沐浴龙血的剑\",\n\t\"calamity-queller\": \"息灾\",\n\t\"cashflow-supervision\": \"金流监督\",\n\t\"cool-steel\": \"冷刃\",\n\t\"cranes-echoing-call\": \"鹤鸣余音\",\n\t\"crimson_moon_s-semblance\": \"赤月之形\",\n\t\"dawning-frost\": \"霜辰\",\n\t\"debate-club\": \"以理服人\",\n\t\"dragon_s-bane\": \"匣里灭辰\",\n\t\"elegy-for-the-end\": \"终末嗟叹之诗\",\n\t\"emerald-orb\": \"翡玉法球\",\n\t\"engulfing-lightning\": \"薙草之稻光\",\n\t\"everlasting-moonglow\": \"不灭月华\",\n\t\"eye-of-perception\": \"昭心\",\n\t\"fang-of-the-mountain-king\": \"山王长牙\",\n\t\"favonius-codex\": \"西风秘典\",\n\t\"favonius-greatsword\": \"西风大剑\",\n\t\"favonius-lance\": \"西风长枪\",\n\t\"favonius-sword\": \"西风剑\",\n\t\"favonius-warbow\": \"西风猎弓\",\n\t\"ferrous-shadow\": \"铁影阔剑\",\n\t\"flower-wreathed-feathers\": \"缀花之翎\",\n\t\"fractured-halo\": \"支离轮光\",\n\t\"freedom-sworn\": \"苍古自由之誓\",\n\t\"fruitful-hook\": \"硕果钩\",\n\t\"gest-of-the-mighty-wolf\": \"狼的武功歌\",\n\t\"golden-frostbound-oath\": \"霜结的誓金枝\",\n\t\"haran-geppaku-futsu\": \"波乱月白经津\",\n\t\"harbinger-of-dawn\": \"黎明神剑\",\n\t\"hunter_s-path\": \"猎人之径\",\n\t\"jadefall-splendor\": \"碧落之珑\",\n\t\"kagura_s-verity\": \"神乐之真意\",\n\t\"key-of-khaj-nisut\": \"圣显之钥\",\n\t\"lightbearing-moonshard\": \"朏魄含光\",\n\t\"lion_s-roar\": \"匣里龙吟\",\n\t\"light-of-foliar-incision\": \"裁叶萃光\",\n\t\"lithic-blade\": \"千岩古剑\",\n\t\"lithic-spear\": \"千岩长枪\",\n\t\"lost-prayer-to-the-sacred-winds\": \"四风原典\",\n\t\"lumidouce-elegy\": \"柔灯挽歌\",\n\t\"magic-guide\": \"魔导绪论\",\n\t\"makhaira-aquamarine\": \"玛海菈的水色\",\n\t\"memory-of-dust\": \"尘世之锁\",\n\t\"mistsplitter-reforged\": \"雾切之回光\",\n\t\"mitternachts-waltz\": \"幽夜华尔兹\",\n\t\"moonweavers-dawn\": \"织月者的曙色\",\n\t\"mountain-bracing-bolt\": \"镇山之钉\",\n\t\"mouun_s-moon\": \"曚云之月\",\n\t\"nightweavers-looking-glass\": \"纺夜天镜\",\n\t\"nocturnes-curtain-call\": \"帷间夜曲\",\n\t\"peak-patrol-song\": \"岩峰巡歌\",\n\t\"polar-star\": \"冬极白星\",\n\t\"portable-power-saw\": \"便携动力锯\",\n\t\"primordial-jade-cutter\": \"磐岩结绿\",\n\t\"primordial-jade-winged-spear\": \"和璞鸢\",\n\t\"prospector-drill\": \"勘探钻机\",\n\t\"rainslasher\": \"雨裁\",\n\t\"range-gauge\": \"测距规\",\n\t\"raven-bow\": \"鸦羽弓\",\n\t\"redhorn-stonethresher\": \"赤角石溃杵\",\n\t\"reliquary-of-truth\": \"真语秘匣\",\n\t\"rust\": \"弓藏\",\n\t\"sacrificial-bow\": \"祭礼弓\",\n\t\"sacrificial-fragments\": \"祭礼残章\",\n\t\"sacrificial-greatsword\": \"祭礼大剑\",\n\t\"sacrificial-sword\": \"祭礼剑\",\n\t\"sacrificers-staff\": \"圣祭者的辉杖\",\n\t\"sharpshooter_s-oath\": \"神射手之誓\",\n\t\"silvershower-heartstrings\": \"白雨心弦\",\n\t\"skyrider-sword\": \"飞天御剑\",\n\t\"skyward-atlas\": \"天空之卷\",\n\t\"skyward-blade\": \"天空之刃\",\n\t\"skyward-harp\": \"天空之翼\",\n\t\"skyward-pride\": \"天空之傲\",\n\t\"skyward-spine\": \"天空之脊\",\n\t\"slingshot\": \"弹弓\",\n\t\"song-of-broken-pines\": \"松籁响起之时\",\n\t\"splendor-of-tranquil-waters\": \"静水流涌之辉\",\n\t\"staff-of-homa\": \"护摩之杖\",\n\t\"staff-of-the-scarlet-sands\": \"赤沙之杖\",\n\t\"starcallers-watch\": \"祭星者之望\",\n\t\"sturdy-bone\": \"弥坚骨\",\n\t\"summit-shaper\": \"斫峰之刃\",\n\t\"sunny-morning-sleep-in\": \"寝正月初晴\",\n\t\"surfs-up\": \"冲浪时光\",\n\t\"symphonist-of-scents\": \"香韵奏者\",\n\t\"the-alley-flash\": \"暗巷闪光\",\n\t\"the-bell\": \"钟剑\",\n\t\"the-daybreak-chronicles\": \"黎明破晓之史\",\n\t\"the-dockhands-assistant\": \"船坞长剑\",\n\t\"the-first-great-magic\": \"最初的大魔术\",\n\t\"the-flute\": \"笛剑\",\n\t\"the-stringless\": \"绝弦\",\n\t\"the-unforged\": \"无工之剑\",\n\t\"the-widsith\": \"流浪乐章\",\n\t\"thrilling-tales-of-dragon-slayers\": \"讨龙英杰谭\",\n\t\"thundering-pulse\": \"飞雷之弦振\",\n\t\"tome-of-the-eternal-flow\": \"万世流涌大典\",\n\t\"tulaytullah_s-remembrance\": \"图莱杜拉的回忆\",\n\t\"uraku-misugiri\": \"有乐御簾切\",\n\t\"verdict\": \"裁断\",\n\t\"vivid-notions\": \"溢彩心念\",\n\t\"vortex-vanquisher\": \"贯虹之槊\",\n\t\"wavebreaker_s-fin\": \"断浪长鳍\",\n\t\"wandering-evenstar\": \"流浪的晚星\",\n\t\"waveriding-whirl\": \"乘浪的回旋\",\n\t\"wine-and-song\": \"暗巷的酒与诗\",\n\t\"wolf_s-gravestone\": \"狼的末路\",\n\t\"xiphos-moonlight\": \"西福斯的月光\",\n\t\"aino\": {\n\t\t\"name\": \"爱诺\",\n\t\t\"title\": \"妙械咣咣铛\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"阿贝多\",\n\t\t\"title\": \"白垩之子\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"艾尔海森\",\n\t\t\"title\": \"诲韬诤言\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"安柏\",\n\t\t\"title\": \"飞行冠军\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"荒泷一斗\",\n\t\t\"title\": \"花坂豪快\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"阿蕾奇诺\",\n\t\t\"title\": \"孤暝厄月\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"白术\",\n\t\t\"title\": \"遵生合和\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"芭芭拉\",\n\t\t\"title\": \"闪耀偶像\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"北斗\",\n\t\t\"title\": \"无冕的龙王\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"班尼特\",\n\t\t\"title\": \"命运试金石\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"坎蒂丝\",\n\t\t\"title\": \"浮金的誓愿\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"夏洛蒂\",\n\t\t\"title\": \"朗镜索真\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"恰斯卡\",\n\t\t\"title\": \"巡宇翦定\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"夏沃蕾\",\n\t\t\"title\": \"明律决罚\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"千织\",\n\t\t\"title\": \"鸣雷的裁锦师\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"重云\",\n\t\t\"title\": \"雪融有踪\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"茜特菈莉\",\n\t\t\"title\": \"白星黑曜\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"克洛琳德\",\n\t\t\"title\": \"秉烛狝影\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"柯莱\",\n\t\t\"title\": \"萃念初蘖\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"哥伦比娅\",\n\t\t\"title\": \"空月归乡\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"赛诺\",\n\t\t\"title\": \"缄秘的裁遣\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"塔利雅\",\n\t\t\"title\": \"颂礼祝祭\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"迪希雅\",\n\t\t\"title\": \"炽鬃之狮\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"迪卢克\",\n\t\t\"title\": \"晨曦的暗面\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"迪奥娜\",\n\t\t\"title\": \"猫尾特调\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"多莉\",\n\t\t\"title\": \"梦园藏金\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"杜林\",\n\t\t\"title\": \"「不熄灭的火」\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"艾梅莉埃\",\n\t\t\"title\": \"千缕之踪\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"爱可菲\",\n\t\t\"title\": \"明绚千韵\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"优菈\",\n\t\t\"title\": \"浪沫的旋舞\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"珐露珊\",\n\t\t\"title\": \"机逐封秘\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"菲谢尔\",\n\t\t\"title\": \"断罪皇女！！\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"菲林斯\",\n\t\t\"title\": \"诡灯陌影\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"菲米尼\",\n\t\t\"title\": \"潜怀遐梦\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"芙宁娜\",\n\t\t\"title\": \"不休独舞\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"嘉明\",\n\t\t\"title\": \"骏猊頕首\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"甘雨\",\n\t\t\"title\": \"循循守月\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"五郎\",\n\t\t\"title\": \"戎犬锵锵\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"胡桃\",\n\t\t\"title\": \"雪霁梅香\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"伊安珊\",\n\t\t\"title\": \"熔石百炼\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"伊法\",\n\t\t\"title\": \"蔚风引灵\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"叶洛亚\",\n\t\t\"title\": \"魇夜燃芯\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"伊涅芙\",\n\t\t\"title\": \"轰隆雷鸣波\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"雅珂达\",\n\t\t\"title\": \"系风攘影\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"琴\",\n\t\t\"title\": \"蒲公英骑士\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"卡齐娜\",\n\t\t\"title\": \"斑金矿朴\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"枫原万叶\",\n\t\t\"title\": \"红叶逐荒波\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"凯亚\",\n\t\t\"title\": \"寒风剑士\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"神里绫华\",\n\t\t\"title\": \"白鹭霜华\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"神里绫人\",\n\t\t\"title\": \"磐祭叶守\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"刻晴\",\n\t\t\"title\": \"霆霓快雨\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"基尼奇\",\n\t\t\"title\": \"回火之狩\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"可莉\",\n\t\t\"title\": \"逃跑的太阳\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"绮良良\",\n\t\t\"title\": \"檐宇猫游\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"卡维\",\n\t\t\"title\": \"天穹之镜\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"九条裟罗\",\n\t\t\"title\": \"黑羽鸣镝\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"久岐忍\",\n\t\t\"title\": \"烦恼刈除\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"蓝砚\",\n\t\t\"title\": \"翦玉编春\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"菈乌玛\",\n\t\t\"title\": \"永月的祀歌\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"莱依拉\",\n\t\t\"title\": \"绮思晚星\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"莉奈娅\",\n\t\t\"title\": \"博闻异旅\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"丽莎\",\n\t\t\"title\": \"蔷薇魔女\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"琳妮特\",\n\t\t\"title\": \"丽影绮行\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"林尼\",\n\t\t\"title\": \"惑光幻戏\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"玛薇卡\",\n\t\t\"title\": \"焚夜以炎\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"米卡\",\n\t\t\"title\": \"晴霜的标绘\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"莫娜\",\n\t\t\"title\": \"星天水镜\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"玛拉妮\",\n\t\t\"title\": \"哗啦啦逐浪客\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"纳西妲\",\n\t\t\"title\": \"白草净华\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"娜维娅\",\n\t\t\"title\": \"明花蔓舵\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"奈芙尔\",\n\t\t\"title\": \"湮沙的秘闻\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"那维莱特\",\n\t\t\"title\": \"谕告的潮音\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"妮露\",\n\t\t\"title\": \"莲光落舞筵\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"凝光\",\n\t\t\"title\": \"掩月天权\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"诺艾尔\",\n\t\t\"title\": \"未受勋之花\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"欧洛伦\",\n\t\t\"title\": \"深黯的谜烟\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"七七\",\n\t\t\"title\": \"冻冻回魂夜\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"雷电将军\",\n\t\t\"title\": \"一心净土\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"雷泽\",\n\t\t\"title\": \"狼少年\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"罗莎莉亚\",\n\t\t\"title\": \"棘冠恩典\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"珊瑚宫心海\",\n\t\t\"title\": \"真珠之智\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"早柚\",\n\t\t\"title\": \"忍里之貉\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"赛索斯\",\n\t\t\"title\": \"衡明知度\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"申鹤\",\n\t\t\"title\": \"孤辰茕怀\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"鹿野院平藏\",\n\t\t\"title\": \"心朝乂安\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"希格雯\",\n\t\t\"title\": \"龙女妙变\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"丝柯克\",\n\t\t\"title\": \"虚渊暗星\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"砂糖\",\n\t\t\"title\": \"无害甜度\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"达达利亚\",\n\t\t\"title\": \"「公子」\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"托马\",\n\t\t\"title\": \"渡来介者\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"提纳里\",\n\t\t\"title\": \"浅蔚轻行\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"瓦雷莎\",\n\t\t\"title\": \"悠暇豪劲\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"法尔伽\",\n\t\t\"title\": \"北风骑士\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"温迪\",\n\t\t\"title\": \"风色诗人\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"流浪者\",\n\t\t\"title\": \"久世浮倾\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"莱欧斯利\",\n\t\t\"title\": \"寂罪的密使\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"香菱\",\n\t\t\"title\": \"万民百味\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"闲云\",\n\t\t\"title\": \"鸾音鹤信\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"魈\",\n\t\t\"title\": \"护法夜叉\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"希諾寧\",\n\t\t\"title\": \"焮火鑄魂\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"行秋\",\n\t\t\"title\": \"少年春衫薄\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"辛焱\",\n\t\t\"title\": \"燥热旋律\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"八重神子\",\n\t\t\"title\": \"浮世笑百姿\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"烟绯\",\n\t\t\"title\": \"智明无邪\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"瑶瑶\",\n\t\t\"title\": \"仙蕊玲珑\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"夜兰\",\n\t\t\"title\": \"兰生幽谷\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"宵宫\",\n\t\t\"title\": \"琉焰华舞\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"梦见月瑞希\",\n\t\t\"title\": \"绮梦缱绻\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"云堇\",\n\t\t\"title\": \"红毹婵娟\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"钟离\",\n\t\t\"title\": \"尘世闲游\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"兹白\",\n\t\t\"title\": \"驹隙隐泉\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/items/zh-TW.json",
    "content": "{\n\t\"a-thousand-blazing-suns\": \"焚曜千陽\",\n\t\"a-thousand-floating-dreams\": \"千夜浮夢\",\n\t\"absolution\": \"赦罪\",\n\t\"akuoumaru\": \"惡王丸\",\n\t\"alley-hunter\": \"暗巷獵手\",\n\t\"amos-bow\": \"阿莫斯之弓\",\n\t\"astral-vultures-crimson-plumage\": \"星鷲赤羽\",\n\t\"aqua-simulacra\": \"若水\",\n\t\"aquila-favonia\": \"風鷹劍\",\n\t\"athame-artis\": \"黑蝕\",\n\t\"azurelight\": \"蒼耀\",\n\t\"beacon-of-the-reed-sea\": \"葦海信標\",\n\t\"black-tassel\": \"黑纓槍\",\n\t\"bloodsoaked-ruins\": \"血染荒城\",\n\t\"bloodtained-greatsword\": \"沐浴龍血的劍\",\n\t\"calamity-queller\": \"息災\",\n\t\"cashflow-supervision\": \"金流監督\",\n\t\"cool-steel\": \"冷刃\",\n\t\"cranes-echoing-call\": \"鶴鳴餘音\",\n\t\"crimson_moon_s-semblance\": \"赤月之形\",\n\t\"dawning-frost\": \"霜辰\",\n\t\"debate-club\": \"以理服人\",\n\t\"dragon_s-bane\": \"匣裡滅辰\",\n\t\"elegy-for-the-end\": \"終末嗟嘆之詩\",\n\t\"emerald-orb\": \"翡玉法球\",\n\t\"engulfing-lightning\": \"薙草之稻光\",\n\t\"everlasting-moonglow\": \"不滅月華\",\n\t\"eye-of-perception\": \"昭心\",\n\t\"fang-of-the-mountain-king\": \"山王長牙\",\n\t\"favonius-codex\": \"西風秘典\",\n\t\"favonius-greatsword\": \"西風大劍\",\n\t\"favonius-lance\": \"西風長槍\",\n\t\"favonius-sword\": \"西風劍\",\n\t\"favonius-warbow\": \"西風獵弓\",\n\t\"ferrous-shadow\": \"鐵影闊劍\",\n\t\"flower-wreathed-feathers\": \"綴花之翎\",\n\t\"fractured-halo\": \"支離輪光\",\n\t\"freedom-sworn\": \"蒼古自由之誓\",\n\t\"fruitful-hook\": \"碩果鉤\",\n\t\"gest-of-the-mighty-wolf\": \"狼的武功歌\",\n\t\"golden-frostbound-oath\": \"霜結的誓金枝\",\n\t\"haran-geppaku-futsu\": \"波乱月白经津\",\n\t\"harbinger-of-dawn\": \"黎明神劍\",\n\t\"hunter_s-path\": \"獵人之徑\",\n\t\"jadefall-splendor\": \"碧落之瓏\",\n\t\"kagura_s-verity\": \"神樂之真意\",\n\t\"key-of-khaj-nisut\": \"聖顯之鑰\",\n\t\"lightbearing-moonshard\": \"朏魄含光\",\n\t\"lion_s-roar\": \"匣裡龍吟\",\n\t\"light-of-foliar-incision\": \"裁葉萃光\",\n\t\"lithic-blade\": \"千巖古劍\",\n\t\"lithic-spear\": \"千巖長槍\",\n\t\"lost-prayer-to-the-sacred-winds\": \"四風原典\",\n\t\"lumidouce-elegy\": \"柔燈輓歌\",\n\t\"magic-guide\": \"魔導緒論\",\n\t\"makhaira-aquamarine\": \"瑪海菈的水色\",\n\t\"memory-of-dust\": \"塵世之鎖\",\n\t\"mistsplitter-reforged\": \"霧切之迴光\",\n\t\"mitternachts-waltz\": \"幽夜華爾滋\",\n\t\"moonweavers-dawn\": \"織月者的曙色\",\n\t\"mountain-bracing-bolt\": \"鎮山之釘\",\n\t\"mouun_s-moon\": \"曚雲之月\",\n\t\"nightweavers-looking-glass\": \"紡夜天鏡\",\n\t\"nocturnes-curtain-call\": \"帷間夜曲\",\n\t\"peak-patrol-song\": \"岩峰巡歌\",\n\t\"polar-star\": \"冬極白星\",\n\t\"portable-power-saw\": \"便攜動力鋸\",\n\t\"primordial-jade-cutter\": \"磐岩結綠\",\n\t\"primordial-jade-winged-spear\": \"和璞鳶\",\n\t\"prospector-drill\": \"探勘鑽孔機\",\n\t\"rainslasher\": \"雨裁\",\n\t\"range-gauge\": \"測距規\",\n\t\"raven-bow\": \"鴉羽弓\",\n\t\"redhorn-stonethresher\": \"赤角石潰杵\",\n\t\"reliquary-of-truth\": \"真語秘匣\",\n\t\"rust\": \"弓藏\",\n\t\"sacrificial-bow\": \"祭禮弓\",\n\t\"sacrificial-fragments\": \"祭禮殘章\",\n\t\"sacrificial-greatsword\": \"祭禮大劍\",\n\t\"sacrificial-sword\": \"祭禮劍\",\n\t\"sacrificers-staff\": \"聖祭者的輝杖\",\n\t\"sharpshooter_s-oath\": \"神射手之誓\",\n\t\"silvershower-heartstrings\": \"白雨心弦\",\n\t\"skyrider-sword\": \"飛天禦劍\",\n\t\"skyward-atlas\": \"天空之卷\",\n\t\"skyward-blade\": \"天空之刃\",\n\t\"skyward-harp\": \"天空之翼\",\n\t\"skyward-pride\": \"天空之傲\",\n\t\"skyward-spine\": \"天空之脊\",\n\t\"slingshot\": \"彈弓\",\n\t\"song-of-broken-pines\": \"松籟響起之時\",\n\t\"splendor-of-tranquil-waters\": \"靜水流湧之輝\",\n\t\"staff-of-homa\": \"護摩之杖\",\n\t\"staff-of-the-scarlet-sands\": \"赤沙之杖\",\n\t\"starcallers-watch\": \"祭星者之望\",\n\t\"sturdy-bone\": \"彌堅骨\",\n\t\"summit-shaper\": \"斫峰之刃\",\n\t\"sunny-morning-sleep-in\": \"寢正月初晴\",\n\t\"surfs-up\": \"衝浪時光\",\n\t\"symphonist-of-scents\": \"香韻奏者\",\n\t\"the-alley-flash\": \"暗巷閃光\",\n\t\"the-bell\": \"鐘劍\",\n\t\"the-daybreak-chronicles\": \"黎明破曉之史\",\n\t\"the-dockhands-assistant\": \"船塢長劍\",\n\t\"the-first-great-magic\": \"最初的大魔術\",\n\t\"the-flute\": \"笛劍\",\n\t\"the-stringless\": \"絕弦\",\n\t\"the-unforged\": \"無工之劍\",\n\t\"the-widsith\": \"流浪樂章\",\n\t\"thrilling-tales-of-dragon-slayers\": \"討龍英傑譚\",\n\t\"thundering-pulse\": \"飛雷之弦振\",\n\t\"tome-of-the-eternal-flow\": \"久遠龍天百科全書\",\n\t\"tulaytullah_s-remembrance\": \"圖萊拉拉的回憶\",\n\t\"uraku-misugiri\": \"有樂御簾切\",\n\t\"verdict\": \"裁斷\",\n\t\"vivid-notions\": \"溢彩心念\",\n\t\"vortex-vanquisher\": \"貫虹之槊\",\n\t\"wavebreaker_s-fin\": \"斷浪長鰭\",\n\t\"wandering-evenstar\": \"流浪的晚星\",\n\t\"waveriding-whirl\": \"乘浪的迴旋\",\n\t\"wine-and-song\": \"暗巷的酒與詩\",\n\t\"wolf_s-gravestone\": \"狼的末路\",\n\t\"xiphos-moonlight\": \"西福斯的月光\",\n\t\"aino\": {\n\t\t\"name\": \"愛諾\",\n\t\t\"title\": \"妙械咣咣鐺\"\n\t},\n\t\"albedo\": {\n\t\t\"name\": \"阿貝多\",\n\t\t\"title\": \"白堊之子\"\n\t},\n\t\"alhaitham\": {\n\t\t\"name\": \"艾爾海森\",\n\t\t\"title\": \"誨韜詤言\"\n\t},\n\t\"amber\": {\n\t\t\"name\": \"安柏\",\n\t\t\"title\": \"飛行冠軍\"\n\t},\n\t\"arataki-itto\": {\n\t\t\"name\": \"荒瀧一斗\",\n\t\t\"title\": \"花坂豪快\"\n\t},\n\t\"arlecchino\": {\n\t\t\"name\": \"阿蕾奇諾\",\n\t\t\"title\": \"孤暝厄月\"\n\t},\n\t\"baizhu\": {\n\t\t\"name\": \"白术\",\n\t\t\"title\": \"遵生合和\"\n\t},\n\t\"barbara\": {\n\t\t\"name\": \"芭芭拉\",\n\t\t\"title\": \"閃耀偶像\"\n\t},\n\t\"beidou\": {\n\t\t\"name\": \"北斗\",\n\t\t\"title\": \"無冕的龍王\"\n\t},\n\t\"bennett\": {\n\t\t\"name\": \"班尼特\",\n\t\t\"title\": \"命運試金石\"\n\t},\n\t\"candace\": {\n\t\t\"name\": \"坎蒂絲\",\n\t\t\"title\": \"浮金的誓願\"\n\t},\n\t\"charlotte\": {\n\t\t\"name\": \"夏洛蒂\",\n\t\t\"title\": \"朗鏡索真\"\n\t},\n\t\"chasca\": {\n\t\t\"name\": \"恰斯卡\",\n\t\t\"title\": \"巡宇翦定\"\n\t},\n\t\"chevreuse\": {\n\t\t\"name\": \"夏沃蕾\",\n\t\t\"title\": \"明律決罰\"\n\t},\n\t\"chiori\": {\n\t\t\"name\": \"千織\",\n\t\t\"title\": \"鳴雷的裁錦師\"\n\t},\n\t\"chongyun\": {\n\t\t\"name\": \"重雲\",\n\t\t\"title\": \"雪融有踪\"\n\t},\n\t\"citlali\": {\n\t\t\"name\": \"茜特菈莉\",\n\t\t\"title\": \"白星黑曜\"\n\t},\n\t\"clorinde\": {\n\t\t\"name\": \"克洛琳德\",\n\t\t\"title\": \"秉燭獮影\"\n\t},\n\t\"collei\": {\n\t\t\"name\": \"柯萊\",\n\t\t\"title\": \"萃念初蘗\"\n\t},\n\t\"columbina\": {\n\t\t\"name\": \"哥倫比婭\",\n\t\t\"title\": \"空月歸鄉\"\n\t},\n\t\"cyno\": {\n\t\t\"name\": \"賽諾\",\n\t\t\"title\": \"緘秘的裁遣\"\n\t},\n\t\"dahlia\": {\n\t\t\"name\": \"塔利雅\",\n\t\t\"title\": \"頌禮祝祭\"\n\t},\n\t\"dehya\": {\n\t\t\"name\": \"迪希雅\",\n\t\t\"title\": \"熾鬃之獅\"\n\t},\n\t\"diluc\": {\n\t\t\"name\": \"迪盧克\",\n\t\t\"title\": \"晨曦的暗面\"\n\t},\n\t\"diona\": {\n\t\t\"name\": \"迪奧娜\",\n\t\t\"title\": \"貓尾特調\"\n\t},\n\t\"dori\": {\n\t\t\"name\": \"多莉\",\n\t\t\"title\": \"夢園藏金\"\n\t},\n\t\"durin\": {\n\t\t\"name\": \"杜林\",\n\t\t\"title\": \"「不熄滅的火」\"\n\t},\n\t\"emilie\": {\n\t\t\"name\": \"艾梅莉埃\",\n\t\t\"title\": \"千縷之蹤\"\n\t},\n\t\"escoffier\": {\n\t\t\"name\": \"愛可菲\",\n\t\t\"title\": \"明絢千韻\"\n\t},\n\t\"eula\": {\n\t\t\"name\": \"優菈\",\n\t\t\"title\": \"浪沫的旋舞\"\n\t},\n\t\"faruzan\": {\n\t\t\"name\": \"琺露珊\",\n\t\t\"title\": \"機逐封秘\"\n\t},\n\t\"fischl\": {\n\t\t\"name\": \"菲謝爾\",\n\t\t\"title\": \"断罪皇女！！\"\n\t},\n\t\"flins\": {\n\t\t\"name\": \"菲林斯\",\n\t\t\"title\": \"詭燈陌影\"\n\t},\n\t\"freminet\": {\n\t\t\"name\": \"菲米尼\",\n\t\t\"title\": \"潛懷遐夢\"\n\t},\n\t\"furina\": {\n\t\t\"name\": \"芙寧娜\",\n\t\t\"title\": \"不休獨舞\"\n\t},\n\t\"gaming\": {\n\t\t\"name\": \"嘉明\",\n\t\t\"title\": \"駿猊頕首\"\n\t},\n\t\"ganyu\": {\n\t\t\"name\": \"甘雨\",\n\t\t\"title\": \"循循守月\"\n\t},\n\t\"gorou\": {\n\t\t\"name\": \"五郎\",\n\t\t\"title\": \"戎犬锵锵\"\n\t},\n\t\"hu-tao\": {\n\t\t\"name\": \"胡桃\",\n\t\t\"title\": \"雪霽梅香\"\n\t},\n\t\"iansan\": {\n\t\t\"name\": \"伊安珊\",\n\t\t\"title\": \"熔石百煉\"\n\t},\n\t\"ifa\": {\n\t\t\"name\": \"伊法\",\n\t\t\"title\": \"蔚風引靈\"\n\t},\n\t\"illuga\": {\n\t\t\"name\": \"葉洛亞\",\n\t\t\"title\": \"魘夜燃芯\"\n\t},\n\t\"ineffa\": {\n\t\t\"name\": \"伊涅芙\",\n\t\t\"title\": \"轟隆雷鳴波\"\n\t},\n\t\"jahoda\": {\n\t\t\"name\": \"雅珂達\",\n\t\t\"title\": \"系風攘影\"\n\t},\n\t\"jean\": {\n\t\t\"name\": \"琴\",\n\t\t\"title\": \"蒲公英騎士\"\n\t},\n\t\"kachina\": {\n\t\t\"name\": \"卡齊娜\",\n\t\t\"title\": \"斑金礦樸\"\n\t},\n\t\"kaedehara-kazuha\": {\n\t\t\"name\": \"楓原萬葉\",\n\t\t\"title\": \"紅葉逐荒波\"\n\t},\n\t\"kaeya\": {\n\t\t\"name\": \"凱亞\",\n\t\t\"title\": \"寒風劍士\"\n\t},\n\t\"kamisato-ayaka\": {\n\t\t\"name\": \"神里綾華\",\n\t\t\"title\": \"白鷺霜華\"\n\t},\n\t\"kamisato-ayato\": {\n\t\t\"name\": \"神里绫人\",\n\t\t\"title\": \"磐祭葉守\"\n\t},\n\t\"keqing\": {\n\t\t\"name\": \"刻晴\",\n\t\t\"title\": \"霆霓快雨\"\n\t},\n\t\"kinich\": {\n\t\t\"name\": \"基尼奇\",\n\t\t\"title\": \"回火之狩\"\n\t},\n\t\"klee\": {\n\t\t\"name\": \"可莉\",\n\t\t\"title\": \"逃跑的太陽\"\n\t},\n\t\"kirara\": {\n\t\t\"name\": \"绮良良\",\n\t\t\"title\": \"檐宇猫游\"\n\t},\n\t\"kaveh\": {\n\t\t\"name\": \"卡维\",\n\t\t\"title\": \"天穹之鏡\"\n\t},\n\t\"kujou-sara\": {\n\t\t\"name\": \"九條裟羅\",\n\t\t\"title\": \"黑羽鳴鏑\"\n\t},\n\t\"kuki-shinobu\": {\n\t\t\"name\": \"久岐忍\",\n\t\t\"title\": \"煩惱刈除\"\n\t},\n\t\"lan-yan\": {\n\t\t\"name\": \"藍硯\",\n\t\t\"title\": \"翦玉編春\"\n\t},\n\t\"lauma\": {\n\t\t\"name\": \"菈烏瑪\",\n\t\t\"title\": \"永月的祀歌\"\n\t},\n\t\"layla\": {\n\t\t\"name\": \"萊依拉\",\n\t\t\"title\": \"綺思晚星\"\n\t},\n\t\"linnea\": {\n\t\t\"name\": \"莉奈婭\",\n\t\t\"title\": \"博聞異旅\"\n\t},\n\t\"lisa\": {\n\t\t\"name\": \"麗莎\",\n\t\t\"title\": \"蔷薇魔女\"\n\t},\n\t\"lynette\": {\n\t\t\"name\": \"琳妮特\",\n\t\t\"title\": \"麗影騎行\"\n\t},\n\t\"lyney\": {\n\t\t\"name\": \"林尼\",\n\t\t\"title\": \"惑光幻戲\"\n\t},\n\t\"mavuika\": {\n\t\t\"name\": \"瑪薇卡\",\n\t\t\"title\": \"焚夜以炎\"\n\t},\n\t\"mika\": {\n\t\t\"name\": \"米卡\",\n\t\t\"title\": \"晴霜的標繪\"\n\t},\n\t\"mona\": {\n\t\t\"name\": \"莫娜\",\n\t\t\"title\": \"星天水镜\"\n\t},\n\t\"mualani\": {\n\t\t\"name\": \"瑪拉妮\",\n\t\t\"title\": \"嘩啦啦逐浪客\"\n\t},\n\t\"nahida\": {\n\t\t\"name\": \"納西妲\",\n\t\t\"title\": \"白草淨華\"\n\t},\n\t\"navia\": {\n\t\t\"name\": \"娜維婭\",\n\t\t\"title\": \"明花蔓舵\"\n\t},\n\t\"nefer\": {\n\t\t\"name\": \"奈芙爾\",\n\t\t\"title\": \"湮沙的秘聞\"\n\t},\n\t\"neuvillette\": {\n\t\t\"name\": \"那維萊特\",\n\t\t\"title\": \"諭告的潮音\"\n\t},\n\t\"nilou\": {\n\t\t\"name\": \"妮露\",\n\t\t\"title\": \"蓮光落舞筵\"\n\t},\n\t\"ningguang\": {\n\t\t\"name\": \"凝光\",\n\t\t\"title\": \"掩月天權\"\n\t},\n\t\"noelle\": {\n\t\t\"name\": \"諾艾爾\",\n\t\t\"title\": \"未受勳之花\"\n\t},\n\t\"ororon\": {\n\t\t\"name\": \"歐洛倫\",\n\t\t\"title\": \"深黯的謎煙\"\n\t},\n\t\"qiqi\": {\n\t\t\"name\": \"七七\",\n\t\t\"title\": \"凍凍回魂夜\"\n\t},\n\t\"raiden-shogun\": {\n\t\t\"name\": \"雷電將軍\",\n\t\t\"title\": \"一心淨土\"\n\t},\n\t\"razor\": {\n\t\t\"name\": \"雷澤\",\n\t\t\"title\": \"狼少年\"\n\t},\n\t\"rosaria\": {\n\t\t\"name\": \"羅莎莉麗\",\n\t\t\"title\": \"棘冠恩典\"\n\t},\n\t\"sangonomiya-kokomi\": {\n\t\t\"name\": \"珊瑚宫心海\",\n\t\t\"title\": \"真珠之智\"\n\t},\n\t\"sayu\": {\n\t\t\"name\": \"早柚\",\n\t\t\"title\": \"忍里之貉\"\n\t},\n\t\"sethos\": {\n\t\t\"name\": \"賽索斯\",\n\t\t\"title\": \"衡明知度\"\n\t},\n\t\"shenhe\": {\n\t\t\"name\": \"申鹤\",\n\t\t\"title\": \"孤辰煢懷\"\n\t},\n\t\"shikanoin-heizou\": {\n\t\t\"name\": \"鹿野院平藏\",\n\t\t\"title\": \"心朝乂安\"\n\t},\n\t\"sigewinne\": {\n\t\t\"name\": \"希格雯\",\n\t\t\"title\": \"龍女妙變\"\n\t},\n\t\"skirk\": {\n\t\t\"name\": \"絲柯克\",\n\t\t\"title\": \"虛淵暗星\"\n\t},\n\t\"sucrose\": {\n\t\t\"name\": \"砂糖\",\n\t\t\"title\": \"無害甜度\"\n\t},\n\t\"tartaglia\": {\n\t\t\"name\": \"達達利亞\",\n\t\t\"title\": \"「公子」\"\n\t},\n\t\"thoma\": {\n\t\t\"name\": \"托馬\",\n\t\t\"title\": \"渡來介者\"\n\t},\n\t\"tighnari\": {\n\t\t\"name\": \"渡來介者\",\n\t\t\"title\": \"淺蔚輕行\"\n\t},\n\t\"varesa\": {\n\t\t\"name\": \"瓦雷莎\",\n\t\t\"title\": \"悠暇豪勁\"\n\t},\n\t\"varka\": {\n\t\t\"name\": \"法爾伽\",\n\t\t\"title\": \"北風騎士\"\n\t},\n\t\"venti\": {\n\t\t\"name\": \"溫迪\",\n\t\t\"title\": \"風色詩人\"\n\t},\n\t\"wanderer\": {\n\t\t\"name\": \"流浪者\",\n\t\t\"title\": \"久世浮倾\"\n\t},\n\t\"wriothesley\": {\n\t\t\"name\": \"萊歐斯利\",\n\t\t\"title\": \"寂罪的密使\"\n\t},\n\t\"xiangling\": {\n\t\t\"name\": \"香菱\",\n\t\t\"title\": \"萬民百味\"\n\t},\n\t\"xianyun\": {\n\t\t\"name\": \"閒雲\",\n\t\t\"title\": \"鸞音鶴信\"\n\t},\n\t\"xiao\": {\n\t\t\"name\": \"魈\",\n\t\t\"title\": \"護法夜叉\"\n\t},\n\t\"xilonen\": {\n\t\t\"name\": \"希諾寧\",\n\t\t\"title\": \"焮火鑄魂\"\n\t},\n\t\"xingqiu\": {\n\t\t\"name\": \"行秋\",\n\t\t\"title\": \"少年春衫薄\"\n\t},\n\t\"xinyan\": {\n\t\t\"name\": \"辛焱\",\n\t\t\"title\": \"燥熱旋律\"\n\t},\n\t\"yae-miko\": {\n\t\t\"name\": \"八重神子\",\n\t\t\"title\": \"浮世笑百姿\"\n\t},\n\t\"yanfei\": {\n\t\t\"name\": \"煙緋\",\n\t\t\"title\": \"智明無邪\"\n\t},\n\t\"yaoyao\": {\n\t\t\"name\": \"瑶瑶\",\n\t\t\"title\": \"仙蕊玲瓏\"\n\t},\n\t\"yelan\": {\n\t\t\"name\": \"夜蘭\",\n\t\t\"title\": \"蘭生幽谷\"\n\t},\n\t\"yoimiya\": {\n\t\t\"name\": \"宵宫\",\n\t\t\"title\": \"琉焰華舞\"\n\t},\n\t\"yumemizuki-mizuki\": {\n\t\t\"name\": \"夢見月瑞希\",\n\t\t\"title\": \"綺夢繾綣\"\n\t},\n\t\"yun-jin\": {\n\t\t\"name\": \"雲堇\",\n\t\t\"title\": \"紅毹嬋娟\"\n\t},\n\t\"zhongli\": {\n\t\t\"name\": \"鍾離\",\n\t\t\"title\": \"塵世閒遊\"\n\t},\n\t\"zibai\": {\n\t\t\"name\": \"茲白\",\n\t\t\"title\": \"駒隙隱泉\"\n\t}\n}\n"
  },
  {
    "path": "src/locales/ja-JP.json",
    "content": "{\n\t\"title\": \"原神祈願シミュ\",\n\t\"item\": \"アイテム\",\n\t\"character\": \"キャラクター\",\n\t\"weapon\": \"武器\",\n\t\"vision\": \"神の目\",\n\t\"anemo\": \"風\",\n\t\"cryo\": \"氷\",\n\t\"dendro\": \"草\",\n\t\"electro\": \"雷\",\n\t\"hydro\": \"水\",\n\t\"geo\": \"岩\",\n\t\"pyro\": \"炎\",\n\t\"bow\": \"弓\",\n\t\"catalyst\": \"法器\",\n\t\"claymore\": \"両手剣\",\n\t\"sword\": \"片手剣\",\n\t\"polearm\": \"長柄武器\",\n\t\"extra\": \"追加報酬\",\n\t\"obtained\": \"獲得\",\n\t\"waiting\": \"お待ちください\",\n\t\"connectionFailed\": \"接続失敗。モウイチドオタメシクダサイ\",\n\t\"confirmButton\": \"OK\",\n\t\"cancelButton\": \"キャンセル\",\n\t\"disclaimer\": \"このサイトで使用されているすべてのリソースはmiHoYoが所有しています。\",\n\t\"fanmade\": \"このアプリはファンメイドです。ゆっくりしていってね！\",\n\t\"pressToContinue\": \"空白部分をクリックして続行\",\n\t\"installInstruction\": \"ホーム画面/デスクトップへのインストール手順\",\n\t\"share\": \"シェア\",\n\t\"screenshot\": \"スクリーンショット\",\n\t\"capturing\": \"取得中\",\n\t\"rewardFirstShare\": \"初回シェア報酬 : {qty}\",\n\t\"version\": \"Ver.\",\n\t\"donate\": \"寄付\",\n\t\"banner\": {\n\t\t\"beginner\": \"初心者応援#祈願#\",\n\t\t\"wanderlust\": \"奔走#世間#\",\n\t\t\"epitome-invocation\": \"#神鋳#賦形\",\n\t\t\"ode-to-the-dawn-breeze\": \"#暁風#の詩\",\n\t\t\"adrift-in-the-harbor\": \"#逸俗#逡巡\",\n\t\t\"ambrosial-essence\": \"ひとしずくの#馨香#\",\n\t\t\"ancient-flame-ablaze\": \"古に宿る#烈炎#\",\n\t\t\"astral-actuation\": \"#新星#の駆動\",\n\t\t\"auric-blaze\": \"黄金を熔かす#烈日#\",\n\t\t\"azure-excursion\": \"花踏み歩む#蒼流#\",\n\t\t\"ballad-in-goblets\": \"#杯に#注がれた詩\",\n\t\t\"born-of-ocean-swell\": \"#波折り#の刹那\",\n\t\t\"caution-in-confidence\": \"#戒勅#枢策\",\n\t\t\"chanson-of-many-waters\": \"#衆の水#の頌歌\",\n\t\t\"conjuring-chiaroscuro\": \"#光と影#のトリック\",\n\t\t\"cornucopia-of-contention\": \"競争と#饗宴#\",\n\t\t\"dance-of-lantern\": \"#魚龍#灯昼\",\n\t\t\"dawns-drifting-reverie\": \"枕に夢む#朝顔#\",\n\t\t\"decree-of-the-deeps\": \"#淵海#に令する者\",\n\t\t\"dewlit-tranquility\": \"#ルキナ#のせせらぎ\",\n\t\t\"discerner-of-enigmas\": \"天を諜知せし#白袖#\",\n\t\t\"drifting-luminescence\": \"#海原#に浮かぶ虹珠\",\n\t\t\"everbloom-violet\": \"#華紫#櫻緋\",\n\t\t\"farewell-of-snezhnaya\": \"#冬国#との別れ\",\n\t\t\"forgefires-blessing\": \"#鍛火#の祝福\",\n\t\t\"from-ashes-reborn\": \"#残火#変相\",\n\t\t\"gentry-of-hermitage\": \"#大隠#朝市\",\n\t\t\"harmonious-abundance\": \"#豊穣#の要\",\n\t\t\"illuminating-lightning\": \"夜を穿つ#流霆#\",\n\t\t\"immaculate-pulse\": \"#心珠#循琅\",\n\t\t\"in-the-name-of-the-rosula\": \"#棘薔薇#の誓い\",\n\t\t\"invitation-to-mundane-life\": \"#灯宴#の招き\",\n\t\t\"la-chanson-cerise\": \"#苺色#のシャンソン\",\n\t\t\"leaves-in-the-wind\": \"辻風に舞う#落葉#\",\n\t\t\"moment-of-bloom\": \"#彼岸#満開\",\n\t\t\"moonsong-of-the-groves\": \"月に祈る#蒼樹#\",\n\t\t\"of-silken-clouds-woven\": \"#千の雲#で彩なす羽織\",\n\t\t\"oni_s-royale\": \"#鬼門#闘宴\",\n\t\t\"piercing-shots-crimson-wake\": \"紅を散らす#矢羽#\",\n\t\t\"reign-of-serenity\": \"#影寂#の天下人\",\n\t\t\"remembrance-of-jade-and-stone\": \"#玉岩#の憶\",\n\t\t\"romaritime-meluserenity\": \"ロマリタイム#ハート#\",\n\t\t\"roving-chalice-of-dewgrass\": \"#露と草#の盃\",\n\t\t\"rubedo-of-white-stone-born\": \"白より生まれ出づる#赤#\",\n\t\t\"sharktacular-surfari\": \"#波追い#のサメ\",\n\t\t\"secretum-secretorum\": \"#神秘#の生息\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#火を巡る#秘の狩り人\",\n\t\t\"somnias-a-luna\": \"#月#と共に眠る\",\n\t\t\"sparkling-steps\": \"#フレア#の訪れ\",\n\t\t\"starry-nights-whispers\": \"#星夜#のささやき\",\n\t\t\"tapestry-of-golden-flames\": \"天の川に咲きし#大輪#\",\n\t\t\"tempestuous-destiny\": \"#万劫#に渡る氾濫\",\n\t\t\"temptation-of-the-crimson-sands\": \"#赤砂#の誘惑\",\n\t\t\"the-crane-soars-skyward\": \"#雲府#飛鶴\",\n\t\t\"the-hearths-ashen-shadow\": \"炉傍の#残影#\",\n\t\t\"the-heron_s-court\": \"#白鷺#の庭\",\n\t\t\"the-lone-light-knocks-at-night\": \"夜に訪う#孤灯#\",\n\t\t\"the-moongrass-enlightenment\": \"叡智を恵む#月見草#\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#北風#の凱旋歌\",\n\t\t\"the-transcendent-one-returns\": \"塵世に戻りし#一鶴#\",\n\t\t\"thunder-rends-the-plains-on-high\": \"天を裂く#雷鳴#\",\n\t\t\"twilight-arbiter\": \"#冥昼#の裁定\",\n\t\t\"twirling-lotus\": \"優々たる#蓮歌の舞#\",\n\t\t\"viridescent-vigil\": \"深き森の#巡回者#\",\n\t\t\"void-stars-advent\": \"#虚星#の来臨\",\n\t\t\"ya-hoho-compendium\": \"#やっふー#博物誌\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner}  確率設定\",\n\t\t\"baseRate\": \"★{rarity} 基礎出現確率:\",\n\t\t\"maxPity\": \"★{rarity} 天井:\",\n\t\t\"hardPity\": \"★{rarity} 確率上昇が始まる祈願連数:\",\n\t\t\"currentPity\": \"★{rarity} 現在の天井カウント\",\n\t\t\"winRate\": \"ピックアップ獲得確率:\",\n\t\t\"charRate\": \"武器ではなくキャラを入手する確率\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(★4PUキャラを引けなかった場合)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"ピックアップ確定\",\n\t\t\"backToDefault\": \"初期設定に戻す\",\n\t\t\"resetPrompt\": \"<b>「{banner}」</b> の確率設定を初期設定に戻しますか？\",\n\t\t\"default\": \"デフォルト\",\n\t\t\"never\": \"なし\",\n\t\t\"always\": \"毎回\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"カスタム祈願\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"この祈願を削除してもよろしいですか？\",\n\t\t\"ownerDeleteNote\": \"この祈願を一般公開している場合，他の旅人はアクセスできなくなります。\",\n\t\t\"userDeleteNote\": \"この祈願の祈願履歴は削除されませんが，この祈願を再び引くことはできません。\",\n\t\t\"retry\": \"リトライ\",\n\t\t\"findBanner\": \"祈願を検索中です...\",\n\t\t\"networkError\": \"ネットワークエラー。接続を確認してください\",\n\t\t\"bannerNotFound\": \"祈願が見つかりません。<u>祈願ID</u>が間違っているか，作者が削除した可能性があります。\",\n\t\t\"invalidBanner\": \"無効な祈願ID\",\n\t\t\"identifying\": \"祈願の確認\",\n\t\t\"loadOwnedBanner\": \"あなたが「{ownedBanner}」の所有者である場合，一般公開したデータの代わりにローカルのデータが使用されます。\",\n\t\t\"loadReady\": \"「{banner}」の準備ができました\",\n\t\t\"uploading\": \"アップロード中：{item}\",\n\t\t\"uploadFailed\": \"画像のアップロードに失敗しました。後で再試行してください\",\n\t\t\"close\": \"閉じる\",\n\t\t\"almostDone\": \"ほぼ完了\",\n\t\t\"shareText\": \"私の{character}祈願シミュで運試しをしてみませんか？\",\n\t\t\"setPosition\": \"位置の確定\",\n\t\t\"next\": \"次へ\",\n\t\t\"move\": \"移動\",\n\t\t\"changeSplashArt\": \"スプラッシュ画像の変更\",\n\t\t\"adjustSplashArt\": \"スプラッシュ画像の調整\",\n\t\t\"dropHere\": \"ここにドラッグ\",\n\t\t\"preview\": \"祈願プレビュー\",\n\t\t\"generateImage\": \"イメージ生成\",\n\t\t\"notAnImage\": \"画像ではありません\",\n\t\t\"imageTooLarge\": \"画像が大きすぎます。最大サイズ：{maxSize}\",\n\t\t\"faceIcon\": \"顔アイコン\",\n\t\t\"addBanner\": \"祈願の追加\",\n\t\t\"delete\": \"消去\",\n\t\t\"deleteFailed\": \"消去に失敗\",\n\t\t\"bannerRemoved\": \"祈願は消去されました\",\n\t\t\"edit\": \"編集\",\n\t\t\"editInfo\": \"詳細を編集\",\n\t\t\"editBanner\": \"祈願情報の編集\",\n\t\t\"bannerName\": \"祈願の名前\",\n\t\t\"titleOfBanner\": \"祈願の #タイトル# を入力\",\n\t\t\"titleNote\": \"#_# に挟まれた文字はハイライトされます\",\n\t\t\"charName\": \"キャラクター名\",\n\t\t\"charTitle\": \"キャラクター二つ名\",\n\t\t\"watermark\": \"透かし\",\n\t\t\"completeAllField\": \"必須項目をすべて入力してください\",\n\t\t\"finishAndWish\": \"完了\",\n\t\t\"publish\": \"公開\",\n\t\t\"updateAndShare\": \"更新と共有\",\n\t\t\"rateupChar\": \"ピックアップキャラクター\",\n\t\t\"rateupNote\": \"一人以上を選択\",\n\t\t\"yourBanners\": \"My祈願\",\n\t\t\"createBanner\": \"カスタム祈願の作成\",\n\t\t\"limitation\": \"あなたはメンバーではありません。エディタを有効にするには，いくつかの祈願を削除してください。\",\n\t\t\"memberToUnlock\": \"会員になってより多くの祈願を追加\",\n\t\t\"incomplete\": \"未完成\",\n\t\t\"inappropriate\": \"不適切な内容です！\",\n\t\t\"lastSync\": \"最後の同期: {time}\",\n\t\t\"inactive\": \"非アクティブ\",\n\t\t\"unshared\": \"未シェア\",\n\t\t\"create\": \"祈願の作成\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"クラウド同期\",\n\t\t\"localSync\": \"ローカル保存/復元\",\n\t\t\"import\": \"インポート\",\n\t\t\"export\": \"エクスポート\",\n\t\t\"importAction\": \"{fileInfo}が追加されます。実行したいアクションを選択してください\",\n\t\t\"mergeAction\": \"データの統合 <small>重複する項目を自動的に削除し，新しい項目を挿入</small>\",\n\t\t\"replaceAction\": \"データの置換 <small>現在のデータを消去し，新しいデータに置換</small>\",\n\t\t\"dropFiles\": \"ここにドラッグ\",\n\t\t\"autoExport\": \"自動エクスポート\",\n\t\t\"destination\": \"宛先\",\n\t\t\"lastExport\": \"前回エクスポート\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"バックアップファイルの場所が見つかりません。もう一度エクスポートしてください\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"神鋳軌定\",\n\t\t\"fatePoint\": \"命定値\",\n\t\t\"confirm\": \"決定\",\n\t\t\"viewDetails\": \"詳細確認\",\n\t\t\"details\": \"詳細\",\n\t\t\"rules\": \"軌定の説明\",\n\t\t\"chartChronicled\": \"以下のキャラクターまたは武器から軌定対象を選択できます\",\n\t\t\"currentSelection\": \"選択中: ★5{itemType}祈願\",\n\t\t\"dropType\": \"祈願で獲得できる★5アイテムは、★5{itemType}のみです\",\n\t\t\"cancelPrompt\": \"現在の軌定をキャンセルしますか？\",\n\t\t\"cancelDesc\": \"キャンセルした場合、命定値はリセットされ再カウントされます。\",\n\t\t\"selectWeapon\": \"軌定された武器\",\n\t\t\"chartCourseOf\": \"{target}を軌定する\",\n\t\t\"cancelCourse\": \"軌定をキャンセル\",\n\t\t\"chartCourse\": \"軌定\",\n\t\t\"courseSetFor\": \"現在の軌定: {selectedCourse}\",\n\t\t\"setFor\": \"現在の軌定: \",\n\t\t\"notSetYet\": \"軌定対象を選んでいません\",\n\t\t\"description\": [\n\t\t\t\"「神鋳軌定」は今期の「神鋳賦形」での特殊仕様です。\",\n\t\t\t\"今期の「神鋳賦形」で、希望のピックアップ★5武器を軌定した後、祈願で<span>獲得した★5武器が軌定武器ではなかった場合、命定値を1点獲得します</span>。\",\n\t\t\t\"命定値が上限に達した時、次に今期の「神鋳賦形」で★5武器を獲得した場合、必ず現在の軌定武器を獲得できます。\",\n\t\t\t\"今期の「神鋳賦形」で、祈願で<span>「神鋳軌定」の武器を獲得した時、命定値がリセットされ再カウントされます</span>。\",\n\t\t\t\"「神鋳軌定」を使って武器を軌定していない場合、命定値は累計されません。\",\n\t\t\t\"武器の軌定状態を変更またはキャンセルすることができます。<span>現在の軌定武器を変更またはキャンセルした場合、命定値はリセットされ再カウントされます</span>。\",\n\t\t\t\"<span>今期の「神鋳賦形」が終了した後、命定値はリセットされます</span>。\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"「集録軌定」は、「集録祈願」における特殊な仕様です。\",\n\t\t\t\"「集録祈願」を始める前に、★5キャラクター祈願、または★5武器祈願から「集録軌定」の対象を選択してください。選択後、今期の「集録祈願」で獲得できるのは、<span>「集録軌定」の対象と同じタイプの★5祈願アイテムのみ</span>となります。\",\n\t\t\t\"今期の「集録祈願」で<span>獲得した★5キャラクター、または★5武器が軌定したものではなかった場合、命定値を1点獲得します</span>。\",\n\t\t\t\"命定値が上限に達すると、次に今期の「集録祈願」で★5キャラクター、または★5武器を獲得した時、必ず軌定したものを獲得できます。\",\n\t\t\t\"今期の「集録祈願」で、<span>「集録軌定」のキャラクター、または武器を獲得した時、命定値がリセットされ再カウントされます</span>。\",\n\t\t\t\"キャラクターや武器の軌定状態を変更またはキャンセルすることができます。<span>現在の軌定対象を変更またはキャンセルした場合、命定値はリセットされ再カウントされます</span>。\",\n\t\t\t\"<span>今期の「集録祈願」が終了した後、命定値はリセットされます</span>。\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"祈願\",\n\t\t\"rollButton\": \"{count}回祈願\",\n\t\t\"stellaFortuna\": \"該当キャラクターの星屑\",\n\t\t\"loadFailed\": \"祈願の読み込みに失敗しました! <br /> 他の祈願に切り替える、またはインターネットへの再接続をお試しください!\",\n\t\t\"loadMeteor\": \"ダウンロード\",\n\t\t\"skipMeteor\": \"スキップ\",\n\t\t\"loadMeteorMsg\": \"<span>星{star}祈願アニメーション</span>をダウンロード中\",\n\t\t\"meteorNotLoaded\": \"祈願アニメーションがストレージに見つかりません。スムーズな祈願のために、事前に<span>ダウンロード</span>するか、<span>祈願アニメーションのスキップをオン</span>にします\",\n\t\t\"preloadFilesMsg\": \"*読み込まれたファイルはブラウザストレージに保存されるため、サイトが更新されるまで再度読み込む必要はありません。\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"祈願\",\n\t\t\t\"allBanner\": \"全ての祈願\",\n\t\t\t\"previous\": \"過去の祈願一覧\",\n\t\t\t\"findBanner\": \"祈願を検索\",\n\t\t\t\"group\": \"表示\",\n\t\t\t\"beginner\": \" 初心者応援祈願\",\n\t\t\t\"character-event\": \"イベント祈願・キャラクター\",\n\t\t\t\"weapon-event\": \"イベント祈願・武器\",\n\t\t\t\"chronicled\": \"集録祈願\",\n\t\t\t\"standard\": \"通常祈願\",\n\t\t\t\"wishDescription\": \"祈願を10回すると、必ず★4以上のアイテムを獲得できます。\",\n\t\t\t\"novice\": \"初心者向け祈願\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"初回10連20%オフ、{character}が必ず獲得可能\",\n\t\t\t\"beginnerNote\": \"「メイドの礼儀に気をつけます。」\",\n\t\t\t\"beginnerChance\": \"残り回数：{chances}\",\n\t\t\t\"standardNote\": \"通常祈願は期限がありません。\",\n\t\t\t\"allWeaponTypes\": \"全種類\",\n\t\t\t\"etc\": \"など\",\n\t\t\t\"probIncreased\": \"出現確率アップ！\",\n\t\t\t\"eventNote\": \"イベント限定★5キャラクターは確率UP期間中にそれぞれの祈願からしか獲得できません。\",\n\t\t\t\"viewDetails\": \"具体的な内容は【詳細】から確認できます。\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"スキップ\",\n\t\t\t\"meteorFailed\": \"祈願アニメーションの読み込みに失敗しました\",\n\t\t\t\"new\": \"新規\",\n\t\t\t\"convertion\": \"変換\",\n\t\t\t\"title\": \"{item} 祈願結果\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"キャラ外観\",\n\t\t\"default\": \"デフォルト\",\n\t\t\"setOutfit\": \"切り替え\",\n\t\t\"owned\": \"所有済\",\n\t\t\"purchasePrompt\": \"対応するキャラはまだ未所持ですが、本当にこのコスチュームを購入しますか？\",\n\t\t\"promptInfo\": \"また後で来よう、先にキャラを手に入れよう！\",\n\t\t\"obtained\": \"新コスチューム獲得\",\n\t\t\"unlocked\": \"{character}専用コスチューム\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"「満点の偵察騎士」\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"風の加護\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"星命流転\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"棘の処刑\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"海風の夢\",\n\t\t\t\t\"description\": \"夏をモチーフにしたジンの衣装。涼し気な作りだが、同時に優雅さも感じられる。海辺の旅にぴったり。\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"サマータイムスパークル\",\n\t\t\t\t\"description\": \"海辺をモチーフにしたバーバラの衣装。夏の活気溢れる煌びやかなスカートからは、爽やかな海の香りが漂ってくる。\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"霓裾の舞\",\n\t\t\t\t\"description\": \"刻晴の礼服。海灯祭の佳景の中、過去の苦心により描かれた線には、今宵の軽やかで麗しい姿が織り込まれている。\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"紗の幽蘭\",\n\t\t\t\t\"description\": \"凝光の礼服。紺色のドレスは彼女の優雅で美しい曲線を描き、足首を飾っている蝶の羽はたおやかさを演出している。\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"極夜の真夢\",\n\t\t\t\t\"description\": \"皇女フィッシュルの祭礼衣装。高貴なる者がいつまでも勇気と誠意、そして善良な心を持ち続け、いかなる悪にも屈しないように。\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"レッドデッド・オブ・ナイト\",\n\t\t\t\t\"description\": \"ディルックが隠密行動をする際に着る衣装の一つ。それはまるで、影の中で燃える炎のよう。敵の目に焼き付いた深紅の残痕は、彼らに消えることのない悪夢を植え付ける。\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"葉に隠れし芳名\",\n\t\t\t\t\"description\": \"リサがスメールを再訪した際に作らせた衣装。服装の実用性とエレガンスのバランスは絶妙。リサの学生時代の制服と少し似ている。\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"花時に訪れた手紙\",\n\t\t\t\t\"description\": \"神里綾華のお出かけ衣装。娯楽小説の挿絵に登場するフォンテーヌ女性の衣装をモチーフにした洋服で、フォンテーヌの貴婦人の生活を垣間見ているような気分にさせてくれる。\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"星燭に揺れる爛花\",\n\t\t\t\t\"description\": \"クレーが特定の演劇に出演する際に着る丁寧な作りの衣装。鮮やかな色をしており、まるでクリームの花と真紅のロウソクで飾られたケーキのように、「ハッピー」と「スマイル」を冒険の至るところに振りまいてくれる。\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"帆影に戯る風\",\n\t\t\t\t\"description\": \"ガイアが舞台上で「短刀の大盗賊」を演じる時の衣装。「目を引く」ことをコンセプトとした華やかな作り。しかし、着用にはそこまで手間がかからず、むしろ一番手入れに時間を要するのは装飾品と短刀のほうになっている。\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"冷花幽露\",\n\t\t\t\t\"description\": \"申鶴が受け取った海灯祭祝いの贈り物。彼女の師匠である留雲借風真君が仕立てを依頼した典雅な礼服。両腕にある赤紐は昔のままだが、申鶴が胸に抱いている苦しみは今や既に薄らいでいる。\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"玄玉瑶芳\",\n\t\t\t\t\"description\": \"軽くて優雅な佳節の衣装。竜葵の紫黒色と玉の青色を基調とした衣服と、清心の如き明るく美しい髪飾によって構成されている。まさに甘雨が最も好む組み合わせと言えよう。\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"竹身雨化\",\n\t\t\t\t\"description\": \"飛雲商会が行秋のために用意した礼服。優雅な竹の模様が入っており、体にぴったり合うよう仕立てられている。なにより行秋が最も気に入っている点は、服の内側にあるほどよい大きさのポケット。薄めの小説がちょうど入るようになっている。\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"麗しき怪傑\",\n\t\t\t\t\"description\": \"綺良々の衣装。童話の中で弱きを助けるニャンコ剣士——願いを届ける可憐な少女、ここに参上！\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"東風はこぶ花の吐息\",\n\t\t\t\t\"description\": \"ニィロウの優雅な衣装。まるで千の花で織ったかのような、軽やかなスカート。夜明けの東風に運ばれてきたと錯覚する淡い香りには、童話の世界の美しい祝福が秘められている。\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"残雪に咲く紅\",\n\t\t\t\t\"description\": \"胡桃の衣装。暗い色を基調とした往生堂の服とは異なり、明るい色のワンピース。服は友人の香菱が胡桃のために用意してくれたプレゼントで、サングラスは胡桃の自前である。\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"大つごもりの歓声\",\n\t\t\t\t\"description\": \"香菱の衣装。冷たい風の中を燃えるかまどの炎のように暖かい。帽子は胡桃の提案により、グゥオパァーをイメージして特別にデザインされたもので、香菱のお気に入り。\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"静謐の饗宴\",\n\t\t\t\t\"description\": \"夜蘭が休暇のために選んだ衣装。スマートな優雅さがあり、余裕綽々な彼女の品位を一層引き立てている。 同時にそれは、「攻撃的な」偽装でもある…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"燃えろ！ラクガキ大冒険\",\n\t\t\t\t\"description\": \"ベネットがナタの旅で着ていた衣装。ラッキーカラーのターコイズブルーと、燃えるようなオレンジ色は、生命力に満ち溢れたナタの地を彷彿とさせる。\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"メリュジーヌの贈り物\",\n\t\t\t\t\"description\": \"ヌヴィレットがメリュジーヌから受け取ったサプライズプレゼント。プレゼントそのものも嬉しいが、制作に携わってくれた沢山の小さな手を想像するとたまらない。まるで川が海へと注ぐように、露は結晶して七色に輝く奇跡になった。\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"竹林に響く雨音\",\n\t\t\t\t\"description\": \"ヨォーヨの衣装。新たな梢の清き影、響くは机を叩く音。客は風かと振り向けば、思いもよらぬ姿あり。\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"詳細説明\",\n\t\t\"promotional\": \"ピックアップ\",\n\t\t\"itemlist\": \"ラインナップ\",\n\t\t\"increasedRate\": \"以下のアイテム「出現確率UP！！！」\",\n\t\t\"percentageDrop\": \"★{rarity}出現確率の{percentage}\",\n\t\t\"wishDetails\": \"祈願の詳細は以下の通りです。\",\n\t\t\"probInfo\": \"★{rarity}アイテムの基礎出現確率は：{singlePercentage} (天井を含む総合出現確率は：{avgPercentage})\",\n\t\t\"itemWishFor\": \"ラインナップは以下の通りです。\",\n\t\t\"itemType\": \"タイプ\",\n\t\t\"itemName\": \"タイトル\",\n\t\t\"beginnerInfo\": \"期限なし（20連の祈願後に終了）\",\n\t\t\"limited\": \"期間限定イベント\",\n\t\t\"permanent\": \"期限なし\",\n\t\t\"alert\": \"※当祈願は「{wishName}」です。祈願回数の累計は「{wishName}」のみで数えられ、他の祈願とは別カウントされます。\",\n\t\t\"designatable\": \"軌定できるアイテム\",\n\t\t\"targetList\": \"軌定アイテムが【★5{itemType}】である場合、★5アイテムのリストは以下の通りです。\",\n\t\t\"chronicledRate\": \"(天井または集録軌定に到達するまで、すべてのキャラクターまたは武器は基礎出現確率を基に均等に排出されます)\",\n\t\t\"chronicledPeriod\": \"今期で軌定できる★5アイテム\",\n\t\t\"chronicledCourse\": \"以下の【★5アイテム】から1つを選択し、その出現確率を★5の出現確率の指定の割合にすることができます:\",\n\t\t\"beginner\": [\n\t\t\t\"初心者応援祈願は日時による期限がありません。当祈願はテイワットの新米旅人向けの応援祈願となります。当祈願では、10連で消耗する出会いの縁の数が<span>20%オフ</span>になります。なお、初回10連で<span>必ず</span>「{character}」が出現し、次の10連で必ず<span>他の</span>★4、またはそれ以上のキャラクターが出現します！当祈願は祈願回数の上限があります。お一人様<span>20連</span>限りとなります。20連を引き終えることで祈願終了になります。\",\n\t\t\t\"※通常、全てのキャラクターと武器は基礎出現確率が適用されます。確率UPがある、または天井が発動した場合の確率は、該当する祈願の詳細説明をご確認ください。\",\n\t\t\t\"〓祈願説明〓\",\n\t\t\t\"★5キャラクターの基礎出現確率は<span>0.600%</span>です。★4キャラクターの基礎出現確率は<span>5.100%</span>です。総合確率（天井を含めて）は<span>13.000%</span>です。最大<span>10連</span>祈願で必ず★4、またはそれ以上のキャラクターを獲得できます。\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"通常祈願・「{bannerName}」は日時による期限がありません。当祈願では、非限定のキャラクターと武器が出現します。当祈願では、10連毎に<span>必ず</span>★4、またはそれ以上のアイテムが出現します。\",\n\t\t\t\"※通常、全てのキャラクターと武器は基礎出現確率が適用されます。確率UPがある、または天井が発動した場合の確率は、該当する祈願の詳細説明をご確認ください。\",\n\t\t\t\"〓祈願説明〓\",\n\t\t\t\"★5アイテムの基礎出現確率は<span>0.600%</span>です。★5キャラクターの基礎出現確率は<span>0.300%</span>です。★5武器の基礎出現確率は<span>0.300%</span>です。★5アイテムの総合出現確率（天井を含めて）は<span>1.600%</span>です。最大<span>90</span>連祈願で必ず★5アイテムを獲得できます。<br>★4アイテムの基礎出現確率は<span>5.100%</span>です。★4キャラクターの基礎出現確率は<span>2.550%</span>です。★4武器の基礎出現確率は<span>2.550%</span>です。★4アイテムの総合出現確率（天井を含めて）は<span>13.000%</span>です。最大10連祈願で必ず★4、またはそれ以上のアイテムを獲得できます。<span>10</span>連の確定枠で★4アイテムを獲得できる確率は<span>99.400%</span>、★5アイテムを獲得できる確率は<span>0.600%</span>です。\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"イベント祈願・「{bannerName}」が開始されました。イベント期間中、<span>限定</span>★5キャラクター「{featuredCharacter}」、★4キャラクター「{rateupCharacters}」の出現確率が<span>大幅にUP</span>！<br/><span> ※上記のキャラクターの中で、限定キャラクターは通常祈願・「奔走世間」に実装されることはありません。 </span>\",\n\t\t\t\"※通常、全てのキャラクターと武器は基礎出現確率が適用されます。確率UPがある、または天井が発動した場合の確率は、該当する祈願の詳細説明をご確認ください。\",\n\t\t\t\"〓祈願説明〓\",\n\t\t\t\"【★5アイテム】\",\n\t\t\t\"今期のイベント祈願・「{bannerName}」において、★5アイテムの基礎出現確率は<span>0.600%</span>です。総合出現確率（天井を含めて）は<span>1.600%</span>です。最大<span>90</span>連祈願で必ず★5キャラクターを獲得できます。★5キャラクターが出現した時、<span>50.000%</span>の確率で今期のピックアップキャラクター「{featuredCharacter}」を獲得できます。獲得した★5キャラクターがピックアップキャラクターではなかった場合、次に当祈願で★5キャラクターを獲得した時に<span>必ず</span>ピックアップの★5キャラクターを獲得できます。\",\n\t\t\t\"【★4アイテム】\",\n\t\t\t\"今期のイベント祈願・「{bannerName}」において、★4アイテムの基礎出現確率は<span>5.100%</span>です。★4キャラクターの基礎出現確率は<span>2.550%</span>です。★4武器の基礎出現確率は<span>2.550%</span>です。★4アイテムの総合出現確率（天井を含めて）は<span>13.000%</span>です。最大10連祈願で必ず★4、またはそれ以上のアイテムを獲得できます。<span>10</span>連の確定枠で★4アイテムを獲得できる確率は<span>99.400%</span>、★5アイテムを獲得できる確率は<span>0.600%</span>です。<br>★4アイテムが出現した時、<span>50.000%</span>の確率で今期のピックアップキャラクター「{rateupCharacters}」から1体を獲得できます。獲得した★4アイテムがピックアップキャラクターではなかった場合、次に当祈願で★4アイテムを獲得した時に<span>必ず</span>ピックアップの★4キャラクターを獲得できます。祈願で獲得できる今期のピックアップ★4キャラクターの出現確率は均等です。\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"イベント祈願・「{bannerName}」が開始されました。イベント期間中、<span>限定</span>★5武器「{featuredWeapon1}」、「{featuredWeapon2}」、★4武器「{rateupWeapons}」の出現確率が<span>大幅にUP</span>！<br/><span> ※上記の武器の中で、限定武器が通常祈願・「奔走世間」に実装されることはありません。 </span>\",\n\t\t\t\"※通常、全てのキャラクターと武器は基礎出現確率が適用されます。確率UPがある、または天井が発動した場合の確率は、該当する祈願の詳細説明をご確認ください。\",\n\t\t\t\"〓祈願説明〓\",\n\t\t\t\"【★5アイテム】\",\n\t\t\t\"今期のイベント祈願・「{bannerName}」において、★5武器の基礎出現確率は<span>0.700%</span>です。総合出現確率（天井を含めて）は<span>1.850%</span>です。最大<span>80</span>連祈願で必ず★5武器を獲得できます。<br/>★5武器が出現した時、<span>75.000%</span>の確率で今期のピックアップ武器「{featuredWeapon1}」、「{featuredWeapon2}」から1本を獲得できます。獲得した★5武器がピックアップ武器ではなかった場合、次に当祈願で★5武器を獲得した時に<span>必ず</span>ピックアップの★5武器を獲得できます。命定値が上限に達していない状況で、祈願で★5武器を獲得した場合、今期のピックアップ武器ごとの出現確率は均等です。<br/>今期のイベント祈願・「{bannerName}」では、「神鋳軌定」を使ってピックアップ★5武器を軌定できます。軌定武器の選択は今期のイベント祈願・「{bannerName}」期間中のみ有効です。<br/>今期のイベント祈願・「{bannerName}」において、「神鋳軌定」を使って武器を軌定した後に獲得した★5武器が軌定武器ではなかった場合、命定値を1点獲得します。命定値が<span>上限</span>に達した時、次に今期の祈願で★5武器を獲得した場合、<span>必ず</span>現在の軌定武器を獲得できます。現在の軌定武器を獲得した時、命定値が上限に達しているか否かに関わらず、<span>0</span>にリセットされ再カウントされます。<br/>「神鋳軌定」を使って武器を軌定していない場合、命定値は<span>累計されません</span>。<br/>軌定武器を変更またはキャンセルすることができます。現在の軌定武器を変更またはキャンセルした場合、命定値は<span>0</span>にリセットされ再カウントされます。<br/>※今期の祈願の命定値は今期のイベント祈願・「{bannerName}」期間中のみ有効です。今期の祈願が終了した後、命定値は<span>0</span>にリセットされます。\",\n\t\t\t\"【★4アイテム】\",\n\t\t\t\"今期のイベント祈願・「{bannerName}」において、★4アイテムの基礎出現確率は<span>6.000%</span>です。★4キャラクターの基礎出現確率は<span>3.000%</span>です。★4武器の基礎出現確率は<span>3.000%</span>です。★4アイテムの総合出現確率（天井を含めて）は<span>14.500%</span>です。最大<span>10</span>連祈願で必ず★4、またはそれ以上のアイテムを獲得できます。<span>10</span>連の確定枠で★4アイテムを獲得できる確率は<span>99.300%</span>、★5アイテムを獲得できる確率は<span>0.700%</span>です。 <br/>★4アイテムが出現した時、<span>75.000%</span>の確率で今期のピックアップ武器「{rateupWeapons}」から1本を獲得できます。獲得した★4アイテムがピックアップ武器ではなかった場合、次に当祈願で★4アイテムを獲得した時に<span>必ず</span>ピックアップの★4武器を獲得できます。祈願で獲得できる今期のピックアップ★4武器の出現確率は均等です。\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"集録祈願・「{bannerName}」開催中。イベント期間中、<span>限定</span>★5キャラクター{featuredCharacter}および<span>限定</span>★5武器{featuredWeapon}が期間限定で登場します。\",\n\t\t\t\"※通常、全てのキャラクターと武器は基礎出現確率が適用されます。確率UPがある、または天井が発動した場合の確率は、該当する祈願の詳細説明をご確認ください。\",\n\t\t\t\"〓祈願説明〓\",\n\t\t\t\"【★5アイテム】\",\n\t\t\t\"今期の集録祈願・「{bannerName}」において、★5アイテムの基礎出現確率は<span>0.600%</span>です。★5アイテムの総合出現確率(天井を含めて)は<span>1.600%</span>です。最大<span>90</span>連祈願で必ず★5アイテムを獲得できます。<br/>今期の集録祈願・「{bannerName}」において、「集録軌定」を使ってすべての★5アイテムの中から、今期の<span>出現確率UP</span>の★5キャラクターx1または★5武器x1を選択して軌定できます。軌定アイテムの選択は当期の集録祈願・「{bannerName}」でのみ有効です。\",\n\t\t\t\"※軌定アイテムが<span>★5キャラクター</span>である場合、祈願時に獲得できる★5アイテムは<span>★5キャラクター</span>のみとなり、軌定アイテムが<span>★5武器</span>である場合、祈願時に獲得できる★5アイテムは<span>★5武器</span>のみとなります。\",\n\t\t\t\"祈願で★5アイテムを獲得した場合、<span>50.000%</span>の確率で今期の軌定アイテムが出現します。獲得した★5アイテムが軌定アイテムではなかった場合、命定値を1点獲得します。命定値が<span>上限</span>に達した時、次に今期の祈願で★5アイテムを獲得した場合、<span>必ず</span>現在の軌定アイテムを獲得できます。現在の軌定アイテムを獲得した時、命定値が上限に達しているか否かに関わらず、<span>0</span>にリセットされ再カウントされます。\",\n\t\t\t\"軌定アイテムを変更することができます。現在の軌定アイテムを変更した場合、命定値は<span>0</span>にリセットされ再カウントされます。\",\n\t\t\t\"※今期の祈願の命定値は今期の集録祈願・「{bannerName}」期間中のみ有効です。今期の祈願が終了した後、命定値は<span>0</span>にリセットされます。\",\n\t\t\t\"【★4アイテム】\",\n\t\t\t\"今期の集録祈願「{bannerName}」において、★4アイテムの基礎出現確率は<span>5.100%</span>です。★4キャラクターの基礎出現確率は<span>2.550%</span>です。★4武器の基礎出現確率は<span>2.550%</span>です。★4アイテムの総合出現確率(天井を含めて)は<span>13.000%</span>です。最大<span>10</span>連祈願で必ず★4、またはそれ以上のアイテムを獲得できます。<span>10</span>連の確定枠で★4アイテムを獲得できる確率は<span>99.400%</span>、★5アイテムを獲得できる確率は<span>0.600%</span>です。\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"祈願で★5武器を獲得した時、同時に{starglitter}を10個獲得できます。\",\n\t\t\t\"fourStar\": \"★4武器を獲得した時、同時に{starglitter}を2個獲得できます。\",\n\t\t\t\"threeStar\": \"★3武器を獲得した時、同時に{stardust}を15個獲得できます。\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓キャラクターの重複獲得〓\",\n\t\t\t\"text\": \"各方法（祈願、ショップ交換、システム配布など）で、★{rarity}キャラクターを2～7回重複して獲得した時、{stellaFortuna}1個と、{starglitter}{constBonus}個に変換されます。8回目以降の獲得では、{starglitter}{fullConstBonus}個に変換されます。\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"祈願履歴\",\n\t\t\"text\": \"祈願履歴\",\n\t\t\"resetButton\": \"リセット\",\n\t\t\"resetPromptTitle\": \"祈願履歴のリセット\",\n\t\t\"resetPrompt\": \" {bannerName} から排出されたすべてのキャラクターと武器がインベントリから削除されます。 本当にリセットしますか？\",\n\t\t\"resetSuccess\": \"リセット成功！\",\n\t\t\"keepPity\": \"祈願回数と確定枠を保持する\",\n\t\t\"selectWish\": \"祈願タイプ\",\n\t\t\"disclaimer\": \"祈願データをインターネット上に保存することはありません。IndexedDBを利用するため、データはすべてブラウザのキャッシュに保存されることになります。ユーザー自身が削除/リセットボタンで削除するか、ブラウザのデータを消去しない限り削除されません。\",\n\t\t\"currentPity\": \"現在の天井カウント:\",\n\t\t\"totalPull\": \"祈願合計回数:\",\n\t\t\"totalSpend\": \"消費原石総数:\",\n\t\t\"filterTxt\": \"フィルター\",\n\t\t\"filter\": \"★{rarity}\",\n\t\t\"filterAll\": \"すべて\",\n\t\t\"pity\": \"天井カウント\",\n\t\t\"timeReceived\": \"祈願期間\",\n\t\t\"waiting\": \"お待ちください\",\n\t\t\"noData\": \"データがありません\",\n\t\t\"untracked\": \"トラッキングされていません\",\n\t\t\"win\": \"50%に勝利\",\n\t\t\"lose\": \"50%に敗北\",\n\t\t\"guaranteed\": \"確定獲得\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"軌定獲得\",\n\t\t\"olderLayout\": \"Ver.1レイアウトに切替\",\n\t\t\"switchv2\": \"Ver.2レイアウトに切替\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"ショップ\",\n\t\t\"paimonBargains\": \"スター交換\",\n\t\t\"fateNeeded\": \"{currency}が{rollQty}個足りませんが、\",\n\t\t\"primoNeeded\": \"原石を{primoPrice}個使って購入しますか？\",\n\t\t\"purchaseUpto\": \"数量限定 1\",\n\t\t\"purchaseConfirm\": \"購入確認\",\n\t\t\"exchangeHeading\": \"アイテムを交換する\",\n\t\t\"purchaseHeading\": \"アイテムを交換する\",\n\t\t\"purchaseButton\": \"交換\",\n\t\t\"pay\": \"購入\",\n\t\t\"product\": \"商品\",\n\t\t\"consume\": \"消費\",\n\t\t\"selectPayment\": \"決済方法\",\n\t\t\"unrealWallet\": \"タルタリヤ\",\n\t\t\"convertPrimo\": \"原石に自動変換しますか？\",\n\t\t\"proceedPayment\": \"購入\",\n\t\t\"qty\": \"数量\",\n\t\t\"insufficient\": \"アイテム不足\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"結晶凝結\",\n\t\t\"initialBonus\": \"初回2倍ボーナス\",\n\t\t\"bonus\": \"おまけ\",\n\t\t\"buyGenesisHeading\": \"創世結晶を購入\",\n\t\t\"recomendedHeading\": \"おすすめ\",\n\t\t\"paimonHeading\": \"スター交換\",\n\t\t\"welkinNote\": \"重複購入可能\",\n\t\t\"limitedOffer\": \"期間限定価格\",\n\t\t\"noLimitTime\": \"更新期間：期限なし\",\n\t\t\"paymentChilde\": \"俺が払うよ\",\n\t\t\"paymentTears\": \"ぜんぶドカーン！\",\n\t\t\"paymentWakaranai\": \"わからない…\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"空月の祝福\",\n\t\t\t\"newOutfit\": \"新コスチューム\",\n\t\t\t\"dayRemaining\": \"残り {days}日\",\n\t\t\t\"alreadyClaimed\": \"本日取得済\",\n\t\t\t\"instantlyGet\": \"購入すると獲得\",\n\t\t\t\"dailyGift\": \"每日貰える\",\n\t\t\t\"obtainTotal\": \"*有效期限30日！累計で{totalGenesis}創世結晶と{totalPrimo}原石が獲得できます！\",\n\t\t\t\"claimingBlessing\": \"クリックして報酬を獲得\",\n\t\t\t\"issuedPurchase\": \"購入すると獲得\",\n\t\t\t\"collect\": \"毎日貰える\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"スターライト交換\",\n\t\t\t\"stardust\": \"スターダスト交換\",\n\t\t\t\"primogem\": \"原石購入\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"創世結晶\",\n\t\t\t\"primogem\": \"原石\",\n\t\t\t\"intertwined\": \"紡がれた運命\",\n\t\t\t\"acquaint\": \"出会いの縁\",\n\t\t\t\"starglitter\": \"無主のスターライト\",\n\t\t\t\"stardust\": \"無主のスターダスト\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"夢をつなぐ運命の種。 石の輝きは本来交わらない運命を交差させ、互いの夢を繋げ、まさにこの輝きは星星の心の赴く形に繋げると同じである。\",\n\t\t\t\"acquaint\": \"星空を照らす希望の種。どんなに離れても、縁石の導きで、運命の二人は星空の下で巡り会える。\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"インベントリ\",\n\t\t\"unsetOutfit\": \"衣装解除\",\n\t\t\"setOutfit\": \"衣装チェンジ\",\n\t\t\"refinement\": \"精錬ランク {count}\",\n\t\t\"constellation\": \"命の星座 {count}\",\n\t\t\"extra\": \" 追加所持 {count}\",\n\t\t\"firstSummon\": \"初回獲得: {date}\",\n\t\t\"notOwned\": \"未所持\",\n\t\t\"sort\": \"並び替え\",\n\t\t\"rarity\": \"レア度\",\n\t\t\"name\": \"名前\",\n\t\t\"quantity\": \"命の星座\",\n\t\t\"element\": \"神の目\",\n\t\t\"release\": \"実装日\",\n\t\t\"type\": \"武器タイプ\",\n\t\t\"owned\": \"所持\",\n\t\t\"showAllOption\": \"全ての{item}を表示\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"オフ\",\n\t\t\"yes\": \"オン\",\n\t\t\"text\": \"メニュー\",\n\t\t\"feedback\": \"フィードバック\",\n\t\t\"options\": \"設定\",\n\t\t\"updates\": \"更新履歴\",\n\t\t\"customBanner\": \"自作祈願\",\n\t\t\"backupRestore\": \"保存\",\n\t\t\"language\": \"言語\",\n\t\t\"currency\": \"通貨\",\n\t\t\"fates\": \"祈願回数\",\n\t\t\"unlimited\": \"エンドレス\",\n\t\t\"manual\": \"マニュアル\",\n\t\t\"mute\": \"BGM・SEをミュート\",\n\t\t\"switchBanner\": \"祈願内容の切替\",\n\t\t\"showAllitems\": \"インベントリのすべてのアイテムを表示\",\n\t\t\"autoskip\": \"祈願アニメーションのスキップ\",\n\t\t\"animatedbg\": \"アニメーション背景\",\n\t\t\"multiRoll\": \"祈願連数(デフォルト:10連)\",\n\t\t\"factoryReset\": \"データの消去と初期化\",\n\t\t\"resetTitle\": \"データの消去と初期化\",\n\t\t\"rotate\": \"旅人、画面を横向きにするとより楽しめるぞ！\",\n\t\t\"keepSetting\": \"設定を保持したまま消去 <small> 現在の祈願バナーや原石量，各種設定は消去されません </small>\",\n\t\t\"clearCache\": \"キャッシュ ( {size} ) をクリア <small>消去後はページを再読み込みしてください</small>\",\n\t\t\"resetButton\": \"リセット\",\n\t\t\"resetPrompt\": \"本当に <strong>すべてのデータ</strong> を消去して初期状態に戻しますか？\",\n\t\t\"resetSuccess\": \"リセット成功\",\n\t\t\"proAccess\": \"プロ版\",\n\t\t\"getpro\": \"プロ版の獲得\",\n\t\t\"removeKey\": \"キーの消去\",\n\t\t\"removeKeyConfirm\": \"現在のキーを削除してよろしいですか？新しいキーを再入力するまで，これらの特典はすべて失われます！\",\n\t\t\"getNewKey\": \"こちらから入手できます！\",\n\t\t\"noKey\": \"キーを持っていませんか？\",\n\t\t\"verifyFail\": \"キーの検証に失敗しました。接続を確認してください！\",\n\t\t\"invalidKey\": \"あなたのキーは有効ではありません\",\n\t\t\"keyExpired1\": \"キーが期限切れです!\",\n\t\t\"keyExpired2\": \"あなたのキー: \\\"{key}\\\" は{date}から期限切れです!\",\n\t\t\"adFreeUser\": \"あなたはすでにプロ版を利用できます！\",\n\t\t\"inputKeyPlaceholder\": \"キーを入力\",\n\t\t\"inputKeyTxt\": \"キーを入力して特典を獲得\",\n\t\t\"checkingKey\": \"保存されたキーの検証中\",\n\t\t\"benefit\": \"特典\",\n\t\t\"authorNotes\": [\"広告の除去\", \"無制限の自作祈願\", \"{HSRWishSim} でも同じキーで特典を得られます\"]\n\t}\n}\n"
  },
  {
    "path": "src/locales/ko-KR.json",
    "content": "{\n\t\"title\": \"원신 기원 시뮬레이터\",\n\t\"item\": \"아이템\",\n\t\"character\": \"캐릭터\",\n\t\"weapon\": \"무기\",\n\t\"vision\": \"신의 눈\",\n\t\"anemo\": \"바람\",\n\t\"cryo\": \"얼음\",\n\t\"dendro\": \"풀\",\n\t\"electro\": \"번개\",\n\t\"hydro\": \"물\",\n\t\"geo\": \"바위\",\n\t\"pyro\": \"불\",\n\t\"bow\": \"활\",\n\t\"catalyst\": \"법구\",\n\t\"claymore\": \"양손검\",\n\t\"sword\": \"한손검\",\n\t\"polearm\": \"장병기\",\n\t\"extra\": \"추가 획득\",\n\t\"obtained\": \"획득\",\n\t\"waiting\": \"기다리는 중\",\n\t\"connectionFailed\": \"연결 실패!\",\n\t\"confirmButton\": \"확인\",\n\t\"cancelButton\": \"취소\",\n\t\"disclaimer\": \"이 사이트에 사용된 모든 리소스는 미호요가 소유합니다.\",\n\t\"fanmade\": \"이것은 순수히 팬에 의해 만들어진 애플리케이션입니다. 즐겨주세요!\",\n\t\"pressToContinue\": \"빈 곳을 눌러 계속하기\",\n\t\"installInstruction\": \"홈화면 / 바탕화면에 설치하기 위한 절차\",\n\t\"share\": \"공유하기\",\n\t\"screenshot\": \"촬영\",\n\t\"capturing\": \"촬영중\",\n\t\"rewardFirstShare\": \"최초 획득 : {qty}\",\n\t\"version\": \"버전\",\n\t\"donate\": \"후원\",\n\t\"banner\": {\n\t\t\"beginner\": \"초보자 추천 기원\",\n\t\t\"wanderlust\": \"세상 여행\",\n\t\t\"epitome-invocation\": \"신의 주조\",\n\t\t\"ode-to-the-dawn-breeze\": \"#아침 바람#의 시\",\n\t\t\"adrift-in-the-harbor\": \"#덧없는# 인생\",\n\t\t\"ambrosial-essence\": \"향기로운 #이슬의 정수#\",\n\t\t\"ancient-flame-ablaze\": \"#고대의# 불꽃\",\n\t\t\"astral-actuation\": \"#별의# 구동\",\n\t\t\"auric-blaze\": \"타오르는 #금빛 태양#\",\n\t\t\"azure-excursion\": \"#푸른 물결 속# 가벼운 걸음\",\n\t\t\"ballad-in-goblets\": \"#잔에 담긴# 시\",\n\t\t\"born-of-ocean-swell\": \"#파도가 치는# 순간\",\n\t\t\"caution-in-confidence\": \"#지략가#의 경고\",\n\t\t\"chanson-of-many-waters\": \"#물들#의 찬송시\",\n\t\t\"conjuring-chiaroscuro\": \"#빛과 그림자#의 트릭\",\n\t\t\"cornucopia-of-contention\": \"#연회#의 투사\",\n\t\t\"dance-of-lantern\": \"#용등#의 춤\",\n\t\t\"dawns-drifting-reverie\": \"#새벽#에 피는 꿈\",\n\t\t\"decree-of-the-deeps\": \"#심해#를 가르는 법령\",\n\t\t\"dewlit-tranquility\": \"#루키나#의 눈물\",\n\t\t\"discerner-of-enigmas\": \"#하늘을 정탐하는# 백홍\",\n\t\t\"drifting-luminescence\": \"#산악에 뜬# 구슬\",\n\t\t\"everbloom-violet\": \"#자홍#의 벚꽃\",\n\t\t\"farewell-of-snezhnaya\": \"겨울 나라와의 이별\",\n\t\t\"forgefires-blessing\": \"#불로 벼린# 축복\",\n\t\t\"from-ashes-reborn\": \"#잿불# 속 탈태\",\n\t\t\"gentry-of-hermitage\": \"#산야의# 시조\",\n\t\t\"harmonious-abundance\": \"#사직# 의례\",\n\t\t\"illuminating-lightning\": \"밤을 꿰뚫는 #번개#\",\n\t\t\"immaculate-pulse\": \"#옥처럼# 맑은 마음\",\n\t\t\"in-the-name-of-the-rosula\": \"#가시 장미#의 맹세\",\n\t\t\"invitation-to-mundane-life\": \"#등불#의 초대\",\n\t\t\"la-chanson-cerise\": \"#베리# 샹송\",\n\t\t\"leaves-in-the-wind\": \"#바람에# 지는 낙엽\",\n\t\t\"moment-of-bloom\": \"#매화#가 만개할 때\",\n\t\t\"moonsong-of-the-groves\": \"#푸른 숲#의 기도\",\n\t\t\"of-silken-clouds-woven\": \"#치잣빛 구름# 하오리\",\n\t\t\"oni_s-royale\": \"#귀문#투연\",\n\t\t\"piercing-shots-crimson-wake\": \"붉은 꽃을 #꿰뚫는 깃#\",\n\t\t\"reign-of-serenity\": \"#정토 쫓는# 천하인\",\n\t\t\"remembrance-of-jade-and-stone\": \"#옥과 바위#의 기억\",\n\t\t\"romaritime-meluserenity\": \"#보들보들# 바다이슬 하트\",\n\t\t\"roving-chalice-of-dewgrass\": \"#풀 이슬#이 흐르는 잔\",\n\t\t\"rubedo-of-white-stone-born\": \"붉게 물든 #백석#\",\n\t\t\"sharktacular-surfari\": \"물살을 가르는 #샤크#\",\n\t\t\"secretum-secretorum\": \"#심비의# 숨결\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#불을 따르는# 비밀 사냥꾼\",\n\t\t\"somnias-a-luna\": \"#달#과 함께 잠든 밤\",\n\t\t\"sparkling-steps\": \"#번쩍이는# 화염\",\n\t\t\"starry-nights-whispers\": \"#별빛# 속삭임\",\n\t\t\"tapestry-of-golden-flames\": \"은하수를 물들인 #불꽃#\",\n\t\t\"tempestuous-destiny\": \"요동치는 #운명#\",\n\t\t\"temptation-of-the-crimson-sands\": \"#적색 사#막의 유혹\",\n\t\t\"the-crane-soars-skyward\": \"#구름#을 거니는 학\",\n\t\t\"the-hearths-ashen-shadow\": \"#난롯가#의 잿빛 그림자\",\n\t\t\"the-heron_s-court\": \"#백로#의 정원\",\n\t\t\"the-lone-light-knocks-at-night\": \"고독한 밤의 #등불#\",\n\t\t\"the-moongrass-enlightenment\": \"#달빛 풀#이 내린 지혜\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#북풍#의 승전가\",\n\t\t\"the-transcendent-one-returns\": \"#속세#의 귀객\",\n\t\t\"thunder-rends-the-plains-on-high\": \"하늘을 가르는 #뇌명#\",\n\t\t\"twilight-arbiter\": \"황혼을 가르는 #번개의 심판#\",\n\t\t\"twirling-lotus\": \"#사뿐한 수련의# 춤\",\n\t\t\"viridescent-vigil\": \"#숲속# 순회\",\n\t\t\"void-stars-advent\": \"도래한 #허계의 별#\",\n\t\t\"ya-hoho-compendium\": \"#야호# 박물지\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} 설정\",\n\t\t\"baseRate\": \"★{rarity} 기본 확률:\",\n\t\t\"maxPity\": \"★{rarity} 천장:\",\n\t\t\"hardPity\": \"★{rarity} 확률 증가 시작 스택:\",\n\t\t\"currentPity\": \"★{rarity} 현재 스택:\",\n\t\t\"winRate\": \"반천장 확률:\",\n\t\t\"charRate\": \"무기 대신 캐릭터를 획득할 확률\",\n\t\t\"radRate\": \"별빛 포착 확률\",\n\t\t\"radTrigger\": \"(반천장 픽뚫시 발동)\",\n\t\t\"nonRateup\": \"(★4 픽뚫시)\",\n\t\t\"selectedRate\": \"선택된 {itemType} 확률:\",\n\t\t\"guaranteedSystem\": \"확정 천장\",\n\t\t\"backToDefault\": \"초기화\",\n\t\t\"resetPrompt\": \"<b>\\\"{banner}\\\"</b>의 확률을 기본값으로 초기화하시겠습니까?\",\n\t\t\"default\": \"기본\",\n\t\t\"never\": \"비활성화\",\n\t\t\"always\": \"항상\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"픽업 배너 커스텀\",\n\t\t\"byTraveler\": \"여행자에 의해 만들어짐\",\n\t\t\"deletePrompt\": \"이 픽업 배너를 삭제하시겠습니까 ?\",\n\t\t\"ownerDeleteNote\": \"만약 이 픽업 배너를 공개적으로 공유하였다면, 당신의 픽업 배너에 기원을 진행한 여행자들은 더이상 접근할 수 없습니다.\",\n\t\t\"userDeleteNote\": \"이 픽업 배너의 기원 이력은 삭제되지 않지만, 더이상 이 픽업 배너에 기원을 진행할 수 없습니다.\",\n\t\t\"retry\": \"재시도\",\n\t\t\"findBanner\": \"픽업 배너를 찾는 중..\",\n\t\t\"networkError\": \"네트워크 오류, 인터넷 연결을 확인해주세요!\",\n\t\t\"bannerNotFound\": \"픽업 배너를 찾지 못함. 잘못된 <u>픽업 배너 ID</u>이거나 제작자가 삭제했을 수 있습니다.\",\n\t\t\"invalidBanner\": \"유효하지 않은 픽업 배너 ID\",\n\t\t\"identifying\": \"픽업 배너 식별중\",\n\t\t\"loadOwnedBanner\": \"당신은 \\\"{ownedBanner}\\\" 픽업 배너의 소유자입니다. 당신의 로컬 정보가 인터넷에 공유된 정보 대신 사용됩니다.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\"는 기원을 진행할 준비가 되었습니다!\",\n\t\t\"uploading\": \"{item}을 업로드하는 중\",\n\t\t\"uploadFailed\": \"이미지 업로드 실패, 나중에 다시 시도해주세요!\",\n\t\t\"close\": \"닫기\",\n\t\t\"almostDone\": \"거의 완료됨\",\n\t\t\"shareText\": \"내 {character} 픽업 배너 시뮬레이터에서 당신의 운을 시험해보세요\",\n\t\t\"setPosition\": \"위치 설정\",\n\t\t\"next\": \"다음\",\n\t\t\"move\": \"이동하기\",\n\t\t\"changeSplashArt\": \"스플래시 아트 변경\",\n\t\t\"adjustSplashArt\": \"스플래시 아트 조정\",\n\t\t\"dropHere\": \"여기에 내려놓으세요!\",\n\t\t\"preview\": \"배너 미리보기\",\n\t\t\"generateImage\": \"이미지 생성\",\n\t\t\"notAnImage\": \"이미지가 아님\",\n\t\t\"imageTooLarge\": \"이미지가 너무 큽니다. 최대 용량: {maxSize}\",\n\t\t\"faceIcon\": \"아이콘\",\n\t\t\"addBanner\": \"픽업 배너 추가\",\n\t\t\"delete\": \"삭제\",\n\t\t\"deleteFailed\": \"삭제 실패\",\n\t\t\"bannerRemoved\": \"픽업 배너 삭제됨\",\n\t\t\"edit\": \"수정\",\n\t\t\"editInfo\": \"세부사항 수정\",\n\t\t\"editBanner\": \"픽업 배너 정보 수정\",\n\t\t\"bannerName\": \"픽업 배너 제목\",\n\t\t\"titleOfBanner\": \"픽업 배너의 #제목#\",\n\t\t\"titleNote\": \"#_# 사이의 글자들이 강조됩니다\",\n\t\t\"charName\": \"캐릭터 이름\",\n\t\t\"charTitle\": \"캐릭터 제목\",\n\t\t\"watermark\": \"워터마크\",\n\t\t\"completeAllField\": \"필수 입력란을 모두 기입해주세요!\",\n\t\t\"finishAndWish\": \"완료하고 기원하기\",\n\t\t\"publish\": \"픽업 배너 공유하기\",\n\t\t\"updateAndShare\": \"업데이트 & 공유\",\n\t\t\"rateupChar\": \"확률 UP 캐릭터\",\n\t\t\"rateupNote\": \"최소 하나의 확률 UP 캐릭터 필요\",\n\t\t\"yourBanners\": \"당신의 픽업 배너\",\n\t\t\"createBanner\": \"커스텀 픽업 배너 만들기\",\n\t\t\"limitation\": \"회원이 아닙니다. 일부 픽업 배너를 삭제해야 편집기를 사용할 수 있습니다.\",\n\t\t\"memberToUnlock\": \"회원이 되어서 더 많은 픽업 배너 추가\",\n\t\t\"incomplete\": \"미완성\",\n\t\t\"inappropriate\": \"부적절한 콘텐츠!\",\n\t\t\"lastSync\": \"마지막 동기화: {time}\",\n\t\t\"inactive\": \"비활성화\",\n\t\t\"unshared\": \"아직 공유되지 않음\",\n\t\t\"create\": \"픽업 배너 만들기\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"클라우드 동기화\",\n\t\t\"localSync\": \"로컬 백업/복원\",\n\t\t\"import\": \"데이터 불러오기\",\n\t\t\"export\": \"데이터 내보내기\",\n\t\t\"importAction\": \"{fileInfo} 가 앱에 추가됩니다. 어떠한 작업을 실행하고자 하는지 선택해주세요!\",\n\t\t\"mergeAction\": \"데이터 병합 <small>자동으로 중복 항목을 삭제하고 새로운 항목을 삽입합니다.</small>\",\n\t\t\"replaceAction\": \"데이터 대체 <small>현재 앱 데이터를 삭제하고 불러온 데이터로 대체합니다.</small>\",\n\t\t\"dropFiles\": \"여기에 파일을 끌어오세요.\",\n\t\t\"autoExport\": \"자동 내보내기\",\n\t\t\"destination\": \"대상\",\n\t\t\"lastExport\": \"마지막 내보내기\",\n\t\t\"fileSize\": \"파일 크기\",\n\t\t\"desNotFound\": \"백업 파일 위치를 찾을 수 없습니다. 내보내기를 다시 시도해주세요.\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"신의 궤도\",\n\t\t\"fatePoint\": \"운명 포인트\",\n\t\t\"confirm\": \"운명 정하기\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"현재 정한 운명을 정말 취소하시겠습니까 ?\",\n\t\t\"cancelDesc\": \"확인을 눌러 취소할 경우, 현재까지 쌓인 운명 포인트가 사라집니다\",\n\t\t\"selectWeapon\": \"운명을 정할 무기 선택\",\n\t\t\"chartCourseOf\": \"{target}의 운명 정하기\",\n\t\t\"cancelCourse\": \"운명 정하기 취소하기\",\n\t\t\"chartCourse\": \"운명 정하기\",\n\t\t\"courseSetFor\": \"Course Set For: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"「신의 궤도」는 이번 「신의 주조」의 특별한 기원 메커니즘입니다:\",\n\t\t\t\"원하는 ★5 UP 무기를 선택한 후 이번 「신의 주조」기원을 통해 <span>선택하지 않은 ★5 무기를 획득할 경우 운명 포인트를 1pt 획득하게 됩니다.</span>\",\n\t\t\t\"운명 포인트가 최대치에 도달한 후 이번 「신의 주조」기원에서 다음으로 획득하게 되는 ★5 무기는 「신의 궤도」에서 선택한 무기입니다.\",\n\t\t\t\"이번 「신의 주조」기원에서 <span>「신의 궤도」에서 선택한 무기를 획득할 시 누적된 운명 포인트는 사라지게 됩니다.</span>\",\n\t\t\t\"「신의 궤도」에서 무기를 선택하지 않은 경우 기원 중에 운명 포인트가 누적되지 않습니다.\",\n\t\t\t\"무기의 선택 상태는 변경할 수 있으며 취소할 수도 있습니다. <span>변경 또는 취소 시 누적된 운명 포인트는 사라지게 됩니다.</span>\",\n\t\t\t\"<span>이번 「신의 주조」가 종료되면 누적된 운명 포인트 역시 사라집니다.</span>\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"기원\",\n\t\t\"rollButton\": \"기원 {count}\",\n\t\t\"stellaFortuna\": \"운명의 별\",\n\t\t\"loadFailed\": \"베너 로딩 실패! <br /> 문제를 해결하려면 다른 배너로 변경하거나 인터넷에 다시 접속해 보세요.\",\n\t\t\"loadMeteor\": \"애니메이션 불러오기\",\n\t\t\"skipMeteor\": \"애니메이션 건너뛰기\",\n\t\t\"loadMeteorMsg\": \"<span>{star}성 유성 애니메이션</span> 불러오는 중\",\n\t\t\"meteorNotLoaded\": \"유성 애니메이션이 저장되어 있지 않습니다. 기원전에 <span> 유성 애니메이션을 불러오기</span>를 진행하거나, 애니메이션 건너뛰기를 <span> 활성화 </span> 하여 애니메이션을 건너뛰세요.\",\n\t\t\"preloadFilesMsg\": \"* 불러와진 파일은 브라우저의 저장소에 저장되어 사이트가 업데이트되기전까지는 다시 불러올 필요가 없습니다.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"픽업 배너\",\n\t\t\t\"allBanner\": \"모든 픽업 배너\",\n\t\t\t\"previous\": \"이전 픽업 배너\",\n\t\t\t\"findBanner\": \"픽업 배너 찾기\",\n\t\t\t\"group\": \"분류\",\n\t\t\t\"beginner\": \"초심자 기원\",\n\t\t\t\"character-event\": \"캐릭터 이벤트 기원\",\n\t\t\t\"weapon-event\": \"무기 이벤트 기원\",\n\t\t\t\"chronicled\": \"묶음 기원\",\n\t\t\t\"standard\": \"상주 기원\",\n\t\t\t\"wishDescription\": \"10연차 시 ★4 이상의 아이템 100% 획득\",\n\t\t\t\"novice\": \"초심자 기원\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"10연차 20% 할인, 초회 뽑기 시 {character} 100% 획득\",\n\t\t\t\"beginnerNote\": \"「 메이드의 예절에 주의할게요 」\",\n\t\t\t\"beginnerChance\": \"남은 횟수: {chances}\",\n\t\t\t\"standardNote\": \"일반 기원은 영구성 기원 이벤트입니다.\",\n\t\t\t\"allWeaponTypes\": \"모든 타입\",\n\t\t\t\"etc\": \"등\",\n\t\t\t\"probIncreased\": \"획득 확률 UP !\",\n\t\t\t\"eventNote\": \"이벤트 한정 ★5 캐릭터는 픽업 기간에 대응하는 기원을 통해 획득할 수 있습니다.\",\n\t\t\t\"viewDetails\": \"자세한 내용은 [상세]를 확인해주세요\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"건너뛰기\",\n\t\t\t\"meteorFailed\": \"유성 애니메이션 불러오기 실패\",\n\t\t\t\"new\": \"New\",\n\t\t\t\"convertion\": \"전환\",\n\t\t\t\"title\": \"{item}등에 대한 기원 결과\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"코스튬\",\n\t\t\"default\": \"기본\",\n\t\t\"setOutfit\": \"교체\",\n\t\t\"owned\": \"Already Owned\",\n\t\t\"purchasePrompt\": \"해당 코스튬을 사용할 수 있는 캐릭터가 없습니다. 그래도 구매하시겠습니까?\",\n\t\t\"promptInfo\": \"구매 후 캐릭터 도감에서 장비 후 효과를 확인할 수 있으며, 캐릭터 획득 후 해당 코스튬을 장착해 게임을 진행할 수 있습니다\",\n\t\t\"obtained\": \"신규 코스튬 획득\",\n\t\t\"unlocked\": \"{character} · 코스튬 해금\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"바닷바람의 꿈\",\n\t\t\t\t\"description\": \"진의 여름 코스튬. 시원하면서도 우아하며 해변과 잘 어울린다.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"빛나는 협주\",\n\t\t\t\t\"description\": \"바바라의 해변 코스튬. 상큼한 여름 분위기를 물씬 풍기는 예쁜 스커트로 시원한 바다 내음이 나는 듯하다.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"살랑이는 무지개 자락\",\n\t\t\t\t\"description\": \"각청의 예복 코스튬. 해등절의 아름다운 경치 속에서, 지난날의 노력으로 이루어진 먹의 선들이 오늘 밤, 가볍고 아름다운 자태로 엮인다.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"비단 속 난초\",\n\t\t\t\t\"description\": \"응광의 예복 코스튬. 군청색의 긴 치마는 우와하고 아름다운 곡선을 그리고, 복사뼈에 달린 나비 날개는 경쾌한 느낌을 더해준다.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"극야의 진실된 꿈\",\n\t\t\t\t\"description\": \"황녀 피슬의 제례복. 고귀한 자에게 용기와 진실 그리고 선한 마음이 깃들기를. 그래야만 사악한 기운이 그녀를 꺾을 수 없을지니.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"진홍빛 종야\",\n\t\t\t\t\"description\": \"다이루크가 은밀한 행동을 할 때 착용하는 복장 중 하나. 그림자 속에서 활활 타오르는 불꽃과도 같다. 적의 시야 끝에 진홍빛 잔흔을 남겨서 영원히 잊지 못할 악몽을 선사한다.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"잎새에 숨겨진 이름\",\n\t\t\t\t\"description\": \"리사가 수메르를 다시 방문했을 때 주문 제작한 코스튬. 우아하면서도 세련된 이 옷은 리사의 학창 시절 교복과도 닮았다.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"꽃 피는 날의 편지\",\n\t\t\t\t\"description\": \"Ayaka’s travel outfit. Its design is based on the Fontaine dresses depicted in light novel illustrations and seems to reflect the lifestyle of proper ladies who live in that nation.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"크림꽃과 별빛 촛불\",\n\t\t\t\t\"description\": \"An exquisite outfit Klee wears only for the most important performances. The colors are brilliant, like a cake adorned with cream flowers and crowned with scarlet candles. With it comes happiness and smiles that will fill your adventures.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"펄럭이는 돛의 그림자\",\n\t\t\t\t\"description\": \"Kaeya's outfit from his role as the \\\"Dagger Bandit\\\" in the play. Though flamboyant and designed to be as eye-catching as possible, it isn't difficult to put on, though it does take some time to get all the accessories and daggers sorted.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"차가운 꽃이슬\",\n\t\t\t\t\"description\": \"This Lantern Rite gift that Shenhe received is a set of elegant formal attire that her master, Cloud Retainer had commissioned for her. Red ropes still adorn her arms, but the bitter cold in Shenhe's heart has faded\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"흑옥에 핀 꽃\",\n\t\t\t\t\"description\": \"A light and graceful festive outfit accented mainly in black nightshade and cerulean blue. Its hair accessory is as radiant as the Qingxin — a pairing that Ganyu is most fond of.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"비에 물든 대나무\",\n\t\t\t\t\"description\": \"Formal wear prepared by the Feiyun Commerce Guild for Xingqiu. The bamboo prints are refined and the cut is most flattering, but Xingqiu's favorite aspect of the outfit is its inner pockets, into which a thinner novel might be stuffed.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"의적 키라냥\",\n\t\t\t\t\"description\": \"Kirara's outfit. The swashbuckling feline of fairytale fame, the crafty courier of dearly-held dreams... is pleased to make your acquaintance!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"사바의 숨결\",\n\t\t\t\t\"description\": \"An elegant outfit for Nilou, this featherweight dress is seemingly woven of countless flowers, and with it drifts a light fragrance like the east wind at dawn, carrying beauteous blessings from a fairytale land.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"눈을 품은 복숭아꽃\",\n\t\t\t\t\"description\": \"Hu Tao's outfit. Styled in a palette lighter than the dark ceremonial wear favored by the Wangsheng Funeral Parlor, the dress is a special gift from her good friend Xiangling. The sunglasses, for their part, are from Hu Tao's personal collection\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"제야의 환호\",\n\t\t\t\t\"description\": \"Xiangling's outfit. The red coat glows like a stove amidst cold winds, topped with a hat that, at Hu Tao's suggestion, took inspiration from Guoba's appearance — a design that's right up Xiangling's alley.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"고요한 밤의 연회\",\n\t\t\t\t\"description\": \"야란이 휴일을 맞아 착용한 코스튬. 우아하면서도 단정하다. 여유로워 보이는 자태 뒤에는 「치명적인 공세」가 숨어 있다…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"뜨거운 색채\",\n\t\t\t\t\"description\": \"베넷의 나타 여행 코스튬. 행운을 상징하는 호수를 닮은 푸른 빛과 뜨거운 주황색을 주요 색상으로 사용해, 이 땅처럼 생기가 흘러넘친다\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"멜뤼진의 선물\",\n\t\t\t\t\"description\": \"느비예트를 위한 깜짝선물. 물론 선물 자체도 기쁘지만, 선물 제작을 돕기 위해 모인 작은 손길들이 그 기쁨을 더 크게 만들었다. 강이 바다로 모여들 듯, 이슬방울 또한 하나로 뭉쳐 일곱 빛깔로 반짝이는 기적이 되었다\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"비와 대나무의 노래\",\n\t\t\t\t\"description\": \"요요의 코스튬. 드리워진 새순의 그림자가 책상을 두드리네. 바람인가 하고 보니, 손님이구나\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"상세\",\n\t\t\"promotional\": \"UP 아이템\",\n\t\t\"itemlist\": \"아이템 리스트\",\n\t\t\"increasedRate\": \"아래의 내용 [확률 UP!!!]\",\n\t\t\"percentageDrop\": \"★{rarity} 아이템 출현 확률의: {percentage}\",\n\t\t\"wishDetails\": \"Wish Details\",\n\t\t\"probInfo\": \"★{rarity} 아이템 기본 획득 확률: {singlePercentage} (천장 포함 종합 확률: {avgPercentage})\",\n\t\t\"itemWishFor\": \"기원 아이템 리스트 :\",\n\t\t\"itemType\": \"아이템 유형\",\n\t\t\"itemName\": \"아이템 이름\",\n\t\t\"beginnerInfo\": \"영구적(기원 20회 후 종료)\",\n\t\t\"limited\": \"기간 한정 이벤트\",\n\t\t\"permanent\": \"영구\",\n\t\t\"alert\": \"※ 이번 기원은 「{wishName}」 으로 다른 기원과는 기원 횟수가 따로 계산됩니다.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"초보자 추천 <span>기원</span>은 영구성 기원 이벤트로 처음 티바트 대륙에 발을 들인 여행자들에게 추천하는 기원으로 유저는 비한정 캐릭터와 무기를 획득할 수 있습니다. <br /> 이번 기원의 10연차에 소모되는 만남의 인연 개수 <span>20%</span> 할인. 그리고 10연차 시 {character} <span>100%</span> 획득. 다음번 10연차 시 ★4 이상 캐릭터 100% 획득! <br /> 이번 기원은 <span>20회</span>의 횟수 제한이 있으며, 20회 뽑기 후 해당 이벤트 기원이 사라집니다.\",\n\t\t\t\"※일반적인 상황에서 모든 캐릭터와 무기는 기본 확률이 적용되고, 확률 UP 혹은 천장 등이 발동되면 대응하는 확률을 기준으로 합니다.\",\n\t\t\t\"〓기원 규칙〓\",\n\t\t\t\"★5 캐릭터 기원의 기본 획득 확률은 <span>0.600%</span>입니다. <br /> ★4 캐릭터 기원의 기본 획득 확률은 <span>5.100%</span>로 총 확률(천장 포함)은 <span>13.000%</span>입니다. 최대 <span>10회</span> 기원 시 ★4 혹은 이상의 캐릭터를 반드시 획득합니다.\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" is a standard wish with no time limit. Non-event-exclusive characters and weapons are available.<br/> In this wish, <span>guaranteed</span> to win 4-star or above item at least once per 10 attempts.\",\n\t\t\t\"※In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"Base probability of winning 5-star item = <span>0.600%</span>; base probability of winning 5-star character = <span>0.300%</span>, and base probability of winning 5-star weapon = <span>0.300%</span>; consolidated probability (incl. guarantee) of winning 5-star item = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. <br> Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per <span>10</span> attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"「 {bannerName} 」 이벤트 기원 오픈. 이벤트 기간 동안 <span>한정</span> ★5 캐릭터 {featuredCharacter} 및 ★4 캐릭터 {rateupCharacters}의 기원 획득 확률이 <span>대폭 증가</span>합니다! <br/> <span> ※ 이번 기원은 기간 한정으로 오픈되며, 이벤트 내 모든 아이템은 추후 재출시 가능성이 있습니다. 해당 캐릭터 중 한정 캐릭터는 「 세상 여행 」 일반 기원에 추가되지 않습니다.\",\n\t\t\t\"※ 일반적인 상황에서는 모든 캐릭터와 무기에 기본 확률이 적용되며, 확률 UP 또는 천장이 발동되면 그에 상응하는 확률이 적용됩니다.\",\n\t\t\t\"〓기원 규칙〓\",\n\t\t\t\"[★5 아이템]\",\n\t\t\t\"이번 「 {bannerName} 」 이벤트 기원에서 ★5 캐릭터의 기본 획득 확률은 <span>0.600%</span>이고, 총 획득 확률(천장 포함)은 <span>1.600%</span>입니다. 최대 <span>90</span>회 기원 시 ★5 캐릭터를 반드시 획득합니다.<br/>기원에서 ★5 캐릭터 획득 시, <span>50.000%</span>의 기본 확률(즉, [별빛 포착]이 발동한 경우는 제외)로 이번 확률 UP ★5 캐릭터인 {featuredCharacter}이(가) 출현합니다.<br/>만약 이번 기원에서 획득한 ★5 캐릭터가 확률 UP 캐릭터가 아닐 경우, 다음에 획득하는 ★5 캐릭터는 <span>반드시</span> 확률 UP 캐릭터가 됩니다.<br/>「 별빛 포착 」의 기본 발동 확률은 <span>0.018%</span>이며, 「 별빛 포착 」이 발동할 때를 포함할 경우 기원에서 ★5 캐릭터 획득 시 총 <span>55.000%</span>의 확률로 해당 회차의 확률 UP ★5 캐릭터 {featuredCharacter}이(가) 출현하게 됩니다. 또한, <span>3회 연속</span>으로 두 번째에 해당 회차의 확률 UP ★5 캐릭터를 획득한 경우, 다음번에 ★5 캐릭터 기원을 진행해서 ★5 캐릭터를 획득하면 <span>확정적으로</span> 「 별빛 포착 」이 발동합니다.<br/>이번 「 {bannerName} 」 이벤트 기원에서 확률 UP ★5 캐릭터의 총 획득 확률(천장 및 별빛 포착 포함)은 <span>1.103%</span>입니다.\",\n\t\t\t\"[★5 아이템]\",\n\t\t\t\"이번 「 {bannerName} 」 이벤트 기원에서 ★4 아이템 기원의 획득 확률은 <span>5.100%</span>이고 ★4 캐릭터 기원의 획득 확률은 <span>2.550%</span>, ★4 무기 기원의 획득 확률은 <span>2.550%</span>로 ★4 아이템 기원의 총 확률(천장 포함)은 <span>13.000%</span>로 최대 <span>10</span>회 기원 시 ★4 이상의 아이템을 반드시 획득합니다.<br/>기원에서 ★4 아이템 획득 시 <span>50.000%</span>의 확률은 이번 UP 캐릭터인 {rateupCharacters} 중 하나입니다. 만약 이번 기원에서 획득한 ★4 캐릭터가 UP 캐릭터가 아닐 경우 다음에 획득할 ★4 캐릭터는 <span>무조건</span> UP 캐릭터입니다. 기원에서 ★4 UP 캐릭터를 획득하였을 시 이번 ★4 UP 캐릭터를 획득할 확률은 균등합니다.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Event Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star weapon {featuredWeapon1} and the 5-star weapon {featuredWeapon2} as well as the <span>event-exclusive</span> 4-star weapon {rateupWeapons}  will get a <span>huge drop-rate boost!</span> <br/> <span> ※ Of the above weapons, the event-exclusive weapons will not be available in the standard wish \\\"Wanderlust Invocation.\\\"</span>\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Event Wish \\\"{bannerName}\\\": Base probability of winning 5-star weapon = <span>0.700%</span>; consolidated probability (incl. guarantee) = <span>1.850%</span>; guaranteed to win 5-star weapon at least once per <span>80</span> attempts.<br/> The first time you win a 5-star weapon in this event wish, there is a <span>75.000%</span> chance it will be one of the promotional weapons {featuredWeapon1} and {featuredWeapon2}. If the first 5-star weapon you win in this event wish is not one of the promotional weapons, then the next 5-star weapon you win is <span>guaranteed</span> to be a promotional weapon. In the event that you obtain a promotional 5-star item through a wish without having maximum Fate Points, the probability of obtaining each promotional 5-star weapon is equal between all of them. <br/> For Event Wish \\\"{bannerName}\\\", you can chart a course towards your chosen promotional 5-star weapon with \\\"Epitomized Path.\\\" The choice of weapon will only be valid for this period of Event Wish \\\"{bannerName}\\\". <br/> For Event Wish \\\"{bannerName}\\\", after charting a course towards a chosen weapon with \\\"Epitomized Path,\\\" if you obtain a 5-star weapon that was not your chosen weapon, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star weapon will be <span>guaranteed</span> to be your chosen weapon. Once you have obtained the chosen weapon, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again. If you do not use the \\\"Epitomized Path\\\" to chart a course towards a chosen weapon, you will <span>not</span> receive Fate Points. <br/> After charting a course towards a chosen weapon, you can change your choice or cancel it altogether, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again. <br/> ※ The Fate Points for this Wish are only valid for the current period of Event Wish \\\"Epitome Invocation\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Event Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>6.000%</span>; base probability of winning 4-star character = <span>3.000%</span>, and base probability of winning 4-star weapon = <span>3.000%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>14.500%</span>; guaranteed to win 4-star or above item at least once per <span>10</span> attempts; probability of winning 4-star item through the guarantee = <span>99.300%</span>, and probability of winning 5-star item through the guarantee = <span>0.700%</span>. <br/> The first time you win a 4-star item in this event wish, there is a <span>75.000%</span> chance it will be one of the featured weapons {rateupWeapons}. If the first 4-star item you win in this event wish is not one of the featured weapons, then the next 4-star item you win is <span>guaranteed</span> to be a featured weapon. When you win a featured 4-star item, the probability of obtaining each featured 4-star weapon is equal between all of them.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"5-Star weapons won in this wish come with {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"4-star weapons won in this wish come with {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"3-star weapons won in this wish come with {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓중복된 캐릭터 획득 시〓\",\n\t\t\t\"text\": \"On obtaining a {rarity}-Star character that you already own (whether obtained in a wish, redeemed at the shop, or awarded by the game): The 2nd - 7th time you obtain the character, it will be converted into that character's {stellaFortuna} ×1 and {starglitter} {constBonus}; from the 8th time onwards it will be converted into {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"기원 히스토리\",\n\t\t\"text\": \"뽑기 기록\",\n\t\t\"resetButton\": \"지우기\",\n\t\t\"resetPromptTitle\": \"기록을 지우시겠습니까 ?\",\n\t\t\"resetPrompt\": \"\\\"{bannerName}\\\" 픽업 배너와 연관된 모든 캐릭터와 무기를 제거하시겠습니까?\",\n\t\t\"resetSuccess\": \"초기화 성공 !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"기원 유형\",\n\t\t\"disclaimer\": \"저희는 절대 클라우드 저장소에 당신의 정보를 저장하지 않습니다. 모든 정보는 IndexedDB에 저장되며, 이는 데이터가 당신의 브라우저 저장소에 저장된다는 것을 의미합니다. 이것은 삭제 / 초기화 버튼으로 수동으로 지우거나 브라우저 데이터를 삭제하지 않으면 삭제되지 않습니다.\",\n\t\t\"currentPity\": \"현재 스택 :\",\n\t\t\"totalPull\": \"총 기원 횟수 :\",\n\t\t\"totalSpend\": \"총 소비 :\",\n\t\t\"filterTxt\": \"필터\",\n\t\t\"filter\": \"★{rarity}\",\n\t\t\"filterAll\": \"모두\",\n\t\t\"pity\": \"스택\",\n\t\t\"timeReceived\": \"뽑기 시간\",\n\t\t\"waiting\": \"Waiting\",\n\t\t\"noData\": \"No data available .\",\n\t\t\"untracked\": \"Untracked\",\n\t\t\"win\": \"Win 50/50\",\n\t\t\"lose\": \"Lose 50/50\",\n\t\t\"guaranteed\": \"Guaranteed\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Selected Weapon\",\n\t\t\"olderLayout\": \"이전 레이아웃\",\n\t\t\"switchv2\": \"V2로 전환\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"상점 교환\",\n\t\t\"paimonBargains\": \"더스트 라이트 교환\",\n\t\t\"fateNeeded\": \"{currency}이 {rollQty}개 부족합니다.\",\n\t\t\"primoNeeded\": \"{primoPrice} 원석을 소모해 구매해야 합니다.\",\n\t\t\"purchaseUpto\": \"한정 구매 1\",\n\t\t\"purchaseConfirm\": \"상품 구매\",\n\t\t\"exchangeHeading\": \"교환 아이템\",\n\t\t\"purchaseHeading\": \"상품 구매\",\n\t\t\"purchaseButton\": \"교환\",\n\t\t\"pay\": \"결제 정보\",\n\t\t\"product\": \"상품\",\n\t\t\"consume\": \"Consume\",\n\t\t\"selectPayment\": \"결제 수단을 선택해 주세요.\",\n\t\t\"unrealWallet\": \"(가짜) 지갑\",\n\t\t\"convertPrimo\": \"원석으로 자동 변환?\",\n\t\t\"proceedPayment\": \"결제하기\",\n\t\t\"qty\": \"구매 개수\",\n\t\t\"insufficient\": \"Insufficient Funds\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"결정 구매\",\n\t\t\"initialBonus\": \"초회 보너스\",\n\t\t\"doubleBonus\": \"2배\",\n\t\t\"bonus\": \"추가 증정\",\n\t\t\"buyGenesisHeading\": \"창세의 결정 구매\",\n\t\t\"recomendedHeading\": \"추천 상품\",\n\t\t\"paimonHeading\": \"더스트 라이트 교환\",\n\t\t\"welkinNote\": \"누적 구매 가능\",\n\t\t\"limitedOffer\": \"Limited Time Offer\",\n\t\t\"noLimitTime\": \"기간 제한 상품 없음.\",\n\t\t\"paymentChilde\": \"타르탈리아\",\n\t\t\"paymentTears\": \"눈물\",\n\t\t\"paymentWakaranai\": \"치치야 사랑해\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"공월 축복\",\n\t\t\t\"newOutfit\": \"New Character Outfits\",\n\t\t\t\"dayRemaining\": \"잔여 기간: {days}일\",\n\t\t\t\"alreadyClaimed\": \"금일 수령 완료\",\n\t\t\t\"instantlyGet\": \"구매 시 획득\",\n\t\t\t\"dailyGift\": \"매일 지급\",\n\t\t\t\"obtainTotal\": \"창세의 결정 x{totalGenesis}와 원석x{totalPrimo} 누적 획득 가능!\",\n\t\t\t\"claimingBlessing\": \"눌러서 금일 공월 축복 보상 수령\",\n\t\t\t\"issuedPurchase\": \"구매시 획득\",\n\t\t\t\"collect\": \"30일 동안 일일 접속 보상 수령\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"스타라이트 교환\",\n\t\t\t\"stardust\": \"스타더스트 교환\",\n\t\t\t\"primogem\": \"원석 구매\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"창세의 결정\",\n\t\t\t\"primogem\": \"원석\",\n\t\t\t\"intertwined\": \"뒤얽힌 인연\",\n\t\t\t\"acquaint\": \"만남의 인연\",\n\t\t\t\"starglitter\": \"주인 없는 스타라이트\",\n\t\t\t\"stardust\": \"주인 없는 스타더스트\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"꿈을 이어주는 운명의 씨앗. 인연석의 빛은 접점이 없던 운명을 맞물리게 하고, 서로의 꿈을 이어준다. 마치 뭇별을 마음이 원하는 도형으로 이어준 빛처럼…\",\n\t\t\t\"acquaint\": \"밤하늘을 밝혀주는 희망의 씨앗. 아무리 멀리 떨어져 있어도 운명의 사람들은 인연석의 빛에 이끌려 별빛 아래에서 만나게 된다\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"인벤토리\",\n\t\t\"unsetOutfit\": \"Unset Outfit\",\n\t\t\"setOutfit\": \"Set Outfit to Character\",\n\t\t\"refinement\": \"제련 {count} 단계\",\n\t\t\"constellation\": \"별자리 {count} 돌파\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"{date} 파티 가입\",\n\t\t\"notOwned\": \"미획득\",\n\t\t\"sort\": \"분류\",\n\t\t\"rarity\": \"희귀도\",\n\t\t\"name\": \"이름\",\n\t\t\"quantity\": \"수량\",\n\t\t\"element\": \"원소\",\n\t\t\"release\": \"출시일\",\n\t\t\"type\": \"종류\",\n\t\t\"owned\": \"보유 상태\",\n\t\t\"showAllOption\": \"모든 {item} 보기\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"아니요\",\n\t\t\"yes\": \"예\",\n\t\t\"text\": \"메뉴\",\n\t\t\"feedback\": \"의견 보내기\",\n\t\t\"options\": \"옵션\",\n\t\t\"updates\": \"업데이트 이력\",\n\t\t\"customBanner\": \"커스텀 픽업 배너\",\n\t\t\"backupRestore\": \"백업 & 복원\",\n\t\t\"language\": \"언어\",\n\t\t\"currency\": \"통화\",\n\t\t\"fates\": \"기원 횟수\",\n\t\t\"unlimited\": \"무제한\",\n\t\t\"manual\": \"수동 입력\",\n\t\t\"mute\": \"배경음악과 효과음 음소거\",\n\t\t\"switchBanner\": \"픽업 배너 변경\",\n\t\t\"showAllitems\": \"인벤토리의 모든 항목 보기\",\n\t\t\"autoskip\": \"스플래시 아트 자동 스킵\",\n\t\t\"animatedbg\": \"배경화면 애니메이션\",\n\t\t\"multiRoll\": \"연차의 기원 횟수\",\n\t\t\"factoryReset\": \"데이터를 지우고 초기값으로 되돌리기\",\n\t\t\"resetTitle\": \"초기화\",\n\t\t\"rotate\": \"더 나은 경험을 위해 화면을 회전하세요.\",\n\t\t\"keepSetting\": \"설정을 유지하시겠습니까? <small> 스택, 설정값, 그리고 소비한 재화량은 삭제되지 않습니다.</small>\",\n\t\t\"clearCache\": \"캐시를 삭제하시겠습니까 ( {size} ) ? <small> 이 작업 이후로 캐시된 리소스를 다시 불러옵니다. </small>\",\n\t\t\"resetButton\": \"지금 지우기\",\n\t\t\"resetPrompt\": \"<strong> 모든 데이터 </strong>를 삭제하고 초기값으로 되돌리시겠습니까?\",\n\t\t\"resetSuccess\": \"초기화 성공\",\n\t\t\"proAccess\": \"프로 기능\",\n\t\t\"getpro\": \"프로 기능 활성화\",\n\t\t\"removeKey\": \"키 삭제\",\n\t\t\"removeKeyConfirm\": \"현재 키를 삭제하시겠습니까? 새로운 키를 입력하기 전까지 모든 혜택을 이용할 수 없게됩니다!\",\n\t\t\"getNewKey\": \"새로운 키를 여기서 구매하세요!\",\n\t\t\"noKey\": \"키가 없으신가요?\",\n\t\t\"verifyFail\": \"키를 검증하는 것을 실패했습니다. 인터넷 연결을 확인해주세요!\",\n\t\t\"invalidKey\": \"유효하지 않은 키입니다.\",\n\t\t\"keyExpired1\": \"만료된 키입니다!\",\n\t\t\"keyExpired2\": \"당신의 키는 \\\"{key}\\\" {date} 이후로 만료되었습니다!\",\n\t\t\"adFreeUser\": \"이미 프로 기능을 이용할 수 있습니다!\",\n\t\t\"inputKeyPlaceholder\": \"키 입력\",\n\t\t\"inputKeyTxt\": \"혜택을 받기 위해 키를 입력하세요 !\",\n\t\t\"checkingKey\": \"저장된 키를 검증하는 중\",\n\t\t\"benefit\": \"혜택\",\n\t\t\"authorNotes\": [\n\t\t\t\"광고 제거\",\n\t\t\t\"무제한 커스텀 픽업 배너\",\n\t\t\t\"같은 키를 {HSRWishSim}에 사용해 같은 혜택을 받을수 있습니다.\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/pt-BR.json",
    "content": "{\n\t\"title\": \"Simulador De Orações Do Genshin Impact\",\n\t\"item\": \"Item\",\n\t\"character\": \"Personagem\",\n\t\"weapon\": \"Arma\",\n\t\"vision\": \"Visão\",\n\t\"anemo\": \"Anemo\",\n\t\"cryo\": \"Cryo\",\n\t\"dendro\": \"Dendro\",\n\t\"electro\": \"Electro\",\n\t\"hydro\": \"Hydro\",\n\t\"geo\": \"Geo\",\n\t\"pyro\": \"Pyro\",\n\t\"bow\": \"Arco\",\n\t\"catalyst\": \"Catalisador\",\n\t\"claymore\": \"Espadão\",\n\t\"sword\": \"Espada\",\n\t\"polearm\": \"Lança\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"Obtido\",\n\t\"waiting\": \"Aguardando\",\n\t\"connectionFailed\": \"Falha na conexão!\",\n\t\"confirmButton\": \"Confirmar\",\n\t\"cancelButton\": \"Cancelar\",\n\t\"disclaimer\": \"Todos os ativos utilizados neste site são de propriedade da Mihoyo.\",\n\t\"fanmade\": \"Esta é uma aplicação feita por um fã, aproveite-a !\",\n\t\"pressToContinue\": \"Pressione em qualquer espaço vazio para continuar\",\n\t\"installInstruction\": \"Instruções para instalar a versão Desktop\",\n\t\"share\": \"Compartilhar\",\n\t\"screenshot\": \"Capturar tela\",\n\t\"capturing\": \"Capturando\",\n\t\"rewardFirstShare\": \"Recompensa pelo primeiro compartilhamento : {qty}\",\n\t\"version\": \"Versão\",\n\t\"donate\": \"Doe\",\n\t\"banner\": {\n\t\t\"beginner\": \"Oração de Novatos\",\n\t\t\"wanderlust\": \"Invocação do Mochileiro\",\n\t\t\"epitome-invocation\": \"Encarnação Divina\",\n\t\t\"ode-to-the-dawn-breeze\": \"#Poesia da# Manhã\",\n\t\t\"adrift-in-the-harbor\": \"Perguntas Temporárias\",\n\t\t\"ambrosial-essence\": \"#Fragrância do# Orvalho\",\n\t\t\"ancient-flame-ablaze\": \"Chama Ancestral\",\n\t\t\"astral-actuation\": \"Pulsar #Cósmico#\",\n\t\t\"auric-blaze\": \"Fulgor Dourado\",\n\t\t\"azure-excursion\": \"Correntes Florais\",\n\t\t\"ballad-in-goblets\": \"#Poemas# em Taças\",\n\t\t\"born-of-ocean-swell\": \"Formação das #Ondas#\",\n\t\t\"caution-in-confidence\": \"Estratégia #Imperativa#\",\n\t\t\"chanson-of-many-waters\": \"Ode às #Águas#\",\n\t\t\"conjuring-chiaroscuro\": \"Técnica da #Luz e Sombra#\",\n\t\t\"cornucopia-of-contention\": \"#Banquete# dos Chifres Travados\",\n\t\t\"dance-of-lantern\": \"Dança das #Lanternas#\",\n\t\t\"dawns-drifting-reverie\": \"#Sonho Doce# com Ipomeias\",\n\t\t\"decree-of-the-deeps\": \"#A Ordem# das Profundezas\",\n\t\t\"dewlit-tranquility\": \"Tranquilidade do #Orvalho#\",\n\t\t\"discerner-of-enigmas\": \"Discernidora de #Enigmas#\",\n\t\t\"drifting-luminescence\": \"Luminescência à #Deriva#\",\n\t\t\"everbloom-violet\": \"Sakura Roxa Eterna\",\n\t\t\"farewell-of-snezhnaya\": \"Despedida para o Norte\",\n\t\t\"forgefires-blessing\": \"Bênção do #Fogo da Forja#\",\n\t\t\"from-ashes-reborn\": \"Fogo #Oculto#\",\n\t\t\"gentry-of-hermitage\": \"Aristocracia Ermida\",\n\t\t\"harmonious-abundance\": \"Aurora da #Abundância#\",\n\t\t\"illuminating-lightning\": \"Relâmpago Perfura-Noite\",\n\t\t\"immaculate-pulse\": \"Coração #Imaculado#\",\n\t\t\"in-the-name-of-the-rosula\": \"Juramento Eterno da #Rosa#\",\n\t\t\"invitation-to-mundane-life\": \"#Convite# de Chamas\",\n\t\t\"la-chanson-cerise\": \"Canção do #Morango#\",\n\t\t\"leaves-in-the-wind\": \"#Folhas# ao Vento\",\n\t\t\"moment-of-bloom\": \"Momento de #Florescer#\",\n\t\t\"moonsong-of-the-groves\": \"Canção Lunar da #Floresta#\",\n\t\t\"of-silken-clouds-woven\": \"#Haori# das Mil Nuvens\",\n\t\t\"oni_s-royale\": \"Batalha do #Reino Oni#\",\n\t\t\"piercing-shots-crimson-wake\": \"Dispersão #Carmesim#\",\n\t\t\"reign-of-serenity\": \"#Reino# da Serenidade\",\n\t\t\"remembrance-of-jade-and-stone\": \"Memórias de #Jade#\",\n\t\t\"romaritime-meluserenity\": \"Coração Rociomarinho\",\n\t\t\"roving-chalice-of-dewgrass\": \"Cálice Errante da #Grama do Orvalho#\",\n\t\t\"rubedo-of-white-stone-born\": \"#Albita# Rubedo\",\n\t\t\"sharktacular-surfari\": \"#Tubarão# Surfando nas Ondas\",\n\t\t\"secretum-secretorum\": \"Noites Enigmáticas\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Caça aos Segredos# das Chamas\",\n\t\t\"somnias-a-luna\": \"Sonhos da #Sombra da Lua#\",\n\t\t\"sparkling-steps\": \"Passos #Flamejantes#\",\n\t\t\"starry-nights-whispers\": \"#Sussurros# Estelares\",\n\t\t\"tapestry-of-golden-flames\": \"#Chama# da Via Láctea\",\n\t\t\"tempestuous-destiny\": \"#Inundado# Junto à Calamidade\",\n\t\t\"temptation-of-the-crimson-sands\": \"Tentação das #Areias Escarlates#\",\n\t\t\"the-crane-soars-skyward\": \"Moradia Etérea da #Garça#\",\n\t\t\"the-hearths-ashen-shadow\": \"Cinzas #da Fogueira#\",\n\t\t\"the-heron_s-court\": \"Jardim da #Garça#\",\n\t\t\"the-lone-light-knocks-at-night\": \"#Visita Iluminada# da Solidão Noturna\",\n\t\t\"the-moongrass-enlightenment\": \"#A Sabedoria# da Erva da Lua\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"A Canção de Triunfo do #Vento Norte#\",\n\t\t\"the-transcendent-one-returns\": \"#A Volta# do Transcendente\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Trovão# Atravessando o Céu\",\n\t\t\"twilight-arbiter\": \"#Árbitro# do Crepúsculo\",\n\t\t\"twirling-lotus\": \"Lótus #Giratória#\",\n\t\t\"viridescent-vigil\": \"Patrulha #Esverdeada#\",\n\t\t\"void-stars-advent\": \"#Estrela Vazi# Passageira\",\n\t\t\"ya-hoho-compendium\": \"Compêndio #Ya-hoho!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Caminho Divino\",\n\t\t\"fatePoint\": \"Pontos do Destino\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Deseja cancelar o caminho atual ?\",\n\t\t\"cancelDesc\": \"Cancelar irá resetar seus Pontos do Destino acumulados\",\n\t\t\"selectWeapon\": \"Selecionar Arma\",\n\t\t\"chartCourseOf\": \"Marcar Caminho para {target}\",\n\t\t\"cancelCourse\": \"Cancelar Caminho\",\n\t\t\"chartCourse\": \"Marcar Caminho\",\n\t\t\"courseSetFor\": \"Caminho Marcado para: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Caminho Divino\\\" é uma mecânica incluída nessa \\\"Encarnação Divina\\\":\",\n\t\t\t\"Quando você tiver marcado a arma de sua escolha, <span>se receber uma Arma de 5 estrelas que não é a que você escolheu, você obterá 1 Ponto do Destino</span>. Você pode acumular até 2 Pontos do Destino.\",\n\t\t\t\"Quando você acumular pontos do destino suficientes, sua próxima Arma de 5 estrelas será a que você escolheu no \\\"Caminho Divino\\\".\",\n\t\t\t\"Quando você obter a arma escolhida no Caminho Divino, <span>os Pontos do Destino acumulados serão zerados</span>.\",\n\t\t\t\"Se você não usar o Caminho Divino, não acumulará Pontos do Destino.\",\n\t\t\t\"O caminho escolhido pode ser modificado ou cancelado. Entretanto, ao fazer isso, os Pontos do Destino serão zerados.\",\n\t\t\t\"No fim do período atual do Banner de armas, os Pontos do Destino serão zerados.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Orar\",\n\t\t\"rollButton\": \"Orar {count}\",\n\t\t\"stellaFortuna\": \"Stella Fortuna\",\n\t\t\"loadFailed\": \"Falha ao carregar o banner! <br /> Por favor, troque para outro banner ou verifique sua conexão à internet.\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"Todos os Banners\",\n\t\t\t\"previous\": \"Banner Anterior\",\n\t\t\t\"findBanner\": \"Encontre um Banner\",\n\t\t\t\"group\": \"Agrupar\",\n\t\t\t\"beginner\": \"Oração de Novatos\",\n\t\t\t\"character-event\": \"Oração de Evento de Personagem\",\n\t\t\t\"weapon-event\": \"Oraçaõ de Arma\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Desejo Comum\",\n\t\t\t\"wishDescription\": \"A cada 10 Orações, é garantida a inclusão de pelo menos um item de 4 estrelas ou superior.\",\n\t\t\t\"novice\": \"Oração de Novatos\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"Desconto de 20% para o conjunto de 10. Garantido a obtenção da Noelle\",\n\t\t\t\"beginnerNote\": \"\\\"Eu sei exatamente como me comportar como uma empregada.\\\"\",\n\t\t\t\"beginnerChance\": \"Chance(s) Restante(s): {chances}\",\n\t\t\t\"standardNote\": \"Os desejos padrões não têm limite de tempo.\",\n\t\t\t\"allWeaponTypes\": \"Todos os tipos de Arma\",\n\t\t\t\"etc\": \"etc.\",\n\t\t\t\"probIncreased\": \"Probabilidade aumentada!\",\n\t\t\t\"eventNote\": \"Os personagens ilimitados de 5 estrelas só podem ser obtidos na oração correspondente.\",\n\t\t\t\"viewDetails\": \"Leia Detalhes para mais informações.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Pular\",\n\t\t\t\"meteorFailed\": \"Falha ao carregar animação de cometa\",\n\t\t\t\"new\": \"Novo\",\n\t\t\t\"convertion\": \"Convertido\",\n\t\t\t\"title\": \"Resultado da oração para {item} et al\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Estilos de Personagem\",\n\t\t\"default\": \"Padrão\",\n\t\t\"setOutfit\": \"Colocar Vestimenta\",\n\t\t\"owned\": \"Já Adquirida\",\n\t\t\"purchasePrompt\": \"Você ainda não possui o personagem que pode usar esta vestimenta, você têm certeza que deseja comprá-la?\",\n\t\t\"promptInfo\": \"Você ainda poderá usá-la quando conseguir o personagem.\",\n\t\t\"obtained\": \"Nova Vestimenta Obtida\",\n\t\t\"unlocked\": \"{character}: Vestimenta Desbloqueada\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"5-Star Outrider\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Favonian Devotion\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Flowing Fate\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Executor's Thorns\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Sea Breeze Dandelion\",\n\t\t\t\t\"description\": \"Jean's summer wear. Light and cool, but no less elegant for it. The perfect choice for a trip to the seaside.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Summertime Sparkle\",\n\t\t\t\t\"description\": \"Barbara's beach attire. This pretty skirt brims with summer vitality and carries with it a cool ocean breeze.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Opulent Splendor\",\n\t\t\t\t\"description\": \"Keqing's formal wear. Amidst the beautiful dawn of the Lantern Rite, the threads weaved by days of hard work intertwine into a light yet magnificent appearance.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Orchid's Evening Gown\",\n\t\t\t\t\"description\": \"Ningguang's formal wear. The long cyan skirt traces her elegant curves, and the butterfly wings at her ankles lend the outfit a touch of light grace.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Ein Immernachtstraum\",\n\t\t\t\t\"description\": \"A ceremonial outfit for the Prinzessin. May she who is noble retain her courage, sincerity, and kindness forever, such that no evil shall ever overcome her.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Red Dead of Night\",\n\t\t\t\t\"description\": \"One of the outfits Diluc wears during covert actions, it resembles a flame dancing in the shadows. The crimson red traces it leaves behind at the edges of the enemy's vision will scar their nightmares forever.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"A Sobriquet Under Shade\",\n\t\t\t\t\"description\": \"An outfit Lisa had someone commission for her when she revisited Sumeru. A perfect balance between practicality and elegance, the dress bears a resemblance to Lisa’s old uniform from the Akademiya days.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Springbloom Missive\",\n\t\t\t\t\"description\": \"Ayaka’s travel outfit. Its design is based on the Fontaine dresses depicted in light novel illustrations and seems to reflect the lifestyle of proper ladies who live in that nation.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Luz Estelar Florescente\",\n\t\t\t\t\"description\": \"Uma vestimenta requintada que a Klee usa apenas para as apresentações mais importantes. As cores são brilhantes, como um bolo de creme decorado com flores e coroado com velas escarlates. Com ela, felicidades e sorrisos irão encher suas aventuras.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Sombra da Vela Tremulante\",\n\t\t\t\t\"description\": \"Vestimenta do Kaeya enquanto fazia o papel de Bandido da Adaga. Embora seja uma vestimenta extravagante, feita para chamar o máximo de atenção possível, não é difícil de vestir, embora seja necessário um bom tempo para lidar com todos os acessórios e adagas.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Orvalho das Flores Congeladas\",\n\t\t\t\t\"description\": \"Esse presente do Ritual de Lanternas que Shenhe ganhou é um conjunto elegante e formal que sua Mestre, Retentora de Nuvem, pediu para ela. Cordas vermelhas adornam seus braços, mas o frio do coração de Shenhe desapareceu.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Fragrância Preciosa do Jade Preto\",\n\t\t\t\t\"description\": \"Um vestuário festivo leve e gracioso predominantemente preto e azul. O acessório no cabelo é radiante como a Qingxin, uma combinação que Ganyu adora.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Bambu da Chuva\",\n\t\t\t\t\"description\": \"Roupas formais da Guilda de Comerciantes de Feiyun para Xingqiu. Os bordados de bambu são refinados e lhe fazem vantagem, mas o aspecto favorito da roupa para Xingqiu são os bolsos internos, assim ele pode guardar uma novel.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Beleza Errante\",\n\t\t\t\t\"description\": \"Vestuário de Kirara. A espadachim felina famosa nos contos de fada, a esperta mensageira de sonhos queridos... Prazer em conhecer!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Suspiro do Acrídio\",\n\t\t\t\t\"description\": \"Um traje elegante para Nilou, este vestido leve parece ser tecido de inúmeras flores, e com ele flutua uma fragrância suave como o vento leste ao amanhecer, trazendo belas bênçãos de uma terra de contos de fadas.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Cerejas Cobertas de Neve\",\n\t\t\t\t\"description\": \"Vestuário de Hutao. Diferente do traje cerimonial escuro da Funerária Wangsheng, este vestido em tons sóbrios foi um presente especial de sua amiga Xiangling. Os óculos escuros são da coleção pessoal dela.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Alegria de Ano Novo\",\n\t\t\t\t\"description\": \"Vestuário de Xiangling. O casaco vermelho brilha como um forno em meio a ventos gelados, combinado com um chapéu, sob sugestão de Hutao, ele tirou inspiração da aparência de Guoba — um design que está bem no estilo de Xiangling.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Banquete de Serenidade\",\n\t\t\t\t\"description\": \"O vestuário que Yelan preparou para suas férias. Elegante, porém estilosa, transmite uma sensação de lazer enquanto ainda carrega um toque de agressão disfarçada…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Jornada das Chamas\",\n\t\t\t\t\"description\": \"Vestuário de viagem de Natlan de Bennett. As cores principais são azul-lago e laranja flamejante, que exalam vitalidade, assim como essa terra.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Presente Melusente\",\n\t\t\t\t\"description\": \"Um presente surpresa para Neuvillette. A alegria não apenas vem do próprio presente, mas de todas as pequenas mãos que ajudaram a fazê-lo. Assim como os rios se unem no mar infinito, as gotas de orvalho também podem se unir para criar um milagre que brilha com uma luz iridescente.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Canção do Bambu na Chuva\",\n\t\t\t\t\"description\": \"Vestuário de Yaoyao. As sombras dos novos brotos roçam sobre a mesa, os ventos trouxeram outro convidado.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Detalhes\",\n\t\t\"promotional\": \"Itens Promocionais\",\n\t\t\"itemlist\": \"Lista de Itens\",\n\t\t\"increasedRate\": \"Taxa de Drop Aumentada\",\n\t\t\"percentageDrop\": \"Porcentagem de drop de itens {rarity} estrelas: {percentage}\",\n\t\t\"wishDetails\": \"Detalhes da Oração\",\n\t\t\"probInfo\": \"Probabilidade de Drop e Itens de {rarity} Estrelas: {singlePercentage} (Incl. garantia: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Lista de Itens da Oração:\",\n\t\t\"itemType\": \"Tipo de Item\",\n\t\t\"itemName\": \"Nome do Item\",\n\t\t\"beginnerInfo\": \"Sem limite de tempo (Termina após 20 orações)\",\n\t\t\"limited\": \"Evento de tempo limitado\",\n\t\t\"permanent\": \"Permanente\",\n\t\t\"alert\": \"※ Esta é uma {wishName}. A contagem de garantias é apenas para este evento e independente da contagem das outras orações.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"A oração de <span> Novatos </span> não têm limite de tempo e é voltada para viajantes que chegaram recentemente em Teyvat. Uma seleção limitada de personagens e armas não promocionais está disponível.<br /> Na Oração de Novatos, o conjunto de 10 orações gasta <span> 20%</span> menos Destinos Familiares. No primeiro conjunto de 10 orações é garantida a obtenção de {character}, e no segundo conjunto de 10 orações é garantida a obtenção de algum <span>outro</span> personagem de 4 estrelas! <br/> O Desejo de Novatos expira após <span>20</span> tentativas. Depois que ele expirar, a página irá desaparecer.\",\n\t\t\t\"※ Em circunstâncias normais, todos os personagens ou armas são aplicáveis às probabilidades básicas. Em casos de probabilidades aumentadas, consulte as regras das garantias.\",\n\t\t\t\"〓Regras〓\",\n\t\t\t\"Probabilidade base de obter um personagem de 5 Estrelas<span> 0,600%</span> <br /> Probabilidade base de obter um personagem de 4 Estrelas<span> 5,100%</span>; probabilidade conjunta (incl. garantia) = <span> 13,000%</span>.\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" é uma oração comum sem limite de tempo, onde personagens e armas não limitadas estão disponíveis.<br/> Nesta Oração, a cada conjunto de 10 orações, é  <span>garantido</span> que inclua pelo menos um item de 4 estrelas ou superior.\",\n\t\t\t\"※Em circunstâncias normais, todos os personagens ou armas são aplicáveis às probabilidades básicas. Em casos de probabilidades aumentadas, consulte as regras das garantias.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"A probabilidade base de obter um item de 5 estrelas é de <span>0,600%</span>, a probabilidade base de obtenção de um personagem 5 estrelas é de <span>0,300%</span>, a probilidade base de obtenção de um personagem 5 estrelas é de <span>0,300%</span>; e a probabilidade conjunta de obter um item de 5 estrelas é de <span>1.600%</span>. É garantido um item de 5 estrelas pelo menos uma vez a cada <span>90</span> tentativas. <br>A probabilidade base de obter um item de 4 estrelas é de <span>5,100%</span>, a probabilidade base de obtenção de uma arma 4 estrelas é de <span>2.550%</span>, a probabilidade base de obtenção de uma arma de 4 estrelas é de <span>2,550%</span> e a probabilidade conjunta de obter um item de 4 estrelas (incl. garantia) é de <span>13,000%</span>. É gatantido um item de 4 estrelas pelo menos uma vez a cada <span>10</span> tentativas, em que a probabilidade de obtenção de um item de 4 estrelas é de <span>99,400%</span>, e a probabilidade de de um item de 5 estrelas é de <span>0,600%</span>.\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Disponível agora, Oração de Evento - \\\"{bannerName}\\\". Durante o período do evento, o(a) <span>personagem limitado(a)</span> de 5 estrelas {featuredCharacter} e os personagens de 4 estrelas {rateupCharacters} receberão um <span>grande aumento na taxa de drop</span>! <br/> <span> ※ Personagens limitados citados acima não entrarão na Oração Comum \\\"Invocação do Mochileiro.\\\"</span>\",\n\t\t\t\"※ Em circunstâncias normais, todos as personagens ou armas são aplicáveis às probabilidades básicas. Em casos de probabilidades aumentadas, consulte as regras das garantias.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"Itens de 5 Estrelas\",\n\t\t\t\"Na Oração de Evento - \\\"{bannerName}\\\", a probabiilidade base de obter um personagem 5 estrelas é de <span> 0,600% </span>, e a probabilidade conjunta (incl. garantia) é de <span>1,600%</span>; É garantida a obtenção de um personagem 5 estrelas uma vez a cada<span> 90</span> tentativas.<br/> Ao obter um personagem 5 estrelas nesta Oração de Evento, há<span> 50,000%</span> de chance de ser o(a) personagem promocional {featuredCharacter}. Se o(a) primeiro personagem 5 estrelas obtido nesta Oração de Evento não for o(a) personagem promocional desta edição, então é<span> garantido</span> que o(a) próximo(a) personagem 5 estrelas que você obtiver seja o(a) personagem promocional.\",\n\t\t\t\"Itens de 4 Estrelas\",\n\t\t\t\"Na Oração de Evento - \\\"{bannerName}\\\", a probabilidade base de obter um item de 4 estrelas é de <span> 5,100%</span>, a probabilidade base de obter um personagem 4 estrelas é de <span>2,550%</span>,a probabilidade base de obter uma arma de 4 estrelas é de<span> 2,550%</span>, e a probabilidade conjunta de obter um item de 4 estrelas (incl. garantia) é de<span> 13,000%</span>. É garantido um item de 4 estrelas ou mais pelo menos uma vez a cada <span>10</span> tentativas, onde a probabilidade de obter um item de 4 estrelas através da garantia é de <span>99,400%</span> e a probabilidade de obter um item de 5 estrelas é de<span> 0,600%</span>. <br/> Ao obter um item de 4 estrelas nesta Oração de Evento, há<span> 50,000%</span> de chance de ser o(a) personagem promocional {rateupCharacters}. Caso o primeiro item de 4 estrelas obtido nesta Oração de Evento não seja os personagens promocionais, então é <span>garantido</span> que o próximo item de 4 estrelas que você obtivver seja um dos personagens promocionais desta edição. Quando um item promocional de 4 estrelas é obtido durante as orações, a probabilidade de obtenção de qualquer personagem de 4 estrelas promocional do evento será igual.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Disponível agora, Oração de Evento - \\\"{bannerName}\\\". Durante o período do evento, as armas <span>limitadas</span> de 5 estrelas {featuredWeapon1}, {featuredWeapon2}, a arma <span>limitada</span> de 4 estrelas {rateupWeapons} receberão um <span>grande aumento na taxa de drop</span>! <br/> <span> ※ Armas limitadas citadas acima não entrarão na Oração Comum \\\"Invocação do Mochileiro.\\\"</span>\",\n\t\t\t\"※ Em circunstâncias normais, todos os personagens ou armas são aplicáveis às probabilidades básicas. Em casos de probabilidades aumentadas, consulte as regras das garantias.\",\n\t\t\t\"〓Regras〓\",\n\t\t\t\"Itens de 5 Estrelas\",\n\t\t\t\"Na Oração de Evento \\\"{bannerName}\\\", a probabilidade base de obter uma arma 5 estrelas é de<span> 0,700%</span> e a probabilidade conjunta (incl. garantia) é de <span>1,850%</span>. É garantida a obtenção de uma arma 5 estrelas uma vez a cada <span>80</span> tentativas.<br/> Ao obter uma arma de 5 estrelas nesta Oração de Evento, há <span>75,000%</span> de chance de ser uma das armas promocionais de 5 estrelas desta edição, {featuredWeapon1} ou {featuredWeapon2}. Se a primeira arma de 5 estrelas obtida nesta Oração de Evento não for a arma promocional, então é <span>garantido</span> que a próxima arma de 5 estrelas que você obtiver seja a arma promocional. Quando a arma selecionada é obtida antes de atingir o máximo de Pontos do Destino, ao obter o item promocional de 5 estrelas na oração, a probabilidade de obtenção de qualquer arma 5 estrelas promocial do evento será igual.<br/> Durante a Oração de Evento - \\\"{bannerName}\\\", utilize o \\\"Caminho Divino.\\\" e marque um caminho para uma das armas promocionais de 5 estrelas deste evento. A arma selecionada só será válida para a Oração de Evento - \\\"{bannerName}\\\". <br/> Durante a Oração de Evento - \\\"{bannerName}\\\", ao obter uma arma de 5 estrelas que não foi selecionada previamente com o \\\"Caminho Divino\\\", 1 Ponto do Destino será obtido, quando o Ponto do Destino chegar no <span>máximo</span> a próxima arma de 5 estrelas obtida na oração será <span>certamente</span> a arma previamente selecionada. Após obter a arma selecionada, independente de ter ou não alcançado o máximo, o Ponto do Destino será redefinido, para voltar a ser acumulado do <span>0</span>. <br/> Em casos onde o \\\"Caminho Divino\\\" não foi utilizado para selecionar armas, <span>não será</span> acumulado Pontos do Destino. <br/> É possível trocar ou cancelar a arma selecionada. Ao trocar ou cancelar a arma selecionada, os Pontos do Destino serão redefinidos, para voltarem a ser acumulados do <span>0</span>. ※ Os Pontos do Destino desta oração só serão válidos na Oração de Evento - \\\"Encarnação Divina\\\". Após o fim da oração, os Pontos do Destino serão redefinidos, para voltarem a ser acumulados do <span>0</span>.\",\n\t\t\t\"Itens de 4 Estrelas\",\n\t\t\t\"Durante a Oração de Evento - \\\"{bannerName}\\\", a probabilidade base de obter um item de 4 estrelas é de <span>6,000%</span>, a probabilidade base de obtenção de um personagem de 4 estrelas é de <span>3,000%</span>, a probabilidade base de obtenção de uma arma de 4 estrelas é de <span>3,000%</span> e a probabilidade conjunta de obter um item de 4 estrelas (incl. garantia) é de <span>14,500%</span>. É garantido um item de 4 estrelas ou mais pelo menos uma vez a cada <span>10</span> tentativas, onde a probabilidade de obter um item de 4 estrelas através da garantia é de <span>99,300%</span> e a probabilidade de obter um item de 5 estrelas é de<span>0,700%</span>. <br/> AO obter um item de 4 estrelas nesta Oração de Evento, há <span>75,000%</span> de chance de ser a arma promocional {rateupWeapons}. Caso o primeiro item de 4 estrelas obtido nesta Oração de Evento não seja as armas promocionais, então é <span>garantido</span> que o próximo item de 4 estrelas que você obtiver seja uma das armas promocionais desta edição. Quando um item promocional de 4 estrelas é obtido durante as oração, a probabilidade de obtenção de qualquer arma de 4 estrelas promocional do evento será igual.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"As armas de 5 estrelas obtidas nesta oração vêm com {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"As armas de 4 estrelas obtidas nesta oração vêm com {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"As armas de 3 estrelas obtidas nesta oração vêm com {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓Personagens Duplicados〓\",\n\t\t\t\"text\": \"Ao obter um personagem {rarity} estrelas que você já possui (mesmo quando obtido em oração, resgatado na loja ou no jogo): Na 2ª - 7ª vez que obter o personagem, ele será convertido na {stellaFortuna} ×1 do personagem e {starglitter} {constBonus}; a partir da 8ª aquisição, ele será convertido em {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Histórico de Orações\",\n\t\t\"text\": \"Histórico\",\n\t\t\"resetButton\": \"Limpar\",\n\t\t\"resetPromptTitle\": \"Limpar Histórico ?\",\n\t\t\"resetPrompt\": \"Esta ação também vai remover todos os Personagens e Armas relacionadas ao \\\"{bannerName}\\\" Banner do Inventário. <br /> Você tem certeza de que deseja resetar ?\",\n\t\t\"resetSuccess\": \"Resetado com Sucesso\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Tipo de Oração\",\n\t\t\"disclaimer\": \"Nós nunca salvamos dados na nuvem. Todos os dados são guardados em IndexedDB, ou seja, no armazenamento do seu navegador. Os dados não serão deletados a menos que você delete manualmente, além de usar o botão 'Limpar' ou limpar os dados de navegação.\",\n\t\t\"currentPity\": \"Pity atual :\",\n\t\t\"totalPull\": \"Total de orações:\",\n\t\t\"totalSpend\": \"Total Gasto :\",\n\t\t\"filterTxt\": \"Filtrar\",\n\t\t\"filter\": \"{rarity} Estrelas\",\n\t\t\"filterAll\": \"Todos\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"Recebido em\",\n\t\t\"waiting\": \"Aguardando\",\n\t\t\"noData\": \"Sem dados disponíveis.\",\n\t\t\"untracked\": \"Não rastreado\",\n\t\t\"win\": \"Ganhar 50/50\",\n\t\t\"lose\": \"Perder 50/50\",\n\t\t\"guaranteed\": \"Garantido\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Arma Selecionada\",\n\t\t\"olderLayout\": \"Layout Antigo\",\n\t\t\"switchv2\": \"Voltar para a V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Loja\",\n\t\t\"paimonBargains\": \"Barganhas da Paimon\",\n\t\t\"fateNeeded\": \"Um Adicional de {rollQty} {currency} é necessário\",\n\t\t\"primoNeeded\": \"Comprar com {primoPrice} Gemas Essenciais ?\",\n\t\t\"purchaseUpto\": \"Limite de compras: 1\",\n\t\t\"purchaseConfirm\": \"Confirmar Compra\",\n\t\t\"exchangeHeading\": \"Trocar Item\",\n\t\t\"purchaseHeading\": \"Comprar Item\",\n\t\t\"purchaseButton\": \"Comprar\",\n\t\t\"pay\": \"Pagar\",\n\t\t\"product\": \"Produto\",\n\t\t\"consume\": \"Consume\",\n\t\t\"selectPayment\": \"Selecione a forma de Pagamento\",\n\t\t\"unrealWallet\": \"Carteira Ilimitada\",\n\t\t\"convertPrimo\": \" Converter Automaticamente para Gemas Essenciais ?\",\n\t\t\"proceedPayment\": \"Continuar para o pagamento\",\n\t\t\"qty\": \"Qtd\",\n\t\t\"insufficient\": \"Fundos Insuficientes\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Recarga de Cristal\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Comprar Cristais Genesys\",\n\t\t\"recomendedHeading\": \"Recomendado\",\n\t\t\"paimonHeading\": \"Barganhas da Paimon\",\n\t\t\"welkinNote\": \"Pode ser comprado múltiplas vezes\",\n\t\t\"limitedOffer\": \"Oferta por Tempo Limitado\",\n\t\t\"noLimitTime\": \"Itens disponíveis sem limite de tempo\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Benção da Lua Nova\",\n\t\t\t\"newOutfit\": \"Novos Estilos de Personagem\",\n\t\t\t\"dayRemaining\": \"Dias Restantes {days}\",\n\t\t\t\"alreadyClaimed\": \"Já resgatado hoje\",\n\t\t\t\"instantlyGet\": \"Ganhe Imediatamente\",\n\t\t\t\"dailyGift\": \"Presente Diário\",\n\t\t\t\"obtainTotal\": \"Obtenha um total de {totalGenesis} Cristais Gênesis e {totalPrimo} Gemas Essenciais ao longo de 30 dias\",\n\t\t\t\"claimingBlessing\": \"Clique para resgatar suas recompensas diárias da Benção da Lua Nova.\",\n\t\t\t\"issuedPurchase\": \"Erro ao comprar\",\n\t\t\t\"collect\": \"Colete recompensas por login diário durante 30 dias.\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Resgate de Brilho Estelar\",\n\t\t\t\"stardust\": \"Resgate de Poeira Estelar\",\n\t\t\t\"primogem\": \"Comprar com Gemas Essenciais\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Cristais Genesys\",\n\t\t\t\"primogem\": \"Gemas Essenciais\",\n\t\t\t\"intertwined\": \"Destino Entrelaçado\",\n\t\t\t\"acquaint\": \"Destino Familiar\",\n\t\t\t\"starglitter\": \"Brilho Estelar\",\n\t\t\t\"stardust\": \"Poeira Estelar\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Uma pedra do destino que conecta sonhos. O seu brilho pode entrelaçar e conectar sonhos, assim como seu brilho pode conectar as estrelas em formatos de desejos de um coração.\",\n\t\t\t\"acquaint\": \"Uma semente que pode iluminar a noite. Não importa a distância, guiada pelo brilho da pedra, o sesejo do destino será encontrado sob as estrelas.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Inventório\",\n\t\t\"unsetOutfit\": \"Remover Vestimenta\",\n\t\t\"setOutfit\": \"Aplicar Vestimenta ao Personagem\",\n\t\t\"refinement\": \"Refinamento {count}\",\n\t\t\"constellation\": \"Constelação {count}\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"Primeira invocação em : {date}\",\n\t\t\"notOwned\": \"Não Adquirido\",\n\t\t\"sort\": \"Organizar\",\n\t\t\"rarity\": \"Raridade\",\n\t\t\"name\": \"Nome\",\n\t\t\"quantity\": \"Quantidade\",\n\t\t\"element\": \"Elemento\",\n\t\t\"release\": \"Data de lançamento\",\n\t\t\"type\": \"Type\",\n\t\t\"owned\": \"Adquirido\",\n\t\t\"showAllOption\": \"Mostrar todos os Personagens\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Não\",\n\t\t\"yes\": \"Sim\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Configurações\",\n\t\t\"updates\": \"Histórico de atualizações\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Idioma\",\n\t\t\"currency\": \"Moeda\",\n\t\t\"fates\": \"Number of Wishes\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"Mutar áudio e efeitos sonoros\",\n\t\t\"switchBanner\": \"Trocar Banner\",\n\t\t\"showAllitems\": \"Mostrar todos os itens no Invetário\",\n\t\t\"autoskip\": \"Pular automaticamente animação de oração\",\n\t\t\"animatedbg\": \"Plano de fundo animado\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Limpar dados e restaurar padrão\",\n\t\t\"resetTitle\": \"Limpar dados\",\n\t\t\"rotate\": \"Rotacionar para melhor experiência\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Limpar memória em cachê ( {size} ) ? <small> Você precisará baixar novamente os arquivos de cachê depois desta ação!</small>\",\n\t\t\"resetButton\": \"Resetar agora\",\n\t\t\"resetPrompt\": \"Você tem certeza que deseja limpar <strong> Todos os dados </strong> e restaurar o padrão ?\",\n\t\t\"resetSuccess\": \"Resetado com Sucesso\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Consiga uma nova Aqui!\",\n\t\t\"noKey\": \"Não pusse uma Chave de Anúncios?\",\n\t\t\"verifyFail\": \"Falha ao verificar a Chave de Anúncios, verifique sua conexão !\",\n\t\t\"invalidKey\": \"Esta chave não é mais válida\",\n\t\t\"keyExpired1\": \"Chave Expirada!\",\n\t\t\"keyExpired2\": \"Sua chave: \\\"{key}\\\" está expirada deste a data {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Digite a chave\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/ru-RU.json",
    "content": "{\n\t\"title\": \"Симулятор молитв Genshin Impact\",\n\t\"item\": \"Предмет\",\n\t\"character\": \"персонажей\",\n\t\"weapon\": \"Оружие\",\n\t\"vision\": \"Элемент\",\n\t\"anemo\": \"Анемо\",\n\t\"cryo\": \"Крио\",\n\t\"dendro\": \"Дендро\",\n\t\"electro\": \"Электро\",\n\t\"hydro\": \"Пиро\",\n\t\"geo\": \"Гео\",\n\t\"pyro\": \"Пиро\",\n\t\"bow\": \"Стрелковое\",\n\t\"catalyst\": \"Катализатор\",\n\t\"claymore\": \"Двуручное\",\n\t\"sword\": \"Одноручное\",\n\t\"polearm\": \"Древковое\",\n\t\"extra\": \"Бонус\",\n\t\"obtained\": \"Получено:\",\n\t\"waiting\": \"Ожидайте\",\n\t\"connectionFailed\": \"Ошибка соединения!\",\n\t\"confirmButton\": \"Подтвердить\",\n\t\"cancelButton\": \"Отмена\",\n\t\"disclaimer\": \"Все материалы, используемые на этом сайте, принадлежат Hoyoverse.\",\n\t\"fanmade\": \"Это чисто фанатское приложение, наслаждайтесь им!\",\n\t\"pressToContinue\": \"Нажмите, чтобы продолжить\",\n\t\"installInstruction\": \"Инструкция по установке на Главный экран или Рабочий стол\",\n\t\"share\": \"Поделиться\",\n\t\"screenshot\": \"Сделать фотографию\",\n\t\"capturing\": \"Захват изображения\",\n\t\"rewardFirstShare\": \"Награда за первую акцию: {qty}\",\n\t\"version\": \"Версия\",\n\t\"donate\": \"Поддержать\",\n\t\"banner\": {\n\t\t\"beginner\": \"Молитва новичка\",\n\t\t\"wanderlust\": \"Жажда странствий\",\n\t\t\"epitome-invocation\": \"Воплощение божества\",\n\t\t\"ode-to-the-dawn-breeze\": \"Стихи #утреннего ветра#\",\n\t\t\"adrift-in-the-harbor\": \"#Эфемерное# недоверие\",\n\t\t\"ambrosial-essence\": \"Эссенция #амброзии#\",\n\t\t\"ancient-flame-ablaze\": \"Ослепительное #пламя древности#\",\n\t\t\"astral-actuation\": \"Звёздное пробуждение\",\n\t\t\"auric-blaze\": \"#Пылающее# золото\",\n\t\t\"azure-excursion\": \"#Лазурный# поход\",\n\t\t\"ballad-in-goblets\": \"#Стихи из# винного кубка\",\n\t\t\"born-of-ocean-swell\": \"Рождённая #морской пеной#\",\n\t\t\"caution-in-confidence\": \"#Сдержанное# благоразумие\",\n\t\t\"chanson-of-many-waters\": \"Песнь #водам мира#\",\n\t\t\"conjuring-chiaroscuro\": \"Волшебство #света и тени#\",\n\t\t\"cornucopia-of-contention\": \"Пиршество зрелищ\",\n\t\t\"dance-of-lantern\": \"Танец фонарей\",\n\t\t\"dawns-drifting-reverie\": \"#Витающие грёзы# на рассвете\",\n\t\t\"decree-of-the-deeps\": \"#Завет# глубин\",\n\t\t\"dewlit-tranquility\": \"Безмятежность росы\",\n\t\t\"discerner-of-enigmas\": \"Белая #радуга#\",\n\t\t\"drifting-luminescence\": \"#Дрейфующее# свечение\",\n\t\t\"everbloom-violet\": \"#Вечноцветущий# пурпур\",\n\t\t\"farewell-of-snezhnaya\": \"#Зимнее# расставание\",\n\t\t\"forgefires-blessing\": \"Благословение пламени\",\n\t\t\"from-ashes-reborn\": \"#Прах# перерождённый\",\n\t\t\"gentry-of-hermitage\": \"#Горы# и рынки\",\n\t\t\"harmonious-abundance\": \"#Гармония# изобилия\",\n\t\t\"illuminating-lightning\": \"Светозарная молния\",\n\t\t\"immaculate-pulse\": \"#Биение# мудрого сердца\",\n\t\t\"in-the-name-of-the-rosula\": \"Во имя #розы#\",\n\t\t\"invitation-to-mundane-life\": \"#Приглашение# к мирской жизни\",\n\t\t\"la-chanson-cerise\": \"#Ла шансон# сериз\",\n\t\t\"leaves-in-the-wind\": \"#Листья# на ветру\",\n\t\t\"moment-of-bloom\": \"#Момент# цветения\",\n\t\t\"moonsong-of-the-groves\": \"Лунная песнь #чащи#\",\n\t\t\"of-silken-clouds-woven\": \"Сплетение #шёлковых облаков#\",\n\t\t\"oni_s-royale\": \"#Пиршество# о́ни\",\n\t\t\"piercing-shots-crimson-wake\": \"#Багровый всполох# меткого выстрела\",\n\t\t\"reign-of-serenity\": \"Господство безмятежности\",\n\t\t\"remembrance-of-jade-and-stone\": \"Думы #нефрита и камня#\",\n\t\t\"romaritime-meluserenity\": \"Ромаринская #безмятежность#\",\n\t\t\"roving-chalice-of-dewgrass\": \"Скитающаяся чаша #росы#\",\n\t\t\"rubedo-of-white-stone-born\": \"Рубедо, воплощённый #белым камнем#\",\n\t\t\"sharktacular-surfari\": \"Зубастый сёрф\",\n\t\t\"secretum-secretorum\": \"#Таинственные# секреты\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Искатель# огненных тайн\",\n\t\t\"somnias-a-luna\": \"#Лунные# сны\",\n\t\t\"sparkling-steps\": \"#Сверкающая# поступь\",\n\t\t\"starry-nights-whispers\": \"Шёпот #звёздной ночи#\",\n\t\t\"tapestry-of-golden-flames\": \"Гобелен #золотого пламени#\",\n\t\t\"tempestuous-destiny\": \"Бушующий #рок#\",\n\t\t\"temptation-of-the-crimson-sands\": \"Искушение #красных песков#\",\n\t\t\"the-crane-soars-skyward\": \"Журавль взлетает #в небеса#\",\n\t\t\"the-hearths-ashen-shadow\": \"Пепельная тень #очага#\",\n\t\t\"the-heron_s-court\": \"Сад #белой цапли#\",\n\t\t\"the-lone-light-knocks-at-night\": \"Одинокий свет в ночи\",\n\t\t\"the-moongrass-enlightenment\": \"#Озарение# лунной травы\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#Триумфальная песнь# северного ветра\",\n\t\t\"the-transcendent-one-returns\": \"#Возвращение# в мир смертных\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Гром# сотрясает неба равнины\",\n\t\t\"twilight-arbiter\": \"#Сумеречный# вершитель\",\n\t\t\"twirling-lotus\": \"Кружащийся #лотос#\",\n\t\t\"viridescent-vigil\": \"Патруль лесной #чащи#\",\n\t\t\"void-stars-advent\": \"Пришествие #Звезды пустоты#\",\n\t\t\"ya-hoho-compendium\": \"Энциклопедия #я-хо-хо!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Путь воплощения\",\n\t\t\"fatePoint\": \"Очки Судьбы\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Вы уверены, что хотите отменить текущий курс?\",\n\t\t\"cancelDesc\": \"Отмена курса сбросит накопленные очки Судьбы.\",\n\t\t\"selectWeapon\": \"Выбрать оружие\",\n\t\t\"chartCourseOf\": \"Курс на предмет: {target}\",\n\t\t\"cancelCourse\": \"Отменить курс\",\n\t\t\"chartCourse\": \"Выбрать курс\",\n\t\t\"courseSetFor\": \"Текущий курс на: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"Путь воплощения - это механика, включённая в текущий цикл молитвы «Воплощение божества»:\",\n\t\t\t\"После установки курса на желаемое оружие, если вы <span>получите оружие 5★, которое не соответствует вашему выбору</span>, вы получите 1 очко Судьбы.\",\n\t\t\t\"Когда вы наберёте достаточно очков Судьбы, ваше следующее оружие 5★ будет тем, что вы выбрали с помощью Пути воплощения.\",\n\t\t\t\"<span>После получения оружия Пути воплощения молитвы «Воплощение божества» ваши очки судьбы будут сброшены</span>.\",\n\t\t\t\"Если вы не выберете оружие, очки Судьбы не будут накапливаться.\",\n\t\t\t\"Вы можете изменить свой выбор. <span>Это сбросит накопленные вами очки Судьбы</span>.\",\n\t\t\t\"<span>Накопленные вами очки Судьбы также обнулятся, когда текущий цикл молитвы «Воплощение божества» закончится</span>.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Молитва\",\n\t\t\"rollButton\": \"Помолиться {count} раз\",\n\t\t\"stellaFortuna\": \"Удачу\",\n\t\t\"loadFailed\": \"Failed to load Banner! <br /> Please switch to other banner or reconnect to the internet to avoid errors!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Баннер\",\n\t\t\t\"allBanner\": \"Все баннеры\",\n\t\t\t\"previous\": \"Предыдущий баннер\",\n\t\t\t\"findBanner\": \"Найти баннер\",\n\t\t\t\"group\": \"Группа\",\n\t\t\t\"beginner\": \"Молитва новичка\",\n\t\t\t\"character-event\": \"Молитва события персонажа\",\n\t\t\t\"weapon-event\": \"Молитва события оружия\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Стандартная Молитва\",\n\t\t\t\"wishDescription\": \"За каждые 10 совершённых Молитв вы гарантированно получите предмет 4★ или выше.\",\n\t\t\t\"novice\": \"Молитвы для начинающих\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"Набор из 10 вещей со скидкой в 20%. В первом наборе вы обязательно получите {character}.\",\n\t\t\t\"beginnerNote\": \"«Как и положено почтительной горничной.»\",\n\t\t\t\"beginnerChance\": \"Попыток: {chances}\",\n\t\t\t\"standardNote\": \"Стандартные молитвы не имеют ограничений по времени.\",\n\t\t\t\"allWeaponTypes\": \"Все типы оружия\",\n\t\t\t\"etc\": \"и т.п.\",\n\t\t\t\"probIncreased\": \"Вероятность увеличена!\",\n\t\t\t\"eventNote\": \"Эксклюзивный персонаж 5★ доступен лишь в период данной Молитвы.\",\n\t\t\t\"viewDetails\": \"Подробности доступны в меню «Детали».\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Пропустить\",\n\t\t\t\"meteorFailed\": \"Не удалось загрузить анимацию выпадения\",\n\t\t\t\"new\": \"Новое\",\n\t\t\t\"convertion\": \"Дубликат\",\n\t\t\t\"title\": \"Результат молитвы для {item}\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Гардероб\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"Сменить\",\n\t\t\"owned\": \"Получено\",\n\t\t\"purchasePrompt\": \"У вас ещё нет персонажа для этого костюма. Всё равно купить?\",\n\t\t\"promptInfo\": \"После получения нужного персонажа вы сможете сразу же использовать новый костюм в игре.\",\n\t\t\"obtained\": \"New Outfit Obtained\",\n\t\t\"unlocked\": \"{character}: Outfit Unlocked\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"Лучший скаут\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Покровительство ветра\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Круговорот звёзд\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Шипы наказания\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Сон морского бриза\",\n\t\t\t\t\"description\": \"Пляжный наряд Джинн. Лёгкий и одновременно элегантный. Идеальный вариант для поездки на море.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Летний блеск\",\n\t\t\t\t\"description\": \"Пляжный наряд Барбары. Прекрасная юбка наполнена энергией лета и пропитана свежим воздухом океана.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Яркая лёгкость\",\n\t\t\t\t\"description\": \"Праздничный наряд Кэ Цин. В утренние часы праздника морских фонарей нити, результат тяжёлой работы, сплетаются в лёгкий великолепный образ.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"Флёр орхидеи\",\n\t\t\t\t\"description\": \"Праздничный наряд Нин Гуан. Длинное платье цвета индиго подчеркивает элегантные изгибы красавицы, а крылья бабочки на лодыжках придают наряду лёгкое изящество.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Сон вечной ночи\",\n\t\t\t\t\"description\": \"Парадный наряд принцессы. Да будет вечно её мужество, искренность и доброта, дабы никакое зло не могло одолеть её.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Алая ночь\",\n\t\t\t\t\"description\": \"Один из костюмов, который Дилюк надевает во время работы под прикрытием. Он напоминает пламя, бушующее в тени. Багрово-красные следы, которые он оставляет за собой по краям поля зрения врагов, станут их вечным кошмаром на всю оставшуюся жизнь.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"Инкогнито в тени листвы\",\n\t\t\t\t\"description\": \"Наряд, который кто-то заказал для Лизы во время её визита в Сумеру. Идеально соблюдая баланс между практичностью и элегантностью, это платье напоминает форму, которую Лиза носила во время обучения в Академии.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Послание весеннего цветения\",\n\t\t\t\t\"description\": \"Наряд Аяки для путешествий. Его фасон напоминает о нарядах фонтейнских дам на иллюстрациях в лёгких романах. Судя по всему, подобная мода отражает образ жизни женщин из той страны.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Цветущий свет звёзд\",\n\t\t\t\t\"description\": \"Изысканный наряд Кли для самых важных выступлений. Яркий, словно кремовый торт, украшенный цветами и алыми свечами. С ним счастье и улыбки наполнят ваши приключения.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Тень ветра в парусах\",\n\t\t\t\t\"description\": \"Костюм Кэйи, который он надевал, выступая в роли Разбойника с Кинжалами. Это великолепный наряд, призванный привлечь внимание. Надеть несложно, но требуется время, чтобы разобраться со всеми аксессуарами и кинжалами.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Росы морозных цветов\",\n\t\t\t\t\"description\": \"Подарок, который Шэнь Хэ получила на Праздник морских фонарей. Это элегантное парадное одеяние, которое заказала для неё Хранитель Облаков. Красные шнуры всё ещё покрывают её руки, но холод в сердце Шэнь Хэ ослаб.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Цветок сумрака\",\n\t\t\t\t\"description\": \"Лёгкий и изящный праздничный наряд в тёмно-фиолетовых и лазурно-голубых тонах. Украшения для волос сияют словно цветки цинсинь - сочетание, которое нравится Гань Юй больше всего.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Бамбуковый дождь\",\n\t\t\t\t\"description\": \"Формальный костюм, который торговая гильдия «Фэйюнь» подготовила для Син Цю. Наряд украшен бамбуковым узором и прекрасно скроен, но Син Цю больше всего нравится внутренний карман, в который может уместиться тонкая книга.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Призрак в сапогах\",\n\t\t\t\t\"description\": \"Наряд Кирары. Прыгучая кошка из сказок, проворный курьер, перевозящий мечты... Приятно познакомиться!\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Дыхание Сабаа\",\n\t\t\t\t\"description\": \"Элегантный наряд Нилу. Нежное платье, как будто сотканное из множества цветов, с ароматом, словно восточный ветер на рассвете, несущий благословения сказочной страны.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Вишни под снегом\",\n\t\t\t\t\"description\": \"Наряд Ху Тао. Костюм создан в светлой гамме, которая отличается от её привычного тёмного церемониального облачения из ритуального бюро «Ваншэн». Этот наряд - особый подарок от подруги Сян Лин, а очки Ху Тао выбрала из своей личной коллекции.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Новогоднее веселье\",\n\t\t\t\t\"description\": \"Костюм Сян Лин. Ярко-красная, словно раскалённая печь среди холодных ветров, куртка и шапка, которые по совету Ху Тао были вдохновлены внешностью Гобы. Идеальное сочетание для Сян Лин.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Банкет безмятежности\",\n\t\t\t\t\"description\": \"Наряд, который Е Лань подготовила для отдыха. Изысканный и утончённый, он передаёт атмосферу безмятежности, но при этом в нём чувствуется скрытая угроза…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Пылающие приключения\",\n\t\t\t\t\"description\": \"Наряд Беннета для путешествий по Натлану окрашен в удачный озёрно-голубой с вкраплениями пламенного жёлто-оранжевого. Он излучает неукротимую жизненную силу, как и сама эта огненная земля.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Подарок мелюзин\",\n\t\t\t\t\"description\": \"Сюрприз для Нёвиллета. Восторг вызывает не только сам подарок, но и маленькие ручки, которые участвовали в его создании. Как реки впадают в безбрежное море, так и капли росы могут соединиться, чтобы создать чудо, переливающееся всеми цветами радуги.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Бамбуковые грёзы в дождь\",\n\t\t\t\t\"description\": \"Наряд Яо Яо. Тени молодых побегов скользят по столу, ветер привёл нового гостя.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Детали\",\n\t\t\"promotional\": \"Повышенный шанс\",\n\t\t\"itemlist\": \"Список предметов\",\n\t\t\"increasedRate\": \"Вероятность получения следующих предметов повышена!\",\n\t\t\"percentageDrop\": \"Шанс получения {rarity}★ : {percentage}\",\n\t\t\"wishDetails\": \"Подробнее о Молитвах\",\n\t\t\"probInfo\": \"Базовый шанс получения предмета {rarity}★ : {singlePercentage} (Вкл. гарантию: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Список предметов, доступных для получения с помощью Молитвы:\",\n\t\t\"itemType\": \"Тип\",\n\t\t\"itemName\": \"Имя\",\n\t\t\"beginnerInfo\": \"Нет ограничения по времени (Открыто до 20 молитв)\",\n\t\t\"limited\": \"Временное событие\",\n\t\t\"permanent\": \"Нет ограничения по времени\",\n\t\t\"alert\": \"※ Это {wishName}. Количество гарантированных попыток для неё подсчитывается отдельно и на число гарантированных попыток других молитв не влияет.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\" <span> Молитва</span> новичка – это стандартная Молитва. Она не ограничена по времени и создана специально для тех, кто в Тейвате совсем недавно. В рамках Молитвы доступны не лимитированные персонажи и оружие. <br /> В Молитве новичка набор из 10 молитв стоит на <span>20%</span> Судьбоносных встреч меньше. Кроме этого, за первые 10 Молитв вы гарантированно получите «Нераспустившийся цветок» Ноэлль (Гео), а за следующие 10 – <span>персонажа</span> 4★ или выше! Действие Молитвы новичка заканчивается после <span>20</span> попыток. Когда Молитва новичка закончится, страница Молитвы станет недоступна.\",\n\t\t\t\"※ При обычных условиях базовая вероятность получения всех персонажей и оружия распределяется равномерно. Если действуют какие-либо усиления или гарантии, пожалуйста, прочтите соответствующие правила.\",\n\t\t\t\"〓 Правила 〓\",\n\t\t\t\"Базовая вероятность получения предмета 5★ = <span> 0.600%</span> <br /> базовая вероятность получения предмета = <span> 5.100%</span>; суммарная вероятность (с учётом гарантированного приза) = <span> 13.000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" это стандартная Молитва. Она не ограничена по времени. В рамках Молитвы доступны не эксклюзивные персонажи и оружие.<br/> За каждые 10 Молитв вы <span>гарантированно</span> получите как минимум одного персонажа или оружие 4★.\",\n\t\t\t\"※ При обычных условиях базовая вероятность получения всех персонажей и оружия распределяется равномерно. Если действуют какие-либо усиления или гарантии, пожалуйста, прочтите соответствующие правила.\",\n\t\t\t\"〓 Правила 〓\",\n\t\t\t\"Базовая вероятность получения предмета 5★ = <span>0.600%</span>, вероятность получения персонажа 5★ = <span>0.300%</span>, вероятность получения оружия 5★ = <span>0.300%</span>; суммарная вероятность (с учётом гарантированного приза) получения предмета 5★ = <span>1.600%</span>; арантировано получение предмета 5★ как минимум один раз за <span>90</span> попыток. <br> Базовая вероятность получения предмета 4★ = <span>5.100%</span>; вероятность получения персонажа 4★ = 2,550%, вероятность получения оружия 4★ = <span>2.550%</span>, суммарная вероятность (с учётом гарантированного приза) получения предмета 4★ = <span>13.000%</span>. Получение предмета 4★ и выше гарантированно максимум с <span>10</span> попытки, и в этом случае вероятность получения предмета 4★ составляет <span>99.400%</span>, а вероятность получения предмета 5★ - <span>0.600%</span>. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"«Молитва события: {bannerName}» уже доступна! Во время этого события <span>резко увеличится</span> вероятность получения следующих персонажей: эксклюзивный персонаж события 5★ {featuredCharacter}, а также персонажи 4★ {rateupCharacters}.<br/> <span> ※ Эксклюзивный персонаж из этого списка не будет доступен в стандартной Молитве «Жажда странствий».</span>\",\n\t\t\t\"※ При обычных условиях базовая вероятность получения всех персонажей и оружия распределяется равномерно. Если действуют какие-либо усиления или гарантии, пожалуйста, прочтите соответствующие правила.\",\n\t\t\t\"〓 Правила 〓\",\n\t\t\t\"Предметы 5★\",\n\t\t\t\"Пока доступна «Молитва события: {bannerName}», базовая вероятность получения предмета 5★ = 0,600%, суммарная вероятность (с учётом гарантированного приза) = <span>1,600%</span>. Гарантировано получение персонажа 5★ как минимум один раз за <span>90</span> попыток.<br/> Первым полученным персонажем 5★ с вероятностью <span> 50.000%</span> окажется эксклюзивный персонаж {featuredCharacter}. Если первым получен другой персонаж 5★, то следующий персонаж 5★ <span>гарантированно</span> окажется указанным эксклюзивным персонажем.\",\n\t\t\t\"Предметы 4★\",\n\t\t\t\"Пока доступна «Молитва события:{bannerName}», базовая вероятность получения предмета 4★ = <span> 5.100%</span>, вероятность получения персонажа 4★ = <span>2.550%</span>, вероятность получения оружия 4★ = <span>2.550%</span>, суммарная вероятность (с учётом гарантированного приза) получения предмета 4★ = <span> 13.000%</span>. Получение предмета 4★ и выше гарантировано максимум с 10 попытки, и в этом случае вероятность получения предмета 4★ составляет  <span>99.400%</span>, а вероятность получения предмета 5★ - <span>0.600%</span>. <br/> Первым полученным персонажем 4★ с вероятностью <span>50.000%</span> окажется один из перечисленных персонажей: {rateupCharacters}. Если полученный персонаж 4★ не один из перечисленных, то следующий персонаж 4★ <span>гарантированно</span> окажется им. При получении предмета 4★ Молитвы шанс получить любое оружие 4★ события будет равным.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"«Молитва события: {bannerName}» уже доступна! Во время этого события вероятность получения следующего оружия резко увеличится: эксклюзивное для события оружие 5★ {featuredWeapon1}; эксклюзивное для события оружие 4★ {rateupWeapons}.<br/> <span> ※ Эксклюзивное оружие из этого списка не будет доступно в стандартной Молитве «Жажда странствий»</span>\",\n\t\t\t\"※ При обычных условиях базовая вероятность получения всех персонажей и оружия распределяется равномерно. Если действуют какие-либо усиления или гарантии, пожалуйста, прочтите соответствующие правила.\",\n\t\t\t\"〓 Правила 〓\",\n\t\t\t\"Предметы 5★\",\n\t\t\t\"Пока доступно событие «Молитва события: {bannerName}», базовая вероятность получения оружия 5★ = <span>0.700%</span>, суммарная вероятность (с учётом гарантированного приза) = <span>1.850%</span>. Гарантировано получение оружия 5★ как минимум один раз за <span>80</span> попыток. <br/> Первым полученным оружием 5★ с вероятностью <span>75.000%</span> окажется Громовой {featuredWeapon1} или {featuredWeapon2}. Если первый полученный предмет 5★ не указанное оружие с повышенной вероятностью получения, то следующий предмет 5★ <span>гарантированно</span> окажется им. Если у вас нет избранного оружия 5★ Молитвы с максимумом очков Судьбы, шанс получить любое оружие 5★ события будет равным. <br/> Пока доступно событие «Молитва события: {bannerName}», с помощью Пути воплощения вы можете проложить путь к оружию 5★ события. Избранное оружие актуально только на время проведения события «Молитва события: {bannerName}». <br/> Если во время события «Молитва события: {bannerName}» вы получили не то оружие 5★, к которому проложили путь, использовав Путь воплощения, вы получите 1 очко Судьбы. С <span>полным показателем</span> очков Судьбы следующим оружием 5★, которое вы получите, <span>гарантированно</span> будет выбранное вами с помощью Пути воплощения. После получения избранного оружия очки Судьбы будут сброшены до <span>0</span>, а их накопление начнётся сначала. <br/> Если вы не выбрали оружие, очки Судьбы накапливаться <span>не будут</span>.<br/> Избранное оружие можно переназначить или отменить. При этом ваши очки Судьбы будут сброшены до <span>0</span>, а их накопление начнётся сначала. <br/> ※ Очки Судьбы актуальны только на время проведения события «Молитва события: {bannerName}». Когда оно завершится, ваши очки Судьбы будут сброшены до <span>0</span>, а их накопление начнётся сначала.\",\n\t\t\t\"Предметы 4★\",\n\t\t\t\"Пока доступно событие «Молитва события: {bannerName}», базовая вероятность получения предмета 4★ = <span>6.000%</span>, вероятность получения персонажа 4★ = <span>3.000%</span>, вероятность получения оружия 4★ = <span>3.000%</span>, суммарная вероятность (с учётом гарантированного приза) получения предмета 4★ = <span>14.500%</span>. Получение предмета 4★ и выше гарантированно максимум с 10 попытки, и в этом случае вероятность получения предмета 4★ составляет <span>99.300%</span>, а вероятность получения предмета 5★ - <span>0.700%</span>. <br/> Первым полученным оружием 4★ с вероятностью <span>75.000%</span> окажется один из предметов: {rateupWeapons}. Если первый полученный предмет 4★ не указанное оружие с повышенной вероятностью получения, то следующий предмет 4★ <span>гарантированно</span> окажется им. При получении предмета 4★ Молитвы шанс получить любое оружие 4★ события будет равным.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"К каждому оружию 5★, полученному из этой Молитвы, прилагается {starglitter} ×10;\",\n\t\t\t\"fourStar\": \"К каждому оружию 4★, полученному из этой Молитвы, прилагается {starglitter} ×2;\",\n\t\t\t\"threeStar\": \"К каждому оружию 3★, полученному из этой Молитвы, прилагается {stardust} ×15.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓 Дубликаты 〓\",\n\t\t\t\"text\": \"Если у вас есть повторяющиеся персонажи {rarity}★ (открытые в игре, купленные в магазине или выигранные в Молитве), то начиная с 2 по 7 они конвертируются в соответствующую персонажу {stellaFortuna} ×1 и {starglitter} {constBonus}. За 8 и далее персонажа вы сможете получить {starglitter} {fullConstBonus}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Журнал Молитв\",\n\t\t\"text\": \"История\",\n\t\t\"resetButton\": \"Сброс\",\n\t\t\"resetPromptTitle\": \"Сбросить историю?\",\n\t\t\"resetPrompt\": \"Это также удалит из вашего инвентаря всех персонажей и оружие, связанные с \\\"{bannerName}\\\". <br/> Вы уверены, что хотите сбросить?\",\n\t\t\"resetSuccess\": \"Спрос произведён успешно!\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Тип молитвы:\",\n\t\t\"disclaimer\": \"Мы никогда не сохраняем ваши данные в облачном хранилище. Все данные были сохранены в IndexedDB, это означает, что данные сохраняются в хранилище вашего браузера. Он никогда не будет удален, пока вы не удалите его вручную с помощью кнопки сброса или не очистите данные браузера.\",\n\t\t\"currentPity\": \"Текущий гарант:\",\n\t\t\"totalPull\": \"Всего круток:\",\n\t\t\"totalSpend\": \"Всего потрачено:\",\n\t\t\"filterTxt\": \"Фильтр\",\n\t\t\"filter\": \"{rarity}★\",\n\t\t\"filterAll\": \"Всё\",\n\t\t\"pity\": \"Крутка\",\n\t\t\"timeReceived\": \"Время молитвы\",\n\t\t\"waiting\": \"Ожидайте\",\n\t\t\"noData\": \"Данные недоступны.\",\n\t\t\"untracked\": \"не отслеживается\",\n\t\t\"win\": \"Выигрыш 50/50\",\n\t\t\"lose\": \"Проигрыш 50/50\",\n\t\t\"guaranteed\": \"Гарантировано\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Выбранный предмет\",\n\t\t\"olderLayout\": \"Старое оформление\",\n\t\t\"switchv2\": \"Перейти на новое оформление\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Магазин\",\n\t\t\"paimonBargains\": \"Магазин Паймон\",\n\t\t\"fateNeeded\": \"Необходимы дополнительные {rollQty} {currency}.\",\n\t\t\"primoNeeded\": \"Покупка с {primoPrice} Primogem ?\",\n\t\t\"purchaseUpto\": \"Доступно: 1\",\n\t\t\"purchaseConfirm\": \"Подтвердить покупку\",\n\t\t\"exchangeHeading\": \"Получить предмет\",\n\t\t\"purchaseHeading\": \"Предмет\",\n\t\t\"purchaseButton\": \"Купить\",\n\t\t\"pay\": \"Оплата\",\n\t\t\"product\": \"Товар\",\n\t\t\"consume\": \"Стоимость: \",\n\t\t\"selectPayment\": \"Выберите способ оплаты\",\n\t\t\"unrealWallet\": \"Ненастоящий кошелек\",\n\t\t\"convertPrimo\": \"Автоматически преобразовать в Камни Истока\",\n\t\t\"proceedPayment\": \"Оплатить\",\n\t\t\"qty\": \"Количество\",\n\t\t\"insufficient\": \"Недостаточно средств\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Пополнение кристаллов\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Купить Кристалл Сотворения\",\n\t\t\"recomendedHeading\": \"Рекомендуемые товары\",\n\t\t\"paimonHeading\": \"Магазин Паймон\",\n\t\t\"welkinNote\": \"Можно купить неограниченное кол-во раз\",\n\t\t\"limitedOffer\": \"Ограниченное по времени предложение\",\n\t\t\"noLimitTime\": \"Предметы доступны без ограничения по времени\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Благословение полой луны\",\n\t\t\t\"newOutfit\": \"Новые костюмы персонажей\",\n\t\t\t\"dayRemaining\": \"Осталось дней: {days}\",\n\t\t\t\"alreadyClaimed\": \"Награда за сегодня уже полуено\",\n\t\t\t\"instantlyGet\": \"Входит в покупку\",\n\t\t\t\"dailyGift\": \"Ежедневный подарок\",\n\t\t\t\"obtainTotal\": \"Итог наград за 30 дней<br>Кристаллы Сотворения: ×{totalGenesis}<br>Камни Истока: ×{totalPrimo}\",\n\t\t\t\"claimingBlessing\": \"Нажмите, чтобы получить награды Благословения полой луны за сегодня.\",\n\t\t\t\"issuedPurchase\": \"Выдаётся при покупке\",\n\t\t\t\"collect\": \"Собирайте ежедневные награды за вход в течение 30 дней\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Звёздный блеск\",\n\t\t\t\"stardust\": \"Звёздная пыль\",\n\t\t\t\"primogem\": \"Камни Истока\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Кристалл Сотворения\",\n\t\t\t\"primogem\": \"Камень Истока\",\n\t\t\t\"intertwined\": \"Переплетающиеся судьбы\",\n\t\t\t\"acquaint\": \"Судьбоносные встречи\",\n\t\t\t\"starglitter\": \"Блуждающий звёздный блеск\",\n\t\t\t\"stardust\": \"Блуждающая звёздная пыль\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Судьбоносный камень, который соединяет мечты. Его блёклое свечение переплетает судьбы и соединяет мечты так же, как звёзды соединяются в созвездия.\",\n\t\t\t\"acquaint\": \"Семена надежды, освещающие ночное небо. Несмотря на расстояние, те кому суждено встретиться, обязательно найдут друг друга под звёздами.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Инвентарь\",\n\t\t\"unsetOutfit\": \"Снять наряд\",\n\t\t\"setOutfit\": \"Установить наряд для персонажа\",\n\t\t\"refinement\": \"Ранг пробуждения {count}\",\n\t\t\"constellation\": \"Созвездие {count}\",\n\t\t\"extra\": \"{count} дополнительное(-ые)\",\n\t\t\"firstSummon\": \"Впервые получен {date}\",\n\t\t\"notOwned\": \"Не получен\",\n\t\t\"sort\": \"Фильтр\",\n\t\t\"rarity\": \"Качество\",\n\t\t\"name\": \"Имя\",\n\t\t\"quantity\": \"Количество\",\n\t\t\"element\": \"Элемент\",\n\t\t\"release\": \"Release Date\",\n\t\t\"type\": \"Тип\",\n\t\t\"owned\": \"Наличие\",\n\t\t\"showAllOption\": \"Показать всех {item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Нет\",\n\t\t\"yes\": \"Да\",\n\t\t\"text\": \"Меню\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Настройки\",\n\t\t\"updates\": \"История обновлений\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Язык\",\n\t\t\"currency\": \"Валюта\",\n\t\t\"fates\": \"Number of Wishes\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"Выключить звук\",\n\t\t\"switchBanner\": \"Переключить баннер\",\n\t\t\"showAllitems\": \"Показать все предметы в инвентаре\",\n\t\t\"autoskip\": \"Всегда пропускать анимацию выпадения\",\n\t\t\"animatedbg\": \"Анимированный фон\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Удаление данных\",\n\t\t\"resetTitle\": \"Сброс настроек\",\n\t\t\"rotate\": \"Поверните устрорйство для лучшего впечатления\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Удалить кэш ({size})? <small>После этого действия все ассеты будут загружены заново!</small>\",\n\t\t\"resetButton\": \"Перейти к удалению\",\n\t\t\"resetPrompt\": \"Вы уверены, что хотите удалить <strong> все данные </strong> и восстановить настройки по умолчанию?\",\n\t\t\"resetSuccess\": \"Сброс произведён успешно!\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Получить его вы можете здесь!\",\n\t\t\"noKey\": \"Ещё нет ключа?\",\n\t\t\"verifyFail\": \"Не удалось подтвердить ключ, проврьте ваше соединение.\",\n\t\t\"invalidKey\": \"Ключ недействителен.\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Введите ключ\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/th-TH.json",
    "content": "{\n\t\"title\": \"Genshin Impact Wish Simulator\",\n\t\"item\": \"สิ่งของ\",\n\t\"character\": \"ตัวละคร\",\n\t\"weapon\": \"อาวุธ\",\n\t\"vision\": \"ธาตุ\",\n\t\"anemo\": \"ลม\",\n\t\"cryo\": \"น้ำแข็ง\",\n\t\"dendro\": \"ไม้\",\n\t\"electro\": \"ไฟฟ้า\",\n\t\"hydro\": \"น้ำ\",\n\t\"geo\": \"หิน\",\n\t\"pyro\": \"ไฟ\",\n\t\"bow\": \"ธนู\",\n\t\"catalyst\": \"สื่อเวท\",\n\t\"claymore\": \"ดาบใหญ่\",\n\t\"sword\": \"ดาบ\",\n\t\"polearm\": \"หอก\",\n\t\"extra\": \"Extra\",\n\t\"obtained\": \"ได้รับ\",\n\t\"waiting\": \"ที่รอ\",\n\t\"connectionFailed\": \"Connection Failed!\",\n\t\"confirmButton\": \"ยืนยัน\",\n\t\"cancelButton\": \"ยกเลิก\",\n\t\"disclaimer\": \"ทรัพย์สินทั้งหมดที่ใช้ในเว็บไซต์นี้เป็นของ Hoyoverse\",\n\t\"fanmade\": \"นี่เป็นแอปพลิเคชั่นที่สร้างโดยแฟน ๆ ล้วน ๆ สนุกกับมัน!\",\n\t\"pressToContinue\": \"กดที่ใดก็ได้ในช่องว่างเพื่อดำเนินการต่อ\",\n\t\"installInstruction\": \"Instructions to Install to Home Screen/Desktop\",\n\t\"share\": \"แบ่งปัน\",\n\t\"screenshot\": \"ถ่ายภาพ\",\n\t\"capturing\": \"กำลังจับ\",\n\t\"rewardFirstShare\": \"รางวัลสำหรับการแชร์ครั้งแรก: {qty}\",\n\t\"version\": \"เวอร์ชั่น\",\n\t\"donate\": \"บริจาค\",\n\t\"banner\": {\n\t\t\"beginner\": \"การอธิษฐานแนะนำ สำหรับผู้เริ่มต้น\",\n\t\t\"wanderlust\": \"การอธิษฐาน แห่งการเดินทาง\",\n\t\t\"epitome-invocation\": \"#สรรค์สร้าง#เซียน\",\n\t\t\"ode-to-the-dawn-breeze\": \"บทกวีแห่ง#สายลมรุ่งอรุณ#\",\n\t\t\"adrift-in-the-harbor\": \"ม่านแห่งเมฆา\",\n\t\t\"ambrosial-essence\": \"อวลกลิ่น#หยาดน้ำค้าง#\",\n\t\t\"ancient-flame-ablaze\": \"#เพลิงอดีตกาล#สีชาด\",\n\t\t\"astral-actuation\": \"#พลวัต#เคลื่อนดารา\",\n\t\t\"auric-blaze\": \"สุริยันสีทอง#ที่แผดเผา#\",\n\t\t\"azure-excursion\": \"#ย่ำบุปผา#ธาราคราม\",\n\t\t\"ballad-in-goblets\": \"#ถ้วย#แห่งบทกวี\",\n\t\t\"born-of-ocean-swell\": \"ประกายแห่ง#เกลียวคลื่น#\",\n\t\t\"caution-in-confidence\": \"#เล่ห์ลับ#วาจาลวง\",\n\t\t\"chanson-of-many-waters\": \"ขับขาน#ลำเนาธาร#\",\n\t\t\"conjuring-chiaroscuro\": \"กลมายา#แสงเงา#\",\n\t\t\"cornucopia-of-contention\": \"#เขาแกร่ง#แห่งงานรื่นเริง\",\n\t\t\"dance-of-lantern\": \"การเต้นรำ ใน แสงโคม\",\n\t\t\"dawns-drifting-reverie\": \"เคียงฝัน ยามตะวันฉาย\",\n\t\t\"decree-of-the-deeps\": \"บัญชาแห่ง ห้วงสมุทร\",\n\t\t\"dewlit-tranquility\": \"#น้ำค้าง#พราวสันติ\",\n\t\t\"discerner-of-enigmas\": \"รุ้งหมอก กลางเวหา\",\n\t\t\"drifting-luminescence\": \"ไข่มุกประกายรุ้ง\",\n\t\t\"everbloom-violet\": \"กลบุปผาม่วง\",\n\t\t\"farewell-of-snezhnaya\": \"บอกลาแดนเหนือ\",\n\t\t\"forgefires-blessing\": \"#เพลิงหลอม#ประทานพร\",\n\t\t\"from-ashes-reborn\": \"ไฟกัลป์ ผลาญมลทิน\",\n\t\t\"gentry-of-hermitage\": \"ขุนเขาแ ละเมืองใหญ่\",\n\t\t\"harmonious-abundance\": \"#ธัญงาม#บวงพิธี\",\n\t\t\"illuminating-lightning\": \"#อสนี#ผ่ารัตติกาล\",\n\t\t\"immaculate-pulse\": \"การุณย์บริสุทธิ์\",\n\t\t\"in-the-name-of-the-rosula\": \"ปฏิญาณแห่ง กุหลาบหนาม\",\n\t\t\"invitation-to-mundane-life\": \"คำเชิญอั นสว่างไสว\",\n\t\t\"la-chanson-cerise\": \"เพลงสดุดี#สีเชอร์รี#\",\n\t\t\"leaves-in-the-wind\": \"ใบไม้ร่วง ตามสายลม\",\n\t\t\"moment-of-bloom\": \"ช่วงเวล าแห่ง การผลิบาน\",\n\t\t\"moonsong-of-the-groves\": \"บทจันทรา#ขับขานพงไพร#\",\n\t\t\"of-silken-clouds-woven\": \"พันเมฆาทอภูษา\",\n\t\t\"oni_s-royale\": \"ห้วงอสูร ประจัญบาน\",\n\t\t\"piercing-shots-crimson-wake\": \"#ศรทะลวงปีก#แดงฉาน\",\n\t\t\"reign-of-serenity\": \"บัลลังก์แห่งนิรันดร์\",\n\t\t\"remembrance-of-jade-and-stone\": \"อนุสรณ์แห่ง#หยกและหินผา#\",\n\t\t\"romaritime-meluserenity\": \"ดวงใจสมุทร#ผู้อารี#\",\n\t\t\"roving-chalice-of-dewgrass\": \"จอกศักดิ์สิทธิ์#น้ำค้างพราว#\",\n\t\t\"rubedo-of-white-stone-born\": \"#แร่ขาว#แปรสีชาด\",\n\t\t\"sharktacular-surfari\": \"#ฉลาม#ผจญคลื่น\",\n\t\t\"secretum-secretorum\": \"ความลับในห้วงลึก\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"นักล่าปริศนา#แห่งเปลวเพลิง#\",\n\t\t\"somnias-a-luna\": \"นิทรา#เคียงจันทร์#\",\n\t\t\"sparkling-steps\": \"ก้าวย่างพร่างพราย\",\n\t\t\"starry-nights-whispers\": \"#เสียงกระซิบ#ใต้แสงดาว\",\n\t\t\"tapestry-of-golden-flames\": \"ทะเลดาวแห่ งเปลวเพลิง\",\n\t\t\"tempestuous-destiny\": \"ชะตา อันทุกข์เข็ญ\",\n\t\t\"temptation-of-the-crimson-sands\": \"เล่ห์วาจาแห่ง#ทรายสีชาด#\",\n\t\t\"the-crane-soars-skyward\": \"กระเรียนท่อง ล่องเมฆา\",\n\t\t\"the-hearths-ashen-shadow\": \"เงามายา#เถ้าธุลี#\",\n\t\t\"the-heron_s-court\": \"ตำหนักกระเ รียนขาว\",\n\t\t\"the-lone-light-knocks-at-night\": \"ตะเกียงเดียวดาย ย่ำราตรี\",\n\t\t\"the-moongrass-enlightenment\": \"หญ้าแสงจันทร์ ประทานปัญญา\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#บทเพลงแห่งชัยชนะของ#ลมเหนือ\",\n\t\t\"the-transcendent-one-returns\": \"จากพันธนาการสู่ แดนมนุษย์\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#ฟ้าคำราม#ก้องนภา\",\n\t\t\"twilight-arbiter\": \"ตุลาการสนธยา\",\n\t\t\"twirling-lotus\": \"นิโลตบลเริงระบำ\",\n\t\t\"viridescent-vigil\": \"พิทักษ์ไพรวัน\",\n\t\t\"void-stars-advent\": \"#ดาราลวง#ข้ามห้วงกาล\",\n\t\t\"ya-hoho-compendium\": \"สารานุกรม#ยะฮู้วว!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"วิถีแห่งเทพ\",\n\t\t\"fatePoint\": \"แต้มกรรม\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"คุณต้องการยกเลิกการเลือกปัจจุบันของคุณหรือไม่?\",\n\t\t\"cancelDesc\": \"การยกเลิกจะรีเซ็ตคะแนนสะสมของคุณ\",\n\t\t\"selectWeapon\": \"เลือกอาวุธ\",\n\t\t\"chartCourseOf\": \"เลือก {target}\",\n\t\t\"cancelCourse\": \"ยกเลิกการเลือก\",\n\t\t\"chartCourse\": \"เลือก\",\n\t\t\"courseSetFor\": \"รายการที่เลือก: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Epitomized Path\\\" is a wish mechanic in \\\"Epitome Invocation\\\". Travelers can chart a course towards a specific 5-Star promotional weapon they hope to obtain.\",\n\t\t\t\"Once you have charted a course towards your chosen weapon, you will obtain 1 Fate Point upon <span> receiving a 5-Star weapon that is not the one that you chose</span>. You can obtain a maximum of 2 Fate Points.\",\n\t\t\t\"Once you've reached the maximum amount of Fate Points, the next 5-Star weapon you choose will be the one you have chosen through \\\"Epitomized Path\\\".\",\n\t\t\t\"When you obtain the chosen weapon in Epitome Invocation through Epitomized Path, <span> the accumulated Fate Points will be cleared </span>.\",\n\t\t\t\"If you do not use Epitomized Path to obtain a weapon, you will not accumulate Fate Points.\",\n\t\t\t\"The charted course towards a certain weapon can be changed or cancelled. However, after doing so, any current Fate Points will be cleared.\",\n\t\t\t\"At the end of the current period of Epitome Invocation, any current Fate Points will be cleared.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"การอธิษฐาน\",\n\t\t\"rollButton\": \"อธิษฐาน {count}\",\n\t\t\"stellaFortuna\": \"ดวงดาวแห่งชีวิตของตัวละครดัง\",\n\t\t\"loadFailed\": \"โหลดแบนเนอร์ไม่สำเร็จ! <br /> โปรดเปลี่ยนไปใช้แบนเนอร์อื่นหรือเชื่อมต่ออินเทอร์เน็ตอีกครั้งเพื่อหลีกเลี่ยงข้อผิดพลาด!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"แบนเนอร์\",\n\t\t\t\"allBanner\": \"แบนเนอร์ทั้งหมด\",\n\t\t\t\"previous\": \"แบนเนอร์ก่อนหน้า\",\n\t\t\t\"findBanner\": \"ค้นหาแบนเนอร์\",\n\t\t\t\"group\": \"กลุ่ม\",\n\t\t\t\"beginner\": \"การอธิษฐานแนะนำ สำหรับผู้เริ่มต้น\",\n\t\t\t\"character-event\": \"กิจกรรมอธิษฐานตัวละคร\",\n\t\t\t\"weapon-event\": \"กิจกรรมอธิษฐานอาวุธ\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"อธิษฐานถาวร\",\n\t\t\t\"wishDescription\": \"การอธิษฐานทุก 10 ดริง การันตีว่ามีไอเทมระดับสี่ดาว หรือสูงกวาออกแน่นอน\",\n\t\t\t\"novice\": \"สามเณรสวดมนต์\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"ลดพิเศษ 20%. เช็ต 10 ครั้งแรกการันตีตัวละคร: {character}\",\n\t\t\t\"beginnerNote\": \"\\\"ในฐานะที่เป็นสาวใช้ที่ซื่อสัตย์จะ\\\"\",\n\t\t\t\"beginnerChance\": \"โอกาสที่เหลืออยู่: {chances}\",\n\t\t\t\"standardNote\": \"การอธิษฐานแบบมาตรฐานไม่มีเวลาจำกัด\",\n\t\t\t\"allWeaponTypes\": \"อาวุธทุกประเภท\",\n\t\t\t\"etc\": \"และอื่น ๆ\",\n\t\t\t\"probIncreased\": \"โอกาสในการได้รับเพิ่มขึ้น!\",\n\t\t\t\"eventNote\": \"กิจกรรมจํากัดตัวละครระดับหาดาว จะได้จากการอธิษฐานที่สอดคล้องกัน เฉพาะในช่วงเวลา UP เท่านั้น\",\n\t\t\t\"viewDetails\": \"ดูที่ \\\"รายละเอียด\\\" สําหรับเนื้อหาเพิ่มเติม\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"ข้าม\",\n\t\t\t\"meteorFailed\": \"โหลดแอนิเมชั่นดาวตกไม่สำเร็จ\",\n\t\t\t\"new\": \"ใหม่\",\n\t\t\t\"convertion\": \"การแปลง\",\n\t\t\t\"title\": \"ผลลัพธ์ที่ต้องการสำหรับ {item} et al\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"คอสตูม\",\n\t\t\"default\": \"ค่าเริ่มต้น\",\n\t\t\"setOutfit\": \"ชุดเซ็ท\",\n\t\t\"owned\": \"มีเจ้าของแล้ว\",\n\t\t\"purchasePrompt\": \"คุณยังไม่มีตัวละครสำหรับชุดนี้ คุณแน่ใจหรือว่าต้องซื้อชุดนี้?\",\n\t\t\"promptInfo\": \"คุณยังสามารถใช้เครื่องแต่งกายนี้ได้หลังจากได้รับตัวละครที่ถูกต้อง\",\n\t\t\"obtained\": \"ได้รับชุดใหม่แล้ว\",\n\t\t\"unlocked\": \"{character}: ปลดล็อคชุดแล้ว\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"อัศวินลาดตระเวนใจเกินร้อย\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"สายลมแห่งความภักดี\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"ดวงดาวแห่งชีวิตที่แปรผัน\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"เพชฌฆาตปราบอธรรม\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"ความฝันในสายลมแห่งท้องทะเล\",\n\t\t\t\t\"description\": \"คอสตูมหน้าร้อนของ Jean ที่ดูเย็นสบายแต่ยังคงความสง่างามเอาไว้ เป็นชุดที่เหมาะกับการไปเที่ยวทะเลเป็นที่สุด\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"ซัมเมอร์ซ่าท้าร้อน\",\n\t\t\t\t\"description\": \"คอสตูมชายหาดของ Barbara กระโปรงสั้นสุดสวยงาม ที่เต็มไปด้วยความสดใสของฤดูร้อน และดูเหมือนจะแผ่ซ่านกลิ่นอาย อันเย็นสดชื่นของทะเลอีกด้วย\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"รัศมีรุ้งเจิดจรัส\",\n\t\t\t\t\"description\": \"คอสตูมชุดพิธีการของ Keqing ท่ามกลางบรรยากาศอันงดงามของงานเทศกาล Lantern Rite ความเหนื่อยยากในช่วงวันเวลาที่ผ่านมา หล่อหลอมให้เกิดเป็นความงดงามในค่ำคืนนี้\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"กล้วยไม้อนธการ\",\n\t\t\t\t\"description\": \"คอสตูมชุดพิธีการของ Ningguang ชุดเดรสสีฟ้าครามตัวยาวช่วยขับเน้นรูปร่างสุดสง่างามให้เด่นชัด และปีกผีเสื้อที่ข้อเท้าช่วยเสริมความอ่อนหวานให้เธอขึ้นไปอีก\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"ห้วงฝันแห่งรัตติกาล\",\n\t\t\t\t\"description\": \"ชุดพิธีการของเจ้าหญิง Fischl ขอให้ผู้สูงศักดิ์เปี่ยมไปด้วยความกล้าหาญ จริงใจ และเมตตาตลอดไป ความชั่วร้ายทั้งหลายจะต้องยอมศิโรราบต่อเธอ\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"เพลิงมหันต์รัตติกาล\",\n\t\t\t\t\"description\": \"หนึ่งในชุดที่ Diluc สวมใส่เมื่อออกปฏิบัติการลับ ราวกับเปลวไฟที่ลุกโชนท่ามกลางเงามืด ร่องรอยสีแดงเข้มที่สุดปลายทัศนวิสัยของศัตรู คือฝันร้ายที่จะคงอยู่กับพวกเขาไปตลอดชีวิต\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"นามแห่งความภักดี\",\n\t\t\t\t\"description\": \"ชุดที่ Lisa สั่งตัดขณะมาเยือน Sumeru อีกครั้ง ชุดกระโปรงที่ดูเรียบง่ายแต่สง่างาม คล้ายคลึงกับยูนิฟอร์มในสมัยเรียนของเธอ\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"สารเมื่อยามดอกไม้ผลิบาน\",\n\t\t\t\t\"description\": \"ชุดเดินทางของ Kamisato Ayaka ทำขึ้นโดยอ้างอิงจากเครื่องแต่งกายของหญิงชาว Fontaine ในภาพประกอบไลท์โนเวล ดูเหมือนจะสะท้อนถึงวิถีชีวิตสุภาพสตรีของ Fontaine ได้เป็นอย่างดี\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"ประกายดาวสะพรั่ง\",\n\t\t\t\t\"description\": \"ชุดแสนประณีตที่ Klee สวมใส่ตอนแสดงละครฉากสำคัญ มันมีสีสันงดงามสดใส ราวกับเค้กที่ประดับด้วยดอกไม้ครีมสดกับเทียนสีแดง มันจะนำพาความสุขและรอยยิ้ม สู่ทั่วทุกแห่งหนที่ผจญภัยไปถึงเลยล่ะ\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"เงานาวาล่องลม\",\n\t\t\t\t\"description\": \"ชุดที่ Kaeya สวมใส่ตอนขึ้นแสดง \\\"จอมโจรดาบสั้น\\\" บนเวที ชุดอันแสนตระการตานี้ ถูกออกแบบโดยใช้หลักการว่า \\\"ต้องดึงดูดสายตา\\\" แต่ถึงอย่างนั้น วิธีสวมใส่ก็ไม่ได้ยุ่งยากอะไรนัก ส่วนที่ต้องเสียเวลาจัดการมากสุด เห็นคงจะมีแค่ส่วนของเครื่องประดับกับดาบสั้นเท่านั้น\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"หยาดน้ำค้างเยือกแข็ง\",\n\t\t\t\t\"description\": \"ของขวัญเทศกาล Lantern Rite ที่ Shenhe ได้รับ ชุดพิธีการแสนสง่างาม ที่จ้าววังวนเมฆาเชิญให้คนมาตัดเย็บให้ แม้เชือกสีแดงบนแขนทั้งสองข้างจะยังคงอยู่ แต่ความหนาวเย็นในใจของ Shenhe ได้จางหายไปแล้ว\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"บุปผาสนธยา\",\n\t\t\t\t\"description\": \"ชุดงานเทศกาลที่ทั้งเบาสบายและสง่างาม สีโทนหลักคือสีม่วงดำมะแว้งนกและสีฟ้าหยก ส่วนเครื่องประดับผมนั้นสดใสราวกับดอก Qingxin เป็นการจับคู่ที่ Ganyu ชื่นชอบมากที่สุด\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"ไผ่พิรุณ\",\n\t\t\t\t\"description\": \"ชุดงานเลี้ยงที่ทางสมาคมการค้า Feiyun จัดเตรียมไว้ให้แก่ Xingqiu ลวดลายไม้ไผ่ที่ดูหรูหรา และเสื้อผ้าที่ตัดเย็บอย่างดี แต่สิ่งที่ Xingqiu พอใจมากที่สุดก็คือกระเป๋าด้านในของมัน ที่เพียงพอให้ใส่นิยายเล่มบาง ๆ ได้\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"บูทเงามายา\",\n\t\t\t\t\"description\": \"คอสตูมของ Kirara นักดาบแมวเหมียวผู้กล้าหาญในเทพนิยาย สาวน้อยเจ้าเล่ห์ผู้ถ่ายทอดความปรารถนา เป็นเกียรติอย่างยิ่งที่ได้รู้จักคุณ\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"สายลมแห่ง Sabaa\",\n\t\t\t\t\"description\": \"ชุดเดรสอันหรูหราของ Nilou ที่ราวกับถักทอขึ้นจากดอกไม้นับพัน กรุ่นกลิ่นหอมอ่อน ๆ ราวกับสายลมตะวันออกยามรุ่งอรุณ บรรจุพรอันแสนวิเศษ จากโลกนิทานเอาไว้\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"ดอกท้อแดงพราวหิมะ\",\n\t\t\t\t\"description\": \"คอสตูมของ Hu Tao ชุดเดรสสีเรียบธรรมดา ซึ่งแตกต่างจากชุดพิธีการสีเข้ม ของโถงแห่งการเกิดใหม่ Wangsheng เป็นของขวัญที่เพื่อนอย่าง Xiangling เตรียมไว้ให้ Hu Tao เป็นพิเศษ โดยเฉพาะแว่นกันแดดที่เป็นของสะสมของเธอเอง\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"รื่นเริงส่งท้ายปี\",\n\t\t\t\t\"description\": \"คอสตูมของ Xiangling ชุดที่ให้ความรู้สึกเหมือนเตาไฟสีแดงท่ามกลางลมหนาว หมวกใบนี้ได้รับแรงบันดาลใจจากรูปลักษณ์ของ Guoba ตามคำแนะนำของ Hu Tao ซึ่ง Xiangling ชื่นชอบมันอย่างมาก\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Tranquil Banquet\",\n\t\t\t\t\"description\": \"The outfit Yelan has prepared for her holiday. Elegant yet neat, it conveys a sense of leisure while somehow still carrying a hint of concealed aggression…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Adventures in Blazing Hue\",\n\t\t\t\t\"description\": \"Bennett's traveling attire for his journeys in Natlan. Dyed lucky lakewater blue with hints of blazing orange, these clothes emanate an overflowing vitality that matches the land in which they are worn.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"ของขวัญจากเมลูซีน\",\n\t\t\t\t\"description\": \"ของขวัญเซอร์ไพรส์ที่ Neuvillette ได้รับมา เซอร์ไพรส์นั้นไม่ได้มาจากตัวของขวัญเท่านั้น แต่ยังมาจากมือน้อย ๆ แต่ละคู่ที่ร่วมกันรังสรรค์ของขวัญขึ้นมา ดังเช่นสายน้ำที่ไหลไปบรรจบกับท้องทะเล หยาดน้ำค้างได้ควบแน่นกลายเป็นปาฏิหาริย์ที่เปล่งประกายเจ็ดสี\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"สดับเสียงฝนยลทิวไผ่\",\n\t\t\t\t\"description\": \"คอสตูมของ Yaoyao เงายอดไม้อ่อนเคาะกระทบโต๊ะหนังสือ บางคราวผู้มาเยือนก็มิได้มีเพียงสายลม\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"รายละเอียด\",\n\t\t\"promotional\": \"ไอเทม UP\",\n\t\t\"itemlist\": \"รายการไอเทม\",\n\t\t\"increasedRate\": \"เนื้อหาต่อไปนี้คือ \\\"โอกาสได้รับ UP!!!\\\"\",\n\t\t\"percentageDrop\": \"เมื่อสุ่มได้ไอเทม {rarity} ดาวจะมีโอกาสได้รับ:{percentage}\",\n\t\t\"wishDetails\": \"รายละเอียดการอธิษฐาน\",\n\t\t\"probInfo\": \"โอกาสพื้นฐานที่จะออกไอเทม 5 ดาว:{singlePercentage} (การันตี:{avgPercentage})\",\n\t\t\"itemWishFor\": \"รายการไอเทมจากการอธิษฐาน:\",\n\t\t\"itemType\": \"ประเภท\",\n\t\t\"itemName\": \"ชื่อ\",\n\t\t\"beginnerInfo\": \"เปิดถาวร (จะปิดเมื่ออธิษฐานครบ 20 ครั้ง)\",\n\t\t\"limited\": \"กิจกรรมจำกัดเวลา\",\n\t\t\"permanent\": \"เปิดถาวร\",\n\t\t\"alert\": \"※ กิจกรรมครั้งนี้เป็น{wishName}อาวุธ จำนวนการรับประกันความปรารถนาจะสะสมภายในเหตุการณ์นี้เท่านั้นและไม่ขึ้นกับจำนวนการรับประกันของความปรารถนาอื่น ๆ\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"<span>การอธิษฐานแนะนำ</span> สำหรับผู้เริ่มต้น เป็นกิจกรรมอธิษฐานแบบถาวร และเป็นการอธิษฐานที่แนะนำสำหรับนักเดินทางที่เพิ่งมาถึงโลกแห่ง Teyvat นักเดินทางสามารถได้รับรางวัลตัวละครที่ไม่ใช่ตัวละครพิเศษและอาวุธ <br /> กิจกรรมอธิษฐานนี้ หากอธิษฐานแบบสิบครั้งติดต่อกันจะได้รับ<span>ส่วนลด 20%</span>และในการอธิษฐานแบบสิบครั้งแรกจะการันตีได้รับ {character}!การเปิดเซ็ตสิบครั้งหลังจากนั้น จะการันตีได้รับตัวละคร<span>อื่น ๆ</span> ตั้งแต่ระดับ 4 ดาวขึ้นไป! การอธิษฐานในเซ็ตนี้กำหนดไว้สูงสุด <span>20 ครั้ง</span> เมื่ออธิษฐานครบ 20 ครั้งแล้ว หน้าของกิจกรรมนี้จะปิดโดยอัตโนมัติ\",\n\t\t\t\"※ โดยทั่วไปแล้วโอกาสพื้นฐานจะใช้กับตัวละครหรืออาวุธทั้งหมด เช่น การเกิดเรท UP, การการันตีต่าง ๆ จะเป็นไปตามกฎกติกาที่ระบุไว้\",\n\t\t\t\"〓กติกาการอธิษฐาน〓\",\n\t\t\t\"โอกาสพื้นฐานที่จะได้รับตัวละคร 5 ดาว <span> 0.600%</span> <br /> โอกาสพื้นฐานที่จะได้รับตัวละคร 4 ดาว <span> 5.100%</span>; โอกาสโดยรวม (รวมถึงไอเทมการันตี) <span> 13.000%</span> อธิษฐานมากสุด <span>10 ครั้ง</span> การันตีได้รับตัวละครตั้งแต่ 4 ดาวขึ้นไป\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"\\\"{bannerName}\\\" เป็นกิจกรรมอธิษฐานแบบถาวร ซึ่งนักเดินทางสามารถได้รับรางวัลตัวละครที่ไม่ใช่ตัวละครพิเศษและอาวุธ.<br/> การอธิษฐานนี้ ทุกการอธิษฐาน 10 ครั้งจะ<span>การันตี</span>ได้รับอาวุธตั้งแต่ 4 ดาว ขึ้นไปอย่างน้อย 1 อัน หรือตัวละครอย่างน้อย 1 ตัว\",\n\t\t\t\"※ โดยทั่วไปแล้วโอกาสพื้นฐานจะใช้กับตัวละครหรืออาวุธทั้งหมด เช่น การเกิดเรท UP, การการันตีต่าง ๆ จะเป็นไปตามกฎกติกาที่ระบุไว้\",\n\t\t\t\"〓 กติกาการอธิษฐาน 〓\",\n\t\t\t\"โอกาสพื้นฐานที่จะได้รับไอเทม 5 ดาว คือ <span>0.600%</span>, โอกาสพื้นฐานที่จะได้รับตัวละคร 5 ดาว คือ <span>0.300%</span>, โอกาสพื้นฐานที่จะได้รับอาวุธ 5 ดาว คือ <span>0.300%</span>, โอกาสโดยรวมที่จะได้รับไอเทม 5 ดาว (รวมถึงการันตี) คือ <span>1.600%</span> โดยอธิษฐานไม่เกิน <span>90</span> ครั้ง จะได้รับไอเทม 5 ดาว <br> โอกาสพื้นฐานที่จะได้รับไอเทม 4 ดาว คือ <span>5.100%</span>, โอกาสพื้นฐานที่จะได้รับตัวละคร 4 ดาว คือ <span>2.550%</span>, โอกาสพื้นฐานที่จะได้รับอาวุธ 4 ดาว คือ <span>2.550%</span>, โอกาสโดยรวมที่จะได้รับไอเทม 4 ดาว (รวมถึงการันตี) คือ <span>13.000%</span> โดยอธิษฐานไม่เกิน <span>10</span> ครั้ง จะได้รับไอเทม 4 ดาว ขึ้นไป ซึ่งโอกาสการันตีได้รับไอเทม 4 ดาว คือ <span>99.400%</span>, โอกาสการันตีได้รับไอเทม 5 ดาว คือ <span>0.600%</span>\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"กิจกรรมอธิษฐาน \\\"{bannerName}\\\" ได้เริ่มขึ้นแล้ว ในช่วงเวลากิจกรรมโอกาสได้รับตัวละคร 5 ดาว<span>ลิมิเต็ด</span> {featuredCharacter} และตัวละคร 4 ดาว {rateupCharacters} จากการอธิษฐานจะ<span>เพิ่มขึ้น</span>! <br/> <span> ※ ตัวละครลิมิเต็ดด้านบนจะไม่ปรากฏในการอธิษฐานถาวร \\\"การอธิษฐานแห่งการเดินทาง\\\"</span>\",\n\t\t\t\"※ โดยทั่วไปแล้วโอกาสพื้นฐานจะใช้กับตัวละครหรืออาวุธทั้งหมด เช่น การเกิดเรท UP, การการันตีต่าง ๆ จะเป็นไปตามกฎกติกาที่ระบุไว้\",\n\t\t\t\"〓 กติกาการอธิษฐาน 〓\",\n\t\t\t\"[ไอเทม 5 ดาว]\",\n\t\t\t\"ในช่วงกิจกรรมอธิษฐาน \\\"{bannerName}\\\"โอกาสพื้นฐานที่จะได้รับตัวละคร 5 ดาว คือ <span>0.600%</span> โอกาสโดยรวม (รวมถึงการันตี) คือ <span>1.600%</span> โดยอธิษฐานไม่เกิน <span> 90</span> ครั้ง จะได้รับตัวละคร 5 ดาว<br/> เมื่อได้รับตัวละคร 5 ดาว จากการอธิษฐาน จะมีโอกาส <span>50.000%</span> ที่จะเป็นตัวละคร UP ในกิจกรรมนี้ {featuredCharacter}หากตัวละคร 5 ดาว ที่ได้รับไม่ใช่ตัวละคร UP ในกิจกรรมนี้ ตัวละคร 5 ดาว ที่จะได้รับในครั้งต่อไป<span>การันตี</span>ว่าจะต้องเป็นตัวละคร UP ในกิจกรรมนี้\",\n\t\t\t\"[ไอเทม 4 ดาว]\",\n\t\t\t\"ในช่วงกิจกรรมอธิษฐาน  \\\"{bannerName}\\\"โอกาสพื้นฐานที่จะได้รับไอเทม 4 ดาว คือ <span> 5.100%</span>, โอกาสพื้นฐานที่จะได้รับตัวละคร 4 ดาว คือ <span>2.550%</span>, โอกาสพื้นฐานที่จะได้รับอาวุธ 4 ดาว คือ <span>2.550%</span>, โอกาสโดยรวมที่จะได้รับไอเทม 4 ดาว (รวมถึงการันตี) คือ <span> 13.000%</span>โดยอธิษฐานไม่เกิน <span>10</span>ครั้ง จะได้รับไอเทม 4 ดาว ขึ้นไป ซึ่งโอกาสการันตีได้รับไอเทม 4 ดาว คือ <span>99.400%</span>, โอกาสการันตีได้รับไอเทม 5 ดาว คือ <span>0.600%</span>. <br/> เมื่อได้รับไอเทม 4 ดาว จากการอธิษฐาน จะมีโอกาส <span>50.000%</span> ที่จะได้รับหนึ่งในตัวละคร UP ในกิจกรรมครั้งนี้ {rateupCharacters}หากไอเทม 4 ดาว ที่ได้รับจากการอธิษฐานในครั้งนี้ไม่ใช่ตัวละคร UP ในกิจกรรมนี้ ไอเทม 4 ดาว ในครั้งต่อไป<span>การันตี</span>ว่าต้องเป็นตัวละคร 4 ดาว UP ในกิจกรรมนี้ เมื่อได้รับไอเทม 4 ดาว จากการอธิษฐาน โอกาสที่จะได้รับตัวละคร 4 ดาว UP จะมีเท่ากันทั้งหมด\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"กิจกรรมอธิษฐาน \\\"{bannerName}\\\" ได้เริ่มขึ้นแล้ว ในช่วงเวลากิจกรรมโอกาสได้รับอาวุธ 5 ดาว <span>ลิมิเต็ด</span> {featuredWeapon1}, {featuredWeapon2} และอาวุธ 4 ดาว <span>ลิมิเต็ด</span> {rateupWeapons} จากการอธิษฐานจะ<span>เพิ่มขึ้น!</span> <br/> <span> ※อาวุธลิมิเต็ดด้านบนจะไม่ปรากฏในการอธิษฐานถาวร \\\"การอธิษฐานแห่งการเดินทาง\\\"</span>\",\n\t\t\t\"※โดยทั่วไปแล้วโอกาสพื้นฐานจะใช้กับตัวละครหรืออาวุธทั้งหมด เช่น การเกิดเรท UP, การการันตีต่าง ๆ จะเป็นไปตามกฎกติกาที่ระบุไว้\",\n\t\t\t\"〓กติกาการอธิษฐาน〓\",\n\t\t\t\"[ไอเทม 5 ดาว]\",\n\t\t\t\"ในช่วงกิจกรรมอธิษฐาน \\\"{bannerName}\\\" โอกาสพื้นฐานที่จะได้รับอาวุธ 5 ดาวจากการอธิษฐานคือ <span>0.700%</span>โอกาสโดยรวม (รวมถึงการันตี) คือ <span>1.850%</span>; โดยอธิษฐานไม่เกิน <span>80</span> ครั้ง จะได้รับอาวุธ 5 ดาว<br/> เมื่อได้รับอาวุธ 5 ดาว จากการอธิษฐาน จะมีโอกาส <span>75.000%</span> ที่ได้รับหนึ่งในอาวุธ UP ในกิจกรรมครั้งนี้ {featuredWeapon1}, {featuredWeapon2}หากอาวุธ 5 ดาว ที่ได้รับไม่ใช่อาวุธ UP ในกิจกรรมนี้ อาวุธ 5 ดาว ที่จะได้รับในครั้งต่อไป<span>การันตี</span>ว่าจะต้องเป็นอาวุธ UP ในกิจกรรมนี้<span>แน่นอน</span> หากค่าชะตายังไม่ถึงตามการันตีที่จะได้รับอาวุธที่เลือกกำหนด เมื่ออธิษฐานได้รับไอเทม UP ระดับ 5 ดาว ความน่าจะเป็นที่จะได้รับอาวุธ UP ระดับ 5 ดาวแต่ละชิ้นจะมีความน่าจะเป็นเท่ากัน <br/> ในกิจกรรมอธิษฐาน \\\"{bannerName}\\\"ครั้งนี้ สามารถใช้ \\\"วิถีแห่งเทพ\\\" เพื่อเลือกกำหนดอาวุธ UP ระดับ 5 ดาวในปัจจุบันได้ โดยการเลือกกำหนดอาวุธจะมีผลเฉพาะใน กิจกรรมอธิษฐาน \\\"{bannerName}\\\" ครั้งนี้เท่านั้น <br/> ในกิจกรรมอธิษฐาน \\\"{bannerName}\\\"เมื่อใช้ \\\"วิถีแห่งเทพ\\\" เพื่อเลือกกำหนดอาวุธที่อยู่ในรายการ หากอาวุธระดับ 5 ดาวที่ได้มาไม่ใช่อาวุธที่เลือกกำหนดไว้จะได้รับค่าชะตา 1 แต้ม เมื่อค่าชะตา <span>เต็ม</span>แล้ว อาวุธระดับ 5 ดาวที่ได้รับในการอธิษฐานครั้งต่อไป<span>จะการันตี</span>ว่าเป็นอาวุธที่เลือกกำหนดไว้ในขณะนั้น และหากได้รับอาวุธที่เลือกกำหนดไว้ไม่ว่าค่าชะตาจะเต็มหรือไม่ก็ตาม จะทำให้ค่าชะตาถูกรีเซ็ตเป็น <span>0</span> และเริ่มสะสมใหม่ <br/>หากไม่ได้ทำการเลือกกำหนดอาวุธผ่าน \\\"วิถีแห่งเทพ\\\" จะ<span>ไม่มี</span>การสะสมค่าชะตา <br/>สามารถเปลี่ยนหรือยกเลิกอาวุธที่เลือกกำหนดได้ ซึ่งเมื่อเปลี่ยนหรือยกเลิกแล้ว ค่าชะตาที่สะสมมาทั้งหมดจะถูกรีเซ็ตเป็น <span>0</span> และเริ่มสะสมใหม่ <br/>※ค่าชะตาในการอธิษฐานจะมีผลเฉพาะใน กิจกรรมอธิษฐาน \\\"{bannerName}\\\" รอบปัจจุบันเท่านั้น หลังจากที่การอธิษฐานสิ้นสุดลง ค่าชะตาที่สะสมไว้จะถูกรีเซ็ตเป็น <span>0</span> และเริ่มสะสมใหม่\",\n\t\t\t\"[ไอเทม 4 ดาว]\",\n\t\t\t\"ในช่วงกิจกรรมอธิษฐาน \\\"{bannerName}\\\" โอกาสพื้นฐานที่จะได้รับไอเทม 4 ดาว คือ <span>6.000%</span>, โอกาสพื้นฐานที่จะได้รับตัวละคร 4 ดาว คือ <span>3.000%</span>, โอกาสพื้นฐานที่จะได้รับอาวุธ 4 ดาว คือ <span>3.000%</span>โอกาสโดยรวมที่จะได้รับไอเทม 4 ดาว (รวมถึงการันตี) คือ <span>14.500%</span>โดยอธิษฐานไม่เกิน <span>10</span> ครั้ง จะได้รับไอเทม 4 ดาว ขึ้นไป ซึ่งโอกาสการันตีได้รับไอเทม 4 ดาว คือ <span>99.300%</span>โอกาสการันตีได้รับไอเทม 5 ดาวคือ <span>0.700%</span>. <br/> เมื่อได้รับไอเทม 4 ดาว จากการอธิษฐาน จะมีโอกาส <span>75.000%</span>ที่ได้รับหนึ่งในอาวุธ UP 4 ดาวในกิจกรรมครั้งนี้ {rateupWeapons} หากไอเทม 4 ดาว ที่คุณได้รับในการอธิษฐานครั้งนี้ไม่ใช่อาวุธ UP ไอเทม 4 ดาว ที่จะได้รับจากการอธิษฐานครั้งต่อไป <span>การันตี</span>ว่าจะต้องเป็นอาวุธ UP 4 ดาว ในกิจกรรมนี้ และเมื่ออธิษฐานได้อาวุธ UP 4 ดาวแล้ว ความน่าจะเป็นที่จะได้รับอาวุธ UP ระดับ 4 ดาวแต่ละชิ้นจะมีความน่าจะเป็นเท่ากัน\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"ในการอธิษฐานเมื่อได้รับอาวุธ 5 ดาว จะได้รับ {starglitter} อีก 10 อัน;\",\n\t\t\t\"fourStar\": \"ในการอธิษฐานเมื่อได้รับอาวุธ 4 ดาว จะได้รับ {starglitter} อีก 2 อัน;\",\n\t\t\t\"threeStar\": \"ในการอธิษฐานเมื่อได้รับอาวุธ 3 ดาว จะได้รับ {stardust} อีก 15 อัน;\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓 การได้รับตัวละครซ้ำ 〓\",\n\t\t\t\"text\": \"เมื่อได้รับตัวละคร {rarity} ดาว ที่คุณมีอยู่แล้ว ไม่ว่าจะด้วยวิธีใดก็ตาม (รวมถึงแต่ไม่จำกัดเพียง การอธิษฐาน, การแลกเปลี่ยนจากร้านค้า, รางวัลจากเกม ฯลฯ) เมื่อได้รับตัวละคร 5 ดาว ซ้ำเป็นครั้งที่ 2-7 จะถูกเปลี่ยนเป็น{stellaFortuna}กล่าว 1 ดวง และ {starglitter} {constBonus} อัน; ตั้งแต่ครั้งที่ 8 เป็นต้นไป จะถูกเปลี่ยนเป็น {starglitter} {fullConstBonus} อัน\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"ประวัติ\",\n\t\t\"text\": \"ประวัติ\",\n\t\t\"resetButton\": \"ชัดเจน\",\n\t\t\"resetPromptTitle\": \"ล้างบันทึก ?\",\n\t\t\"resetPrompt\": \"นอกจากนี้ยังลบอักขระและอาวุธทั้งหมดที่เกี่ยวข้องกับแบนเนอร์ \\\"{bannerName}\\\" ออกจากช่องเก็บของของคุณ <br /> คุณแน่ใจว่าจะรีเซ็ต ?\",\n\t\t\"resetSuccess\": \"รีเซ็ตสำเร็จ !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"เลือกประเภท:\",\n\t\t\"disclaimer\": \"เราไม่เคยบันทึกข้อมูลของคุณบนที่เก็บข้อมูลบนคลาวด์ ข้อมูลทั้งหมดถูกเก็บไว้ใน IndexedDB หมายความว่าข้อมูลถูกบันทึกไว้ในที่จัดเก็บเบราว์เซอร์ของคุณ มันจะไม่ลบจนกว่าคุณจะลบด้วยตนเองผ่านปุ่มลบ/รีเซ็ตหรือล้างข้อมูลเบราว์เซอร์\",\n\t\t\"currentPity\": \"Current Pity :\",\n\t\t\"totalPull\": \"ทั้งหมดทั้งหมดกาชา :\",\n\t\t\"totalSpend\": \"การใช้จ่ายทั้งหมด :\",\n\t\t\"filterTxt\": \"กรอง\",\n\t\t\"filter\": \"{rarity} ดาว\",\n\t\t\"filterAll\": \"ทั้งหมด\",\n\t\t\"pity\": \"Pity\",\n\t\t\"timeReceived\": \"เวลาที่ได้รับ\",\n\t\t\"waiting\": \"ที่รอ\",\n\t\t\"noData\": \"ไม่มีข้อมูล\",\n\t\t\"untracked\": \"Untracked\",\n\t\t\"win\": \"ชนะ 50/50\",\n\t\t\"lose\": \"แพ้ 50/50\",\n\t\t\"guaranteed\": \"รับประกัน\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"อาวุธที่เลือก\",\n\t\t\"olderLayout\": \"เค้าโครงที่เก่ากว่า\",\n\t\t\"switchv2\": \"Switch to V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"ร้านค้า\",\n\t\t\"paimonBargains\": \"ร้านค้า Paimon\",\n\t\t\"fateNeeded\": \"ต้องการ {rollQty} {currency} เพิ่มเติม\",\n\t\t\"primoNeeded\": \"ซื้อด้วย {primoPrice} Primogem?\",\n\t\t\"purchaseUpto\": \"ซื้อสูงสุด 1\",\n\t\t\"purchaseConfirm\": \"ยืนยันการสั่งซื้อ\",\n\t\t\"exchangeHeading\": \"ไอเทมที่จะแลกเปลี่ยน\",\n\t\t\"purchaseHeading\": \"รายการที่จะซื้อ\",\n\t\t\"purchaseButton\": \"ซื้อ\",\n\t\t\"pay\": \"จ่าย\",\n\t\t\"product\": \"ผลิตภัณฑ์\",\n\t\t\"consume\": \"บริโภค\",\n\t\t\"selectPayment\": \"เลือกประเภทการชำระเงิน\",\n\t\t\"unrealWallet\": \"UnReal Wallet\",\n\t\t\"convertPrimo\": \"แปลงอัตโนมัติเป็นพรีโมเจม ?\",\n\t\t\"proceedPayment\": \"ดำเนินการชำระเงิน\",\n\t\t\"qty\": \"Qty\",\n\t\t\"insufficient\": \"เงินทุนไม่เพียงพอ\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"คริสตัลเติมเงิน\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"ซื้อคริสตัล\",\n\t\t\"recomendedHeading\": \"รายการแนะนำ\",\n\t\t\"paimonHeading\": \"ร้านค้า Paimon\",\n\t\t\"welkinNote\": \"ซื้อได้หลายครั้ง\",\n\t\t\"limitedOffer\": \"ข้อเสนอเวลาจำกัด\",\n\t\t\"noLimitTime\": \"ไม่มีการ จำกัด เวลาสำหรับรายการที่มีอยู่\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"พรแห่งดวงจันทร์\",\n\t\t\t\"newOutfit\": \"ชุดตัวละครใหม่\",\n\t\t\t\"dayRemaining\": \"วันเวลาที่เหลือ: {days}\",\n\t\t\t\"alreadyClaimed\": \"นำไปแล้ววันนี้\",\n\t\t\t\"instantlyGet\": \"ได้รับทันที\",\n\t\t\t\"dailyGift\": \"ของขวัญประจำวัน\",\n\t\t\t\"obtainTotal\": \"รับผลึกรวม {totalGenesis} Genesis Crystal และ {totalPrimo} primogems ตลอด 30 วัน\",\n\t\t\t\"claimingBlessing\": \"คลิกเพื่อรับรางวัลประจำวันของคุณพรจันทร์จันทร์จันทร์\",\n\t\t\t\"issuedPurchase\": \"ออกเมื่อซื้อ\",\n\t\t\t\"collect\": \"รวบรวมรางวัลการเข้าสู่ระบบรายวันเป็นเวลา 30 วัน\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"การแลกเปลี่ยน Starglitter\",\n\t\t\t\"stardust\": \"การแลกเปลี่ยน Stardust\",\n\t\t\t\"primogem\": \"แลกเปลี่ยนกับ Primogem\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Genesis Crystal\",\n\t\t\t\"primogem\": \"Primogem\",\n\t\t\t\"intertwined\": \"Intertwined Fate\",\n\t\t\t\"acquaint\": \"Acquaint Fate\",\n\t\t\t\"starglitter\": \"Masterless Starglitter\",\n\t\t\t\"stardust\": \"Masterless Stardust\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"เมล็ดพันธุ์แห่งโชคชะตาที่เชื่อมโยงความฝัน ความสามารถของมันคือการเชื่อมโยงชะตากรรมและนำความฝันของผู้คนมารวมกัน มันเป็นเงาที่ทำให้ดวงดาวเป็นรูปหัวใจ\",\n\t\t\t\"acquaint\": \"เมล็ดแห่งความหวังที่ส่องสว่างบน ท้องฟ้า ไม่ว่าจะอยู่ห่างกันเพียงไหน แสงของหินแห่งโชคชะตานี้จะแสดง หนทางไปสู่ผู้คนที่ถูกลิขิตให้พบกัน เพื่อที่พวกเขาจะได้พบกันใต้แสงดาว\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"ช่องเก็บของ\",\n\t\t\"unsetOutfit\": \"คลาย\",\n\t\t\"setOutfit\": \"ชุดชุด\",\n\t\t\"refinement\": \"Refinement {count}\",\n\t\t\"constellation\": \"Constellation {count}\",\n\t\t\"extra\": \"{count} Extra\",\n\t\t\"firstSummon\": \"เรียกครั้งแรกที่: {date}\",\n\t\t\"notOwned\": \"ไม่ได้เป็นเจ้าของ\",\n\t\t\"sort\": \"เรียงลำดับ\",\n\t\t\"rarity\": \"ความหายาก\",\n\t\t\"name\": \"ชื่อ\",\n\t\t\"quantity\": \"ปริมาณ\",\n\t\t\"element\": \"ธาตุ\",\n\t\t\"release\": \"วันที่วางจำหน่าย\",\n\t\t\"type\": \"พิมพ์\",\n\t\t\"owned\": \"เป็นเจ้าของ\",\n\t\t\"showAllOption\": \"แสดงทั้งหมด {item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"ไม่\",\n\t\t\"yes\": \"ใช่\",\n\t\t\"text\": \"เมนู\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"ตัวเลือก\",\n\t\t\"updates\": \"อัปเดตประวัติ\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"ภาษา\",\n\t\t\"currency\": \"สกุลเงิน\",\n\t\t\"fates\": \"จำนวนความปรารถนา\",\n\t\t\"unlimited\": \"ไม่ จำกัด\",\n\t\t\"manual\": \"การป้อนข้อมูลด้วยตนเอง\",\n\t\t\"mute\": \"เสียงปิดเสียงและเอฟเฟกต์เสียง\",\n\t\t\"switchBanner\": \"เปลี่ยนแบนเนอร์\",\n\t\t\"showAllitems\": \"แสดงรายการทั้งหมดในสินค้าคงคลัง\",\n\t\t\"autoskip\": \"ข้ามอัตโนมัติ Splash Art\",\n\t\t\"animatedbg\": \"พื้นหลังเคลื่อนไหว\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"ล้างข้อมูลและกู้คืนค่าเริ่มต้น\",\n\t\t\"resetTitle\": \"เคลียร์ทุกอย่าง\",\n\t\t\"rotate\": \"หมุนเพื่อประสบการณ์ที่ดีขึ้น\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Clear Caches ( {size} ) ? <small>You will redownload the assets after this action!</small>\",\n\t\t\"resetButton\": \"รีเซ็ตตอนนี้\",\n\t\t\"resetPrompt\": \"คุณแน่ใจหรือไม่ว่า <strong> ข้อมูลทั้งหมด </strong> และกู้คืนเป็นค่าเริ่มต้น?\",\n\t\t\"resetSuccess\": \"รีเซ็ตประสบความสำเร็จ\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Get a new one Here!\",\n\t\t\"noKey\": \"Don't have a key?\",\n\t\t\"verifyFail\": \"Failed to verifying AdKey, Check your Connection\",\n\t\t\"invalidKey\": \"Your key is invalid\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Enter Key\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/vi-VN.json",
    "content": "{\n\t\"title\": \"Giả Lập Cầu Nguyện Genshin Impact\",\n\t\"item\": \"Item\",\n\t\"character\": \"Nhân Vật\",\n\t\"weapon\": \"Vũ Khí\",\n\t\"vision\": \"Vision\",\n\t\"anemo\": \"Phong\",\n\t\"cryo\": \"Băng\",\n\t\"dendro\": \"Thảo\",\n\t\"electro\": \"Lôi\",\n\t\"hydro\": \"Thuỷ\",\n\t\"geo\": \"Nham\",\n\t\"pyro\": \"Hoả\",\n\t\"bow\": \"Cung\",\n\t\"catalyst\": \"Pháp Khí\",\n\t\"claymore\": \"Trọng Kiếm\",\n\t\"sword\": \"Kiếm\",\n\t\"polearm\": \"Vũ Khí Cán Dài\",\n\t\"extra\": \"Nhận Thêm\",\n\t\"obtained\": \"Nhận Được\",\n\t\"waiting\": \"Đang Chờ\",\n\t\"connectionFailed\": \"Connection Failed!\",\n\t\"confirmButton\": \"Xác Nhận\",\n\t\"cancelButton\": \"Huỷ\",\n\t\"disclaimer\": \"Tất cả đồ dùng được sử dụng trong trang này đều thuộc sở hữu của Mihoyo\",\n\t\"fanmade\": \"Đây hoàn toàn là sản phẩm Fan làm ra, hãy tận hưởng nó!\",\n\t\"pressToContinue\": \"Bấm vào khoảng trống để tiếp tục\",\n\t\"installInstruction\": \"Instructions to Install to Home Screen/Desktop\",\n\t\"share\": \"Chia Sẻ\",\n\t\"screenshot\": \"Chụp ảnh\",\n\t\"capturing\": \"Đang Chụp\",\n\t\"rewardFirstShare\": \"Phần thưởng cho lượt chia sẻ đầu tiên : {qty}\",\n\t\"version\": \"Phiên Bản\",\n\t\"donate\": \"Ủng Hộ\",\n\t\"banner\": {\n\t\t\"beginner\": \"Cầu Nguyện Dành Cho Nhà Lữ Hành Mới\",\n\t\t\"wanderlust\": \"Du Hành Thế Gian\",\n\t\t\"epitome-invocation\": \"Thân hình Thần Đúc\",\n\t\t\"ode-to-the-dawn-breeze\": \"Áng Thơ #Gió Sớm#\",\n\t\t\"adrift-in-the-harbor\": \"#Hội Ngộ# Nơi Trần Thế\",\n\t\t\"ambrosial-essence\": \"#Làn Hương# Phảng Phất\",\n\t\t\"ancient-flame-ablaze\": \"Nguồn Lửa Cổ Xưa\",\n\t\t\"astral-actuation\": \"#Tinh Nguyên# Vận Hành\",\n\t\t\"auric-blaze\": \"#Nắng Vàng# Rực Rỡ\",\n\t\t\"azure-excursion\": \"#Dạo Bước# Bên Hoa\",\n\t\t\"ballad-in-goblets\": \"#Bài Thơ# Cốc Thánh\",\n\t\t\"born-of-ocean-swell\": \"#Khoảnh Khắc# Dậy Sóng\",\n\t\t\"caution-in-confidence\": \"#Chìa Khóa# Sắc Lệnh\",\n\t\t\"chanson-of-many-waters\": \"#Muôn Nước# Ca Tụng\",\n\t\t\"conjuring-chiaroscuro\": \"Ảo Thuật #Tương Phản#\",\n\t\t\"cornucopia-of-contention\": \"#Cặp Sừng# Giác Đấu\",\n\t\t\"dance-of-lantern\": \"#Ánh Đèn# Ngư Long\",\n\t\t\"dawns-drifting-reverie\": \"Bình Minh #Mơ Màng#\",\n\t\t\"decree-of-the-deeps\": \"Decree of the #Deeps#\",\n\t\t\"dewlit-tranquility\": \"#Sương Đêm# Êm Dịu\",\n\t\t\"discerner-of-enigmas\": \"#Tố Nghê# Hiện Thiên\",\n\t\t\"drifting-luminescence\": \"#Hồng Châu# Trôi Nổi\",\n\t\t\"everbloom-violet\": \"#Sắc Tím# Hoa Đào\",\n\t\t\"farewell-of-snezhnaya\": \"#Tạm Biệt# Thủ Đô Băng\",\n\t\t\"forgefires-blessing\": \"Chúc Phúc #Lửa Rèn#\",\n\t\t\"from-ashes-reborn\": \"#Tro Tàn# Tái Sinh\",\n\t\t\"gentry-of-hermitage\": \"#Đồng Cỏ# Thị Thành\",\n\t\t\"harmonious-abundance\": \"#Sung Túc# Hài Hòa\",\n\t\t\"illuminating-lightning\": \"#Tia Sét# Xuyên Đêm\",\n\t\t\"immaculate-pulse\": \"#Tâm Sáng# Tựa Ngọc\",\n\t\t\"in-the-name-of-the-rosula\": \"Nhân Danh #Rosula#\",\n\t\t\"invitation-to-mundane-life\": \"#Lời Mời# Pháo Hoa\",\n\t\t\"la-chanson-cerise\": \"La Chanson #Cerise#\",\n\t\t\"leaves-in-the-wind\": \"#Lá Rụng# Theo Gió\",\n\t\t\"moment-of-bloom\": \"#Xích Đoàn# Khai Mở\",\n\t\t\"moonsong-of-the-groves\": \"#Khúc Trăng# Rừng Sương\",\n\t\t\"of-silken-clouds-woven\": \"#Thêu Mây# Dệt Gấm\",\n\t\t\"oni_s-royale\": \"#Quỷ Môn# Đấu Yến\",\n\t\t\"piercing-shots-crimson-wake\": \"Sắc Đỏ #Xuyên Phá#\",\n\t\t\"reign-of-serenity\": \"#Cô Độc# Giữa Nhân Gian\",\n\t\t\"remembrance-of-jade-and-stone\": \"Ký Ức #Ngọc Nham#\",\n\t\t\"romaritime-meluserenity\": \"Romaritime #Dịu Dàng#\",\n\t\t\"roving-chalice-of-dewgrass\": \"Chén Thánh #Cỏ Sương#\",\n\t\t\"rubedo-of-white-stone-born\": \"#Đá Trắng# Hóa Đỏ\",\n\t\t\"sharktacular-surfari\": \"#Cá Mập# Lướt Sóng\",\n\t\t\"secretum-secretorum\": \"#Hơi Thở# Thần Bí\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#Đi Săn# Trong Lửa\",\n\t\t\"somnias-a-luna\": \"Cùng Trăng #Say Giấc#\",\n\t\t\"sparkling-steps\": \"Dấu Chân #Của Lửa#\",\n\t\t\"starry-nights-whispers\": \"#Trời Sao# Thì Thầm\",\n\t\t\"tapestry-of-golden-flames\": \"Thiên Hà #Rực Lửa#\",\n\t\t\"tempestuous-destiny\": \"Sóng Gió #Vận Mệnh#\",\n\t\t\"temptation-of-the-crimson-sands\": \"#Cát Đỏ# Mê Hoặc\",\n\t\t\"the-crane-soars-skyward\": \"#Vân Phủ# Hạc Hành\",\n\t\t\"the-hearths-ashen-shadow\": \"Tàn Ảnh #Bên Lò#\",\n\t\t\"the-heron_s-court\": \"#Bạch# Hạc Đình\",\n\t\t\"the-lone-light-knocks-at-night\": \"Ánh Đèn Đêm Đen\",\n\t\t\"the-moongrass-enlightenment\": \"Giác Ngộ #Nguyệt Thảo#\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"Gió Bắc Khải Hoàn\",\n\t\t\"the-transcendent-one-returns\": \"#Xuất Trần# Nhập Thế\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#Sấm Sét# Liên Hoàn\",\n\t\t\"twilight-arbiter\": \"Tà Dương #Phán Quyết#\",\n\t\t\"twirling-lotus\": \"Cánh Sen #Đung Đưa#\",\n\t\t\"viridescent-vigil\": \"Thủ Hộ #Sắc Xanh#\",\n\t\t\"void-stars-advent\": \"#Ánh Sao# Ngang Qua\",\n\t\t\"ya-hoho-compendium\": \"Cẩm Nang #Ya-hoho!#\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"Định Chuẩn Thần Đúc\",\n\t\t\"fatePoint\": \"Điểm Vận Mệnh\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"Bạn có muốn huỷ định chuẩn vũ khí này không?\",\n\t\t\"cancelDesc\": \"Huỷ bỏ sẽ đặt lại điểm vận mệnh của bạn\",\n\t\t\"selectWeapon\": \"Chọn Vũ Khí\",\n\t\t\"chartCourseOf\": \"Định Chuẩn Cho {target}\",\n\t\t\"cancelCourse\": \"Huỷ Định Chuẩn\",\n\t\t\"chartCourse\": \"Định Chuẩn\",\n\t\t\"courseSetFor\": \"Đang Định Chuẩn: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"\\\"Định Chuẩn Thần Đúc là cơ chế cầu nguyện ở Thân Hình Thần Đúc kì này\",\n\t\t\t\"Sau khi định chuẩn cho vũ khí UP 5 sao mong muốn, khi cầu nguyện Thân Hình Thần Đúc nhận được vũ khí 5 Sao không phải như đã định chuẩn, sẽ nhận được <span> 1 </span> điểm vận mệnh.\",\n\t\t\t\"Sau khi điểm vận mệnh đầy, vũ khí 5 sao tiếp theo nhận được trong lần cầu nguyện này chắc chắn là vũ khí định chuẩn của lần này.\",\n\t\t\t\"Khi nhận được vũ khí định chuẩn lần này, dù điểm vận mệnh của lần đó đã đầy hay chưa cũng sẽ thiết lập lại về <span> 0 </span>.\",\n\t\t\t\"Khi chưa sử dụng Định Chuẩn Thần Đúc để định chuẩn vũ khí, sẽ không tích luỹ điểm vận mệnh.\",\n\t\t\t\"Vũ khí định chuẩn có thể thay đổi, hoặc huỷ bỏ. Khi thay đổi hoặc huỷ bỏ vũ khí định chuẩn hiện tại, điểm vận mệnh sẽ được thiết lập lại về <span> 0 </span>.\",\n\t\t\t\"Khi Thân Hình Thần Đúc kỳ này kết thúc, điểm vận mệnh cũng sẽ bị xoá sạch.\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"wishTitle\": \"Cầu Nguyện\",\n\t\t\"rollButton\": \"Cầu Nguyện {count}\",\n\t\t\"stellaFortuna\": \"Tinh Trần Vô Chủ\",\n\t\t\"loadFailed\": \"Không tải được Biểu ngữ! <br />Vui lòng chuyển sang banner khác hoặc kết nối lại internet để tránh sai sót!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"text\": \"Banner\",\n\t\t\t\"allBanner\": \"Tất cả Banner\",\n\t\t\t\"previous\": \"Banner Trước\",\n\t\t\t\"findBanner\": \"Tìm một Banner\",\n\t\t\t\"group\": \"Nhóm\",\n\t\t\t\"beginner\": \"Cầu Nguyện Dành Cho Nhà Lữ Hành Mới\",\n\t\t\t\"character-event\": \"Sự Kiện Cầu Nguyện Nhân Vật\",\n\t\t\t\"weapon-event\": \"Cầu Nguyện Vũ Khí\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"Cầu Nguyện Thường\",\n\t\t\t\"wishDescription\": \"Mỗi khi cầu nguyện 10 lần chắc chắn sẽ nhận tối thiểu 1 vật phẩm từ 4 sao trở lên.\",\n\t\t\t\"novice\": \"Cầu Nguyện Cho Người Mới\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"Giảm 20% cho 10 lần liên tục, lần đầu chắc chắn nhận {character}.\",\n\t\t\t\"beginnerNote\": \"\\\"Tôi sẽ chú ý đến nghi thức của hầu gái\\\"\",\n\t\t\t\"beginnerChance\": \"Số lần còn lại: {chances}\",\n\t\t\t\"standardNote\": \"Cầu nguyện thường là sự kiện vĩnh viễn.\",\n\t\t\t\"allWeaponTypes\": \"Tất cả vũ khí\",\n\t\t\t\"etc\": \"v.v.\",\n\t\t\t\"probIncreased\": \"Tỉ Lệ Cầu Nguyện Tăng!\",\n\t\t\t\"eventNote\": \"Chỉ có thể nhận được các nhân vật 5 sao dành riêng cho sự kiện cầu nguyện đã được chỉ định trong khoảng thời gian cụ thể.\",\n\t\t\t\"viewDetails\": \"Xem chi tiết để biết thêm.\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"Bỏ Qua\",\n\t\t\t\"meteorFailed\": \"Hoạt ảnh sao băng tải thất bại\",\n\t\t\t\"new\": \"Mới\",\n\t\t\t\"convertion\": \"Chuyển Dổi\",\n\t\t\t\"title\": \"Kết quả cầu nguyện cho {item}\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"Trang Phục Nhân Vật\",\n\t\t\"default\": \"Vỡ nợ\",\n\t\t\"setOutfit\": \"Đặt Trang Phục\",\n\t\t\"owned\": \"Đã Sở Hữu\",\n\t\t\"purchasePrompt\": \"Bạn không có nhân vật phù hợp với trang phục này, bạn có chắc muốn mua trang phục này không?\",\n\t\t\"promptInfo\": \"Bạn có thể sử dụng trang phục này sau khi nhận được nhân vật phù hợp\",\n\t\t\"obtained\": \"Trang phục mới thu được\",\n\t\t\"unlocked\": \"{character}: Mở khóa trang phục\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"\\\"Kỵ Sĩ Trinh Thám Điểm Tuyệt Đối\\\"\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"Vòng Che Chở Của Gió\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"Ngôi Sao Lưu Chuyển\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"Gai Góc Kết Án\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"Giấc Mộng Gió Biển\",\n\t\t\t\t\"description\": \"Trang phục mùa hè của Jean. Mát mẻ nhưng vẫn tao nhã, rất thích hợp cho du lịch bãi biển.\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"Mùa Hè Rực Rỡ\",\n\t\t\t\t\"description\": \"Phong cách bãi biển của Barbara. Váy ngắn tràn đầy sức sống, dường như toát ra hơi thở tươi mát của đại dương.\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"Vũ Điệu Nghê Thường\",\n\t\t\t\t\"description\": \"Trang phục chính thức của Keqing. Giữa buổi bình minh tuyệt đẹp của Lễ hội đèn lồng, những sợi chỉ dệt nên bởi những ngày làm việc chăm chỉ đan xen vào nhau thành một vẻ ngoài nhẹ nhàng nhưng lộng lẫy.\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"U Lan Tinh Diệu\",\n\t\t\t\t\"description\": \"Lễ phục của Ningguang. Bộ váy dài màu xanh lam tôn lên đường nét xinh đẹp trang nhã, cánh bướm ở phần chân càng làm tăng phần thanh thoát.\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"Giấc Mộng Đêm Khuya\",\n\t\t\t\t\"description\": \"Trang phục nghi lễ của công chúa Fischl. Nguyện cho người cao quý luôn giữ vững can đảm, sự chân thành và bản tính lương thiện. Có như thế thì tà ác mới không thể nào quât ngã cô ấy.\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"Màn Đêm Đỏ Thẫm\",\n\t\t\t\t\"description\": \"Một trong những bộ trang phục mà Diluc đã mặc khi bí mật hành động, trông như ngọn lửa cháy trong bóng tối. Dấu vết đỏ thẫm lưu lai trong tầm mắt của kẻ địch, cũng chính là con ác mộng mà chúng không thể quên được trong suốt phần đời còn lại.\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"Danh Vang Trong Lá\",\n\t\t\t\t\"description\": \"Trang phục Lisa đã đặt làm khi đến thăm Sumeru. Váy gọn gàng nhưng không kém phần trang nhã, có phần giống với đồng phục thời học sinh của cô.\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"Thư Từ Hoa Xuân\",\n\t\t\t\t\"description\": \"Trang phục đi chơi của Kamisato Ayaka. Bộ váy được may dựa theo kiểu dáng trang phục nữ giới Fontaine trong tiểu thuyết, dường như có thể thông qua đó để nhìn thấy được diện mạo cuộc sống của các cô gái Fontaine.\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"Hoa Lửa Rực Rỡ\",\n\t\t\t\t\"description\": \"Bộ trang phục xinh xắn mà Klee đã mặc khi tham gia diễn xuất trong vở kịch quan trọng. Màu sắc sặc sỡ, giống như một chiếc bánh kem được tô điểm bằng những bông hoa bằng kem cùng với nến màu đỏ rực, có thể đem đến niềm vui và nụ cười trên mọi nẻo đường mạo hiểm.\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"Cánh Buồm Lướt Gió\",\n\t\t\t\t\"description\": \"Trang phục Kaeya đã mặc khi diễn vở \\\"Đạo Chích Dao Găm\\\", là bộ trang phục lộng lẫy được thiết kế với nguyên tắc \\\"thu hút ánh nhìn\\\". Việc mặc trang phục không phiền phức lắm, chỉ mất thời gian ở chỗ gắn trang sức và dao găm.\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"Giọt Sương Hoa Băng\",\n\t\t\t\t\"description\": \"Món quà Tết Hải Đăng mà Shenhe nhận được. Lễ phục tao nhã do sư phụ Lưu Vân Tá Phong Chân Quân nhờ người may, sợi dây đỏ trên hai tay vẫn còn, nhưng cảm giác lạnh lẽo trong lòng Shenhe đã tiêu tan.\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"Hoa Ngọc Ngát Hương\",\n\t\t\t\t\"description\": \"Trang phục lễ hội nhẹ nhàng tao nhã, lấy hoa sen tím đen và lam ngọc làm chủ đạo, trang sức tóc sáng như Thanh Tâm, chính là sự kết hợp mà Ganyu yêu thích nhất.\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"Màn Mưa Rừng Trúc\",\n\t\t\t\t\"description\": \"Trang phục dự tiệc do Thương Hội Phi Vân chuẩn bị cho Xingqiu. Hoa văn hình trúc thanh tao, những đường cắt xẻ tuyệt mỹ, nhưng Xingqiu hài lòng nhất vẫn là chiếc túi bên trong, đủ để nhét một quyển tiểu thuyết mỏng vào.\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"Ảo Ảnh Đi Hia\",\n\t\t\t\t\"description\": \"Phong cách của Kirara. Mèo kiếm khách hành hiệp trượng nghĩa, thiếu nữ lanh lợi truyền đạt nguyện vọng trong câu chuyện cổ tích, xin được gửi lời chào.\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"Ngọn Gió Sabaa\",\n\t\t\t\t\"description\": \"Trang phục tao nhã của Nilou. Chiếc váy nhẹ nhàng như hàng ngàn bông hoa, mang theo hương thơm nhẹ nhàng của gió đông khi bình minh đến, chứa đựng lời chúc phúc tuyệt vời của thế giới cổ tích.\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"Tuyết Phủ Hồng Đào\",\n\t\t\t\t\"description\": \"Phong cách của Hu Tao. Không giống với bộ lễ phục đậm màu của Vãng Sinh Đường, đây là món quà do người bạn thân Xiangling chuẩn bị cho cô ấy. Còn kính râm là nằm trong bộ sưu tập cá nhân của Hu Tao.\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"Niềm Vui Xuân Về\",\n\t\t\t\t\"description\": \"Phong cách của Xiangling. Chiếc áo khoác đỏ rực rỡ như bếp lò giữa những cơn gió lạnh. Theo góp ý của Hu Tao thì phần mũ được thiết kế dựa theo hình tượng Guoba, rất được Xiangling yêu thích.\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"Yến Tiệc Tĩnh Lặng\",\n\t\t\t\t\"description\": \"Trang phục mà Yelan mặc cho ngày nghỉ, vừa trang nhã vừa không mất đi phong thái lạnh lùng, mang đến cảm giác nhàn nhã, nhưng cũng không kém phần “sắc bén”…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"Hành Trình Sắc Lửa\",\n\t\t\t\t\"description\": \"Trang phục du ngoạn Natlan của Bennett, màu chủ đạo là màu xanh lam may mắn cùng màu vàng cam rực rỡ, cũng giống như vùng đất tràn trề sức sống này vậy.\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"Quà Tặng Của Melusine\",\n\t\t\t\t\"description\": \"Món quà bất ngờ mà Neuvillette nhận được. Bất ngờ không chỉ đến từ bản thân món quà, mà còn đến từ mỗi một đôi tay nhỏ giúp đỡ khi tham gia tạo ra. Giống như dòng sông hòa vào biển lớn, sương mai cũng ngưng tụ thành phép màu lấp lánh ánh sáng óng ánh.\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"Lắng Nghe Mưa Trúc\",\n\t\t\t\t\"description\": \"Phong cách của Yaoyao. Bóng dáng cành non gõ án thư, đôi khi khách đến chẳng phải gió.\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"Thông Tin Chi Tiết\",\n\t\t\"promotional\": \"Đồ Khuyến Mãi\",\n\t\t\"itemlist\": \"Danh Sách Các Đồ\",\n\t\t\"increasedRate\": \"Tỉ Lệ Nhận Tăng\",\n\t\t\"percentageDrop\": \"Tỉ lệ vật phẩm {rarity} Sao nhận được: {percentage}\",\n\t\t\"wishDetails\": \"Thông Tin Cầu Nguyện\",\n\t\t\"probInfo\": \"Tỷ lệ cơ bản ra vật phẩm {rarity} sao: {singlePercentage} (Bảo đảm mức tối thiểu: {avgPercentage})\",\n\t\t\"itemWishFor\": \"Vật Phẩm Cầu Nguyện :\",\n\t\t\"itemType\": \"Loại\",\n\t\t\"itemName\": \"Tên\",\n\t\t\"beginnerInfo\": \"Vĩnh Viễn (Đóng sau 20 lần Cầu Nguyện)\",\n\t\t\"limited\": \"Sự kiện hạn giờ\",\n\t\t\"permanent\": \"Vĩnh Viễn\",\n\t\t\"alert\": \"※ Đây là một {wishName}. Thông thường, tất cả các nhân vật hoặc vũ khí đều áp dụng tỷ lệ cơ bản, như kích hoạt tỷ lệ UP, đảm bảo v.v... và đều tuân theo các quy tắc cụ thể.\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"<span> Cầu nguyện </span> đề xuất cho người mới là sự kiện cầu nguyện vĩnh viễn dành cho các Nhà Lữ Hành mới tham gia vào hành trình khám phá đại lục Teyvat. Nhà Lữ Hành có thể nhận được nhiều Nhân Vật và Vũ Khí không giới hạn. <br /> Trong lần cầu nguyện này, Mối Duyên Tương Ngộ sử dụng trong Cầu Nguyện 10 lần liên tiếp sẽ được giảm <span> 20%</span> đồng thời 10 lần liên tiếp đầu tiên <span> chắc chắn nhận được </span> {character} ,  10 lần liên tục tiếp theo chắc chắn nhận được nhân vật <span> khác </span> từ 4 sao trở lên! <br/> Cầu nguyện này giới hạn <span> 20 </span> lần, sau khi rút 20 lần giao diện Cầu Nguyện này sẽ đóng lại.\",\n\t\t\t\"Thông thường, tất cả các nhân vật hoặc vũ khí đều áp dụng tỷ lệ cơ bản, như kích hoạt tỷ lệ UP, đảm bảo v.v. đều tuân theo các quy tắc cụ thể.\",\n\t\t\t\"〓Quy Tắc Cầu Nguyện〓\",\n\t\t\t\"Tỷ lệ cơ bản cầu nguyện ra nhân vật 5 sao là <span> 0,600%</span> <br /> Tỷ lệ cơ bản cầu nguyện ra nhân vật 4 sao là <span> 5,100%</span>, tỷ lệ tổng hợp (bao gồm bảo đảm mức tối thiểu) là <span> 13,000%</span>;\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"Cầu nguyện thường \\\"{bannerName}\\\" là sự kiện vĩnh viễn, Nhà Lữ Hành có thể nhận được Nhân Vật và Vũ Khí không giới hạn. <br/> Trong lần cầu nguyện này, mỗi khi cầu nguyện 10 lần <span>chắc chắn sẽ </span> nhận tối thiểu 1 vật phẩm từ 4 sao trở lên.\",\n\t\t\t\"※Thông thường, tất cả các nhân vật hoặc vũ khí đều áp dụng tỷ lệ cơ bản, như kích hoạt tỷ lệ UP, đảm bảo v.v. đều tuân theo các quy tắc cụ thể.\",\n\t\t\t\"〓Quy tắc Cầu Nguyện〓\",\n\t\t\t\"Tỷ lệ cơ bản cầu nguyện ra vật phẩm 5 sao là <span>0,600%</span>, tỷ lệ cơ bản cầu nguyện ra nhân vật 5 sao là <span>0,300%</span>, tỷ lệ cơ bản cầu nguyện ra vũ khí 5 sao là <span>0,300%</span>, tỷ lệ tổng hợp vật phẩm 5 sao (bao gồm bảo đảm mức tối thiểu) là <span>1,600%</span>, cầu nguyện tối đa <span>90</span> lần chắc chắn sẽ nhận được vật phẩm 5 sao. <br> Tỷ lệ cơ bản cầu nguyện ra vật phẩm 4 sao là <span>5,100%</span>, tỷ lệ cơ bản cầu nguyện ra nhân vật 4 sao là <span>2,550%</span>,  tỷ lệ cơ bản cầu nguyện ra vũ khí 4 sao là <span>2,550%</span,  tỷ lệ tổng hợp vật phẩm 4 sao (bao gồm bảo đảm mức tối thiểu) là <span>13,000%</span>, cầu nguyện tối đa <span>10</span> lần chắc chắn sẽ nhận được vật phẩm từ 4 sao trở lên, trong đó vật phẩm nhận được qua mức bảo đảm chắc chắn này là <span>99,400%</span>đối với 4 sao và <span>0,600%</span> đối với 5 sao. \"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"Sự kiện Cầu Nguyện {bannerName} đã mở. Trong thời gian sự kiện, tỷ lệ cầu nguyện nhận nhân vật 5 sao {featuredCharacter} và nhân vật 4 sao {rateupCharacters} sẽ <span> tăng mạnh</span>! <br/> <span> ※ Trong các nhân vật ở trên, nhân vật giới hạn sẽ không vào Cầu Nguyện Thường \\\"Du Hành Thế Gian\\\".</span>\",\n\t\t\t\"※ Thông thường, tất cả các nhân vật hoặc vũ khí đều áp dụng tỷ lệ cơ bản, như kích hoạt tỷ lệ UP, đảm bảo v.v. đều tuân theo các quy tắc cụ thể.\",\n\t\t\t\"〓Quy tắc Cầu Nguyện〓\",\n\t\t\t\"Vật Phẩm 5 Sao\",\n\t\t\t\"Trong lần Sự Kiện Cầu Nguyện {bannerName} này, tỷ lệ cơ bản cầu nguyện ra nhân vật 5 sao là <span> 0,600% </span>, tỷ lệ tổng hợp (bao gồm bảo đảm mức tối thiểu) là <span>1,600%</span>, cầu nguyện tối đa <span> 90</span> lần chắc chắn sẽ nhận được nhân vật 5 sao.<br/> hi cầu nguyện nhận được nhân vật 5 sao, có <span> 50,000%</span> xác suất là nhân vật UP kỳ này {featuredCharacter}. ếu nhân vật 5 sao nhận được trong lần cầu nguyện này không phải nhân vật UP, thì nhân vật 5 sao lần sau nhận được <span> chắc chắn</span> là nhân vật UP.\",\n\t\t\t\"Vật Phẩm 4 Sao\",\n\t\t\t\"Trong lần Sự Kiện Cầu Nguyện {bannerName} này, tỷ lệ cơ bản cầu nguyện ra vật phẩm 4 sao là <span> 5,100%</span>, tỷ lệ cơ bản cầu nguyện ra nhân vật 4 sao là <span>2,550%</span>, tỷ lệ cơ bản cầu nguyện ra vũ khí 4 sao là <span>2,550%</span>, tỷ lệ tổng hợp vật phẩm 4 sao (bao gồm bảo đảm mức tối thiểu) là <span> 13,000%</span>. Cầu nguyện tối đa <span> 10 </span> lần chắc chắn sẽ nhận được vật phẩm từ 4 sao trở lên, trong đó vật phẩm nhận được qua mức bảo đảm chắc chắn này là <span>99,400%</span> đối với 4 sao và <span>0,600%</span> đối với 5 sao. <br/> Khi cầu nguyện nhận được vật phẩm 4 sao, có <span>50,000%</span> cơ hội nhận một trong các nhân vật UP kỳ này {rateupCharacters}. Nếu vật phẩm 4 sao nhận trong lần cầu nguyện này không phải nhân vật UP, thì vật phẩm ở lần sau <span>chắc chắn</span> là nhân vật UP. Khi cầu nguyện nhận được vật phẩm UP 4 sao, xác suất nhận mỗi nhân vật UP 4 sao kỳ này là bằng nhau.\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"Sự kiện Cầu Nguyện {bannerName} đã mở. Trong thời gian sự kiện, tỷ lệ Cầu Nguyện nhận vũ khí 5 sao {featuredWeapon2} và vũ khí 4 sao {featuredWeapon1} và vũ khí 4 sao <span>giới hạn</span> {rateupWeapons} sẽ <span>tăng mạnh!</span> <br/> <span> ※ Trong các vũ khí ở trên, vũ khí giới hạn sẽ không vào Cầu Nguyện Thường \\\"Du Hành Thế Gian\\\".</span>\",\n\t\t\t\"※ Thông thường, tất cả các nhân vật hoặc vũ khí đều áp dụng tỷ lệ cơ bản, như kích hoạt tỷ lệ UP, đảm bảo v.v... và đều tuân theo các quy tắc cụ thể.\",\n\t\t\t\"〓Quy tắc Cầu Nguyện〓\",\n\t\t\t\"Vật phẩm 5 sao\",\n\t\t\t\"Trong lần Sự Kiện Cầu Nguyện {bannerName} này, tỷ lệ cơ bản cầu nguyện ra vũ khí 5 sao là <span>0,700%</span>, tỷ lệ tổng hợp (bao gồm bảo đảm mức tối thiểu) là <span>1.850%</span>, cầu nguyện tối đa <span>80</span> lần chắc chắn nhận được vũ khí 5 sao.<br/> Khi cầu nguyện nhận được vũ khí 5 sao, có <span>75,000%</span> xác suất là một trong những vũ khí 5 sao UP kỳ này {featuredWeapon1} và {featuredWeapon2}. Nếu vũ khí 5 sao nhận được trong lần cầu nguyện này không phải vũ khí UP, thì vũ khí 5 sao trong lần tiếp theo <span>chắc chắn</span> là vũ khí UP. Trong trường hợp điểm vận mệnh chưa đầy và nhận được vũ khí định chuẩn, khi cầu nguyện nhận được vật phẩm UP 5 sao, xác suất nhận mỗi vũ khí UP 5 sao của kỳ này là bằng nhau. <br/> Trong kỳ Sự Kiện Cầu Nguyện {bannerName} này, có thể sử dụng Định Chuẩn Thần Đúc tiến hành định chuẩn cho vũ khí UP 5 sao kỳ này, lựa chọn vũ khí định chuẩn chỉ có hiệu lực trong Sự Kiện Cầu Nguyện {bannerName}. <br/> Trong Sự Kiện {bannerName}, sau khi sử dụng Định Chuẩn Thần Đúc để định chuẩn vũ khí, khi vũ khí 5 sao nhận được không phải vũ khí định chuẩn của lần này, sẽ nhận 1 điểm vận mệnh, sau khi điểm vận mệnh <span>đầy</span>, vũ khí 5 sao tiếp theo nhận được trong lần cầu nguyện này <span>chắc chắn</span> là vũ khí định chuẩn của lần này. Khi nhận được vũ khí định chuẩn lần này, dù điểm vận mệnh của lần đó đã đầy hay chưa cũng sẽ thiết lập lại về <span>0</span> và tích luỹ từ đầu. <br/> Khi chưa sử dụng Định Chuẩn Thần Đúc để định chuẩn vũ khí, <span>sẽ không</span> tích luỹ điểm vận mệnh. <br/> Vũ khí định chuẩn có thể thay đổi hoặc huỷ bỏ. Khi thay đổi hoặc huỷ bỏ vũ khí định chuẩn hiện tại, điểm vận mệnh sẽ được thiết lập lại về <span>0</span>. và tích luỹ lại từ đầu. <br/> ※ Điểm vận mệnh trong cầu nguyện kỳ này chỉ có hiệu lực trong kỳ Sự Kiện Cầu Nguyện Thân Hình Thần Đúc này, sau khi kết thúc cầu nguyện, điểm vận mệnh sẽ được thiết lập lại về <span>0</span>, và tích luỹ từ đầu.\",\n\t\t\t\"Vật phẩm 4 sao\",\n\t\t\t\"Trong lần Sự Kiện Cầu Nguyện {bannerName} này, tỷ lệ cơ bản cầu nguyện ra vật phẩm 4 sao là <span>6,000%</span>, tỷ lệ cơ bản cầu nguyện ra nhân vật 4 sao là <span>3,000%</span>, tỷ lệ cơ bản cầu nguyện ra vũ khí 4 sao là <span>3,000%</span>, tỷ lệ tổng hợp vật phẩm 4 sao (bao gồm bảo đảm mức tối thiểu) là <span>14,500%</span>. Cầu nguyện tối đa <span>10</span> lần chắc chắn sẽ nhận được vật phẩm từ 4 sao trở lên, trong đó vật phẩm nhận được qua mức bảo đảm này là <span>99.300%</span> đối với 4 sao và <span>0,700%</span> đối với 5 sao. <br/> Khi cầu nguyện nhận được vật phẩm 4 sao, có <span>75,000%</span> cơ hội nhận một trong những vũ khí UP kỳ này là {rateupWeapons}. Nếu vật phẩm 4 sao nhận trong lần cầu nguyện này không phải vũ khí UP kỳ này, thì vật phẩm 4 sao ở lần sau <span>chắc chắn</span> là vũ khí UP kỳ này. Khi cầu nguyện nhận được vật phẩm UP 4 sao, xác suất nhận mỗi vũ khí UP 4 sao kỳ này là bằng nhau.\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"Khi cầu nguyện nhận vũ khí 5 sao sẽ đồng thời nhận sản vật phụ là 10 {starglitter};\",\n\t\t\t\"fourStar\": \"Khi nhận vũ khí 4 sao sẽ đồng thời nhận sản vật phụ là 2 {starglitter};\",\n\t\t\t\"threeStar\": \"Khi nhận vũ khí 3 sao sẽ đồng thời nhận sản vật phụ là 15 {stardust}.\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓Nếu Nhận Trùng Nhân Vật〓\",\n\t\t\t\"text\": \"Khi nhận nhân vật {rarity} sao trùng nhau ở lần thứ 2 đến 7 bằng bất kỳ cách nào (Bao gồm nhưng không giới hạn ở cầu nguyện, đổi ở Cửa Hàng, hệ thống tặng v.v...), mỗi lần như vậy sẽ chuyển thành 1 {stellaFortuna} và {constBonus} {starglitter}, Lần thứ 8 trở đi sẽ chuyển thành {fullConstBonus} {starglitter}.\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"Lịch Sử Cầu Nguyện\",\n\t\t\"text\": \"Lịch Sử\",\n\t\t\"resetButton\": \"Xoá Lịch Sử\",\n\t\t\"resetPromptTitle\": \"Xoá Lịch Sử ?\",\n\t\t\"resetPrompt\": \"Điều này cũng xoá tất cả vũ khí và nhân vật liên quan đến Banner \\\"{bannerName}\\\" ở trong túi đồ của bạn. <br /> Bạn có chắc muốn xoá lịch sử không ?\",\n\t\t\"resetSuccess\": \"Xoá lịch sử thành công !\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"Chọn loại Cầu Nguyện:\",\n\t\t\"disclaimer\": \"Chúng tôi không bao giờ lưu trữ thông tin của bạn lên đám mây. Tất cả dữ liệu được lưu trữ ở IndexedDB, điều đó có nghĩa là tất cả dữ liệu của bạn được lưu ở trình duyệt. Nó sẽ không bao giờ bị xoá cho đến khi bạn xoá nó thủ công qua nút xoá/đặt lại hoặc nút xoá dữ liệu trình duyệt.\",\n\t\t\"currentPity\": \"Tổn hại hiện tại :\",\n\t\t\"totalPull\": \"Tổng Số Lượng :\",\n\t\t\"totalSpend\": \"Tiêu Tổng Cộng :\",\n\t\t\"filterTxt\": \"Bộ Lọc\",\n\t\t\"filter\": \"{rarity} Sao\",\n\t\t\"filterAll\": \"Tất Cả\",\n\t\t\"pity\": \"Tổn Hại\",\n\t\t\"timeReceived\": \"Thời gian nhận được\",\n\t\t\"waiting\": \"Đang Chờ\",\n\t\t\"noData\": \"Không Có Dữ Liệu .\",\n\t\t\"untracked\": \"Không Được Theo Dõi\",\n\t\t\"win\": \"Thắng 50/50\",\n\t\t\"lose\": \"Thua 50/50\",\n\t\t\"guaranteed\": \"Được Đảm Bảo\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"Vũ khí Đã Chọn\",\n\t\t\"olderLayout\": \"Kiểu Cũ Hơn\",\n\t\t\"switchv2\": \"Chuyển Sang V2\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"Cửa Hàng\",\n\t\t\"paimonBargains\": \"Đổi Bụi Ánh Sáng\",\n\t\t\"fateNeeded\": \"Cần thêm {rollQty} {currency} nữa.\",\n\t\t\"primoNeeded\": \"Thanh toán với {primoPrice} Nguyên thạch ?\",\n\t\t\"purchaseUpto\": \"Thanh Toán Lên Tới 1\",\n\t\t\"purchaseConfirm\": \"Xác Nhận Thanh Toán\",\n\t\t\"exchangeHeading\": \"Vật Phẩm Cần Đổi\",\n\t\t\"purchaseHeading\": \"Vật Phẩm Cần Thanh Toán\",\n\t\t\"purchaseButton\": \"Thanh Toán\",\n\t\t\"pay\": \"Trả Tiền\",\n\t\t\"product\": \"Sản Phẩm\",\n\t\t\"consume\": \"Tiêu Tốn\",\n\t\t\"selectPayment\": \"Lựa chọn loại hình thanh toán\",\n\t\t\"unrealWallet\": \"Ví không có thật (unReal Wallet)\",\n\t\t\"convertPrimo\": \" Tự động chuyển thành nguyên thạch ?\",\n\t\t\"proceedPayment\": \"Tiến hành thanh toán\",\n\t\t\"qty\": \"Số lượng\",\n\t\t\"insufficient\": \"Không Đủ Tiền\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"Crystal Top-Up\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"Mua Đá Sáng Thế\",\n\t\t\"recomendedHeading\": \"Vật Phẩm Khuyến Nghị\",\n\t\t\"paimonHeading\": \"Đổi Bụi Ánh Sáng\",\n\t\t\"welkinNote\": \"Có thể thanh toán nhiều lần\",\n\t\t\"limitedOffer\": \"Khuyến Mãi Giới Hạn\",\n\t\t\"noLimitTime\": \"Không có thời gian giới hạn\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"Không Nguyệt Chúc Phúc\",\n\t\t\t\"newOutfit\": \"Trang phục nhân vật mới\",\n\t\t\t\"dayRemaining\": \"Số Ngày Còn Lại: {days}\",\n\t\t\t\"alreadyClaimed\": \"Đã Nhận Hôm Nay\",\n\t\t\t\"instantlyGet\": \"Nhận Ngay Lập Tức\",\n\t\t\t\"dailyGift\": \"Quà Hằng Ngày\",\n\t\t\t\"obtainTotal\": \"Nhận tổng cộng {totalGenesis} Đá Sáng Thế và {totalPrimo} nguyên thạch trong 30 ngày\",\n\t\t\t\"claimingBlessing\": \"Bấm để nhận phần thưởng Không Nguyệt Chúc Phúc hằng ngày của bạn\",\n\t\t\t\"issuedPurchase\": \"Được Nhận Khi Mua\",\n\t\t\t\"collect\": \"Nhận phần thưởng đăng nhập hằng ngày trong 30 ngày\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"Đổi Tinh Huy Vô Chủ\",\n\t\t\t\"stardust\": \"Đổi Tinh Trần Vô Chủ\",\n\t\t\t\"primogem\": \"Đổi với Nguyên Thạch\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"Đá Sáng Thế\",\n\t\t\t\"primogem\": \"Nguyên Thạch\",\n\t\t\t\"intertwined\": \"Mối Duyên Vương Vấn\",\n\t\t\t\"acquaint\": \"Mối Duyên Tương Ngộ\",\n\t\t\t\"starglitter\": \"Tinh Huy Vô Chủ\",\n\t\t\t\"stardust\": \"Tinh Trần Vô Chủ\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"Hạt giống vận mệnh kết nối ước mơ. Ánh sáng của duyên thạch kết nối nhiều vận mệnh, gắn liền ước mơ của đôi bên, cũng giống như ánh sáng này kết nối những chòm sao kết thành hình ảnh mà trong lòng hướng đến.\",\n\t\t\t\"acquaint\": \"Thắp sáng hạt giống hy vọng trên bầu trời. Bất kể xa cách bao nhiêu, người đã được vận mệnh an bài đều sẽ được ánh sáng của duyên thạch dẫn lối, gặp nhau dưới trời đất này.\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"Túi Đồ\",\n\t\t\"unsetOutfit\": \"Trang phục chưa được chọn\",\n\t\t\"setOutfit\": \"Áp dụng trang phục cho nhân vật\",\n\t\t\"refinement\": \"Sàng lọc {count}\",\n\t\t\"constellation\": \"Số lượng chòm sao {count}\",\n\t\t\"extra\": \"Nhận thêm {count}\",\n\t\t\"firstSummon\": \"Được mở lần đầu vào lúc : {date}\",\n\t\t\"notOwned\": \"Chưa Sở Hữu\",\n\t\t\"sort\": \"Phân Loại\",\n\t\t\"rarity\": \"Độ Hiếm\",\n\t\t\"name\": \"Tên\",\n\t\t\"quantity\": \"Số Lượng\",\n\t\t\"element\": \"Nguyên Tố\",\n\t\t\"release\": \"Release Date\",\n\t\t\"type\": \"Loại\",\n\t\t\"owned\": \"Đã sở Hữu\",\n\t\t\"showAllOption\": \"Hiện tất cả {item} vật phẩm\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"Không\",\n\t\t\"yes\": \"Có\",\n\t\t\"text\": \"Menu\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"Tuỳ Chọn\",\n\t\t\"updates\": \"Lịch Sử Cập Nhật\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"Ngôn Ngữ\",\n\t\t\"currency\": \"Đơn VịTiền Tệ\",\n\t\t\"fates\": \"Số điều ước\",\n\t\t\"unlimited\": \"Vô hạn\",\n\t\t\"manual\": \"Nhập thủ công\",\n\t\t\"mute\": \"Tắt Tiếng Âm Thanh Và Hiệu Ứng Âm Thanh\",\n\t\t\"switchBanner\": \"Đổi Banner\",\n\t\t\"showAllitems\": \"Hiện tất cả vật phẩm trong túi đồ\",\n\t\t\"autoskip\": \"Tự động bỏ qua Splash Art\",\n\t\t\"animatedbg\": \"Hình nền chuyển động\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"Xoá sạch dữ liệu và khôi phục cài đặt gốc\",\n\t\t\"resetTitle\": \"Factory Reset\",\n\t\t\"rotate\": \"Xoay thiết bị cho trải nghiệm tốt hơn\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"Clear Caches ( {size} ) ? <small>You will re-load the assets after this action!</small>\",\n\t\t\"resetButton\": \"Xoá sạch ngay lập tức\",\n\t\t\"resetPrompt\": \"Bạn có chắc muốn xoá <strong> Tất cả dữ liệu </strong> và khôi phục cài đặt gốc ?\",\n\t\t\"resetSuccess\": \"Đặt lại thành công\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"Get a new one Here!\",\n\t\t\"noKey\": \"Don't have a key?\",\n\t\t\"verifyFail\": \"Failed to verifying AdKey, Check your Connection\",\n\t\t\"invalidKey\": \"Your key is invalid\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"Enter Key\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/zh-CN.json",
    "content": "{\n\t\"title\": \"原神祈愿模拟器\",\n\t\"item\": \"物品\",\n\t\"character\": \"角色\",\n\t\"weapon\": \"武器\",\n\t\"vision\": \"神之眼\",\n\t\"anemo\": \"风\",\n\t\"cryo\": \"冰\",\n\t\"dendro\": \"草\",\n\t\"electro\": \"雷\",\n\t\"hydro\": \"水\",\n\t\"geo\": \"岩\",\n\t\"pyro\": \"火\",\n\t\"bow\": \"弓\",\n\t\"catalyst\": \"法器\",\n\t\"claymore\": \"双手剑\",\n\t\"sword\": \"单手剑\",\n\t\"polearm\": \"长柄武器\",\n\t\"extra\": \"额外获得\",\n\t\"obtained\": \"已获得\",\n\t\"waiting\": \"请稍等\",\n\t\"connectionFailed\": \"连接失败！\",\n\t\"confirmButton\": \"确认\",\n\t\"cancelButton\": \"取消\",\n\t\"disclaimer\": \"本网站使用的所有资源均归米哈游所有。\",\n\t\"fanmade\": \"这是一个粉丝制作的应用，尽情享受吧！\",\n\t\"pressToContinue\": \"点击空白区域继续\",\n\t\"installInstruction\": \"安装到主屏幕/桌面的教程\",\n\t\"share\": \"分享\",\n\t\"screenshot\": \"截图\",\n\t\"capturing\": \"正在截图\",\n\t\"rewardFirstShare\": \"首次分享 : {qty}\",\n\t\"version\": \"版本\",\n\t\"donate\": \"捐赠\",\n\t\"banner\": {\n\t\t\"beginner\": \" 初行者推荐#祈愿#\",\n\t\t\"wanderlust\": \" 奔行#世间#\",\n\t\t\"epitome-invocation\": \"#神铸#赋形\",\n\t\t\"ode-to-the-dawn-breeze\": \"#晨风#之诗\",\n\t\t\"adrift-in-the-harbor\": \"#浮生#孰来\",\n\t\t\"ambrosial-essence\": \"#凝露#轻芳\",\n\t\t\"ancient-flame-ablaze\": \"#宿古#的赫炎\",\n\t\t\"astral-actuation\": \"#聚星#源动\",\n\t\t\"auric-blaze\": \"#烈阳#烁金\",\n\t\t\"azure-excursion\": \"#苍流#踏花\",\n\t\t\"ballad-in-goblets\": \"#杯装#之诗\",\n\t\t\"born-of-ocean-swell\": \"#浪涌#之瞬\",\n\t\t\"caution-in-confidence\": \"#敕诫#枢谋\",\n\t\t\"chanson-of-many-waters\": \"#众水#的颂诗\",\n\t\t\"conjuring-chiaroscuro\": \"#光与影#的戏术\",\n\t\t\"cornucopia-of-contention\": \"#饫宴#角戏\",\n\t\t\"dance-of-lantern\": \"#鱼龙#灯昼\",\n\t\t\"dawns-drifting-reverie\": \"#浮枕#朝颜\",\n\t\t\"decree-of-the-deeps\": \"#渊海#界令\",\n\t\t\"dewlit-tranquility\": \"#露景#涓然\",\n\t\t\"discerner-of-enigmas\": \"#素霓#伣天\",\n\t\t\"drifting-luminescence\": \"#浮岳#虹珠\",\n\t\t\"everbloom-violet\": \"#华紫#樱绯\",\n\t\t\"farewell-of-snezhnaya\": \"暂别#冬都#\",\n\t\t\"forgefires-blessing\": \"#煅火#的祝赐\",\n\t\t\"from-ashes-reborn\": \"#余火#变相\",\n\t\t\"gentry-of-hermitage\": \"#陵薮#市朝\",\n\t\t\"harmonious-abundance\": \"#华黍#由仪\",\n\t\t\"illuminating-lightning\": \"#流霆#贯夜\",\n\t\t\"immaculate-pulse\": \"#心珠#循琅\",\n\t\t\"in-the-name-of-the-rosula\": \"#刺玫#的铭誓\",\n\t\t\"invitation-to-mundane-life\": \"#烟火#之邀\",\n\t\t\"la-chanson-cerise\": \"#莓色#香颂\",\n\t\t\"leaves-in-the-wind\": \"#叶落#风随\",\n\t\t\"moment-of-bloom\": \"#赤团#开时\",\n\t\t\"moonsong-of-the-groves\": \"#赤團#開時\",\n\t\t\"of-silken-clouds-woven\": \"#千云#绘羽织\",\n\t\t\"oni_s-royale\": \"#鬼门#斗宴\",\n\t\t\"piercing-shots-crimson-wake\": \"#饮羽#散红\",\n\t\t\"reign-of-serenity\": \"#影寂#天下人\",\n\t\t\"remembrance-of-jade-and-stone\": \"#玉岩#之忆\",\n\t\t\"romaritime-meluserenity\": \"#柔柔#海露心\",\n\t\t\"roving-chalice-of-dewgrass\": \"#露草#的行盏\",\n\t\t\"rubedo-of-white-stone-born\": \"#白礜#赤成\",\n\t\t\"sharktacular-surfari\": \"#鲨鲨#逐浪游\",\n\t\t\"secretum-secretorum\": \"#深秘#之息\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#巡火#猎秘\",\n\t\t\"somnias-a-luna\": \"#伴月#同眠\",\n\t\t\"sparkling-steps\": \"#闪焰#的驻足\",\n\t\t\"starry-nights-whispers\": \"#星边#夜语\",\n\t\t\"tapestry-of-golden-flames\": \"#焰色#天河\",\n\t\t\"tempestuous-destiny\": \"#劫中#泛滥\",\n\t\t\"temptation-of-the-crimson-sands\": \"#赤砂#的诱言\",\n\t\t\"the-crane-soars-skyward\": \"#云府#鹤行\",\n\t\t\"the-hearths-ashen-shadow\": \"#炉边#烬影\",\n\t\t\"the-heron_s-court\": \"#白鹭#之庭\",\n\t\t\"the-lone-light-knocks-at-night\": \"#孤灯#夜访\",\n\t\t\"the-moongrass-enlightenment\": \"#月草#的赐慧\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#北风#的凯旋歌\",\n\t\t\"the-transcendent-one-returns\": \"#出尘#入世\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#鸣雷#贯天原\",\n\t\t\"twilight-arbiter\": \"#雳裁#冥昭\",\n\t\t\"twirling-lotus\": \"#翩舞#歈莲\",\n\t\t\"viridescent-vigil\": \"#巡御#蘙荟\",\n\t\t\"void-stars-advent\": \"#虚星#临渡\",\n\t\t\"ya-hoho-compendium\": \"#呀吼吼#博物志\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"神铸定轨\",\n\t\t\"fatePoint\": \"命定值\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"是否确认取消当前的定轨？\",\n\t\t\"cancelDesc\": \"取消后，已积累的命定值将清空。\",\n\t\t\"selectWeapon\": \"选择定轨武器\",\n\t\t\"chartCourseOf\": \"为{target}定轨\",\n\t\t\"cancelCourse\": \"取消定轨\",\n\t\t\"chartCourse\": \"定轨\",\n\t\t\"courseSetFor\": \"当前定轨: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"「神铸定轨」是本期「神铸赋形」所特有的祈愿机制：\",\n\t\t\t\"对期望的5星UP武器进行定轨后，当通过祈愿在本期「神铸赋形」中<span>获取非定轨的5星武器时，将获得1点命定值</span>。\",\n\t\t\t\"命定值充满后，在本期「神铸赋形」中祈愿获得的下一件5星武器将会是通过「神铸定轨」选定的武器。\",\n\t\t\t\"在本期「神铸赋形」中祈愿<span>获得「神铸定轨」的武器时，已积累的命定值将会清除</span>。\",\n\t\t\t\"未通过「神铸定轨」定轨武器时，祈愿将不会累积命定值。\",\n\t\t\t\"武器的定轨状态可以进行更换，也可以取消定轨。<span>更换或取消时，会清除已积累的命定值</span>。\",\n\t\t\t\"<span>本期「神铸赋形」结束时，已积累的命定值也将清除</span>。\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"rollButton\": \"祈愿{count}次\",\n\t\t\"stellaFortuna\": \"对应角色的命星\",\n\t\t\"loadFailed\": \"Failed to load Banner! <br /> Please switch to other banner or reconnect to the internet to avoid errors!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"wishTitle\": \"祈愿\",\n\t\t\t\"text\": \"卡池\",\n\t\t\t\"allBanner\": \"全部卡池\",\n\t\t\t\"previous\": \"往期卡池\",\n\t\t\t\"findBanner\": \"搜索卡池\",\n\t\t\t\"group\": \"分组\",\n\t\t\t\"beginner\": \" 初行者推荐祈愿\",\n\t\t\t\"character-event\": \"角色活动祈愿\",\n\t\t\t\"weapon-event\": \"武器活动祈愿\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"常驻祈愿\",\n\t\t\t\"wishDescription\": \"每十次祈愿必出四星或以上物品。\",\n\t\t\t\"novice\": \"新手祈愿\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"十连8折，首次必得{character}\",\n\t\t\t\"beginnerNote\": \"「我会注意女仆的礼仪。」\",\n\t\t\t\"beginnerChance\": \"剩余次数：{chances}\",\n\t\t\t\"standardNote\": \"常驻祈愿，永久性祈愿活动。\",\n\t\t\t\"allWeaponTypes\": \"全部类型\",\n\t\t\t\"etc\": \"等\",\n\t\t\t\"probIncreased\": \"获取概率提升！\",\n\t\t\t\"eventNote\": \"活动限定五星角色仅在UP期间，通过对应祈愿获得。\",\n\t\t\t\"viewDetails\": \"具体内容查看【详情】\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"跳过\",\n\t\t\t\"meteorFailed\": \"祈愿动画加载失败\",\n\t\t\t\"new\": \"新\",\n\t\t\t\"convertion\": \"转化\",\n\t\t\t\"title\": \"{item} 祈愿结果\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"角色装扮\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"设置装扮\",\n\t\t\"owned\": \"已拥有\",\n\t\t\"purchasePrompt\": \"您还没有此装扮对应的角色，您确定要购买此装扮吗？\",\n\t\t\"promptInfo\": \"获得相应的角色后，您仍然可以使用此装扮\",\n\t\t\"obtained\": \"New Outfit Obtained\",\n\t\t\"unlocked\": \"{character}: Outfit Unlocked\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"「满分的侦察骑士」\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"风之虔护\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"星命流转\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"处刑棘刺\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"海风之梦\",\n\t\t\t\t\"description\": \"琴的夏日装束。清凉而不失优雅，是海滨之游的绝佳搭配。\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"闪耀协奏\",\n\t\t\t\t\"description\": \"芭芭拉的海滩装扮。洋溢着夏日活力的俏丽短裙，似乎散发着海洋的清爽气息。\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"霓裾蹁跹\",\n\t\t\t\t\"description\": \"刻晴的礼服装扮。于海灯节之良辰美景中，往日辛劳浓墨所绘的线条，交织成今夜轻盈而瑰丽的容姿。\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"纱中幽兰\",\n\t\t\t\t\"description\": \"凝光的礼服装扮。绀蓝长裙勾勒出丽人优雅的曲线，脚踝上的蝶翼又为她平添了几分轻盈。\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"极夜终梦\",\n\t\t\t\t\"description\": \"皇女菲谢尔的祭礼着装。愿高贵的人永远葆有勇气、诚挚与善心，如此，邪恶必无法挫败她。\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"殷红终夜\",\n\t\t\t\t\"description\": \"迪卢克隐秘行动时所穿的衣装之一，如阴影之中翻腾的火焰。敌人视野尽头所留下的殷红残痕，即是他们余生挥之不去的梦魇。\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"叶隐芳名\",\n\t\t\t\t\"description\": \"丽莎重游须弥时请人订做的服饰。裙装干练而不失优雅，与她学生时代的制服有几分相似之处。\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"花时来信\",\n\t\t\t\t\"description\": \"神里绫华的出游装扮。比照轻小说插画中的枫丹女性装束而制作的洋装，似乎能借其一窥枫丹淑女的生活风貌。\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"琪花星烛\",\n\t\t\t\t\"description\": \"可莉出演关键剧目时所穿的精致服装，色彩明丽，如同点缀着奶油花朵和明红蜡烛的蛋糕，能将快乐与笑容带往冒险所至的每个角落。\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"帆影游风\",\n\t\t\t\t\"description\": \"凯亚在舞台上饰演「短刀大盗」时的装扮，以「吸睛」为设计原则的华丽服装。不过衣服穿起来并不麻烦，最花时间打理的是饰品与短刀。\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"冷花幽露\",\n\t\t\t\t\"description\": \"申鹤收到的海灯节贺礼。由其师留云借风真君请人缝制的优雅礼服，双臂上红绳依旧，但申鹤心中的苦寒之意已淡。\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"玄玉瑶芳\",\n\t\t\t\t\"description\": \"角色天赋素材\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"雨化竹身\",\n\t\t\t\t\"description\": \"飞云商会为行秋准备的宴会衣装。竹纹清雅、剪裁服帖，但最令行秋满意的还是其内层的口袋，足够塞下一册较薄的小说了。\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"倩影游侠\",\n\t\t\t\t\"description\": \"绮良良的装扮款式。童话中行侠仗义的猫猫剑客，传递愿望的狡黠少女，向您致意。\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"莎邦之息\",\n\t\t\t\t\"description\": \"妮露的典雅服饰，千花编织般的轻盈裙装，如有黎明时的东风捎来淡香，承载着童话世界的美好祝福。\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"宿雪桃红\",\n\t\t\t\t\"description\": \"胡桃的装扮款式。有别于往生堂深色仪服的素色连衣裙，是好友香菱为胡桃特别准备的礼物，墨镜则是她自己的收藏。\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"岁夜欢哗\",\n\t\t\t\t\"description\": \"香菱的装扮款式。冷风中的一抹红色灶火，帽子在胡桃提议下根据锅巴的形象特别设计而成，很受香菱喜爱。\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"静暇雅宴\",\n\t\t\t\t\"description\": \"夜兰为假日时光所搭配的装束，典雅而不失利落，捎来悠暇的心境之余，也不失为一种「充满攻势」的伪装…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"炽绘奇旅\",\n\t\t\t\t\"description\": \"班尼特的纳塔游历装束，主色调是幸运的湖蓝，以及炽热的黄橙，如同这片土地一般洋溢着勃勃生机。\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"莘露的赠礼\",\n\t\t\t\t\"description\": \"那维莱特收到的惊喜礼物。惊喜不仅源于礼物本身，更来自于参与礼物制作的每一双小小援手。就像河流汇于大海，露水也凝聚成闪耀着七色光芒的奇迹。\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"聆雨听竹\",\n\t\t\t\t\"description\": \"瑶瑶的装扮款式。新梢清影叩书案，有时客来不是风。\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"详情\",\n\t\t\"promotional\": \"UP物品\",\n\t\t\"itemlist\": \"物品清单\",\n\t\t\"increasedRate\": \"以下内容出现[概率UP!!!]\",\n\t\t\"percentageDrop\": \"占{rarity}星出率的: {percentage}\",\n\t\t\"wishDetails\": \"祈愿详情\",\n\t\t\"probInfo\": \"{rarity}星物品基础出率：{singlePercentage} (含保底综合出率：{avgPercentage})\",\n\t\t\"itemWishFor\": \"以下为祈愿物品清单：\",\n\t\t\"itemType\": \"类型\",\n\t\t\"itemName\": \"名称\",\n\t\t\"beginnerInfo\": \"无时间上限 (抽取20次后关闭)\",\n\t\t\"limited\": \"限时活动\",\n\t\t\"permanent\": \"永久\",\n\t\t\"alert\": \"※ 本祈愿属于「{wishName}」，其祈愿次数保底会一直累计在「{wishName}」中，与其他祈愿的祈愿次数保底相互独立计算，互不影响。\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"初行者推荐祈愿为<span>永久</span>性祈愿活动，是面向新加入提瓦特大陆的旅行者的推荐祈愿。在本祈愿内，十连所消耗的相遇之缘数量可享受8折优惠，且首次十连必会获取「{character}」，第二次十连必会获取4星或以上的角色！本祈愿存在祈愿次数上限，最高为<span>20</span>次，抽取20次后<span>本活动祈愿界面将关闭</span>。\",\n\t\t\t\"※一般情况下所有角色或武器均适用基础概率，如触发概率UP、保底等以具体规则为准。\",\n\t\t\t\"〓祈愿规则〓\",\n\t\t\t\"5星物品祈愿的基础概率为<span>0.600%</span>，5星角色祈愿的基础概率为<span>0.300%</span>，5星武器祈愿的基础概率为<span>0.300%</span>，5星物品祈愿综合概率（含保底）为<span>1.600%</span>，最多<span>90</span>次祈愿必定能通过保底获取5星物品。<br> 4星物品祈愿的基础概率为<span>5.100%</span>，4星角色祈愿的基础概率为<span>2.550%</span>，4星武器祈愿的基础概率为<span>2.550%</span>，4星物品祈愿的综合概率（含保底）为<span>13.000%</span>。最多<span>10</span>次祈愿必定能通过保底获取4星或以上物品，通过保底获取4星物品的概率为<span>99.400%</span>，获取5星物品的概率为<span>0.600%</span>。\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"「{bannerName}」常驻祈愿为永久性祈愿活动，玩家可以抽取非限定角色与武器。<br/>在本祈愿内，每10次祈愿<span>必会</span>获得至少1个4星或以上物品。\",\n\t\t\t\"※一般情况下所有角色或武器均适用基础概率，如触发概率UP、保底等以具体规则为准。\",\n\t\t\t\"〓祈愿规则〓\",\n\t\t\t\"5星物品祈愿的基础概率为<span>0.600%</span>，5星角色祈愿的基础概率为<span>0.300%</span>，5星武器祈愿的基础概率为<span>0.300%</span>，5星物品祈愿综合概率（含保底）为<span>1.600%</span>，最多<span>90</span>次祈愿必定能通过保底获取5星物品。<br> 4星物品祈愿的基础概率为<span>5.100%</span>，4星角色祈愿的基础概率为<span>2.550%</span>，4星武器祈愿的基础概率为<span>2.550%</span>，4星物品祈愿的综合概率（含保底）为<span>13.000%</span>。最多<span>10</span>次祈愿必定能通过保底获取4星或以上物品，通过保底获取4星物品的概率为<span>99.400%</span>，获取5星物品的概率为<span>0.600%</span>。\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"「{bannerName}」活动祈愿已开启。活动期间内，限定5星角色「{featuredCharacter}」以及4星角色 {rateupCharacters} 的祈愿获取概率将<span>大幅提升</span>！ <span> ※以上角色中，限定角色不会进入「奔行世间」常驻祈愿。 </span>\",\n\t\t\t\"※ 一般情况下所有角色或武器均适用基础概率，如触发概率UP、保底等以具体规则为准。\",\n\t\t\t\"〓祈愿规则〓\",\n\t\t\t\"【5星物品】\",\n\t\t\t\"在本期「{bannerName}」活动祈愿中，5星角色祈愿的基础概率为<span>0.600%</span>，综合概率（含保底）为<span>1.600%</span>，最多<span>90</span>次祈愿必定能通过保底获取5星角色。当祈愿获取到5星角色时，有<span>50.000%</span>的概率为本期5星UP角色「{featuredCharacter}」。如果本次祈愿获取的5星角色非本期5星UP角色，下次祈愿获取的5星角色<span>必定</span>为本期5星UP角色。\",\n\t\t\t\"【4星物品】\",\n\t\t\t\"在本期「叶落风随」活动祈愿中，4星物品祈愿的基础概率为<span>5.100%</span>，4星角色祈愿的基础概率为<span>2.550%</span>，4星武器祈愿的基础概率为<span>2.550%</span>，4星物品祈愿的综合概率（含保底）为<span>13.000%</span>。最多<span>10</span>次祈愿必定能通过保底获取4星或以上物品，通过保底获取4星物品的概率为<span>99.400%</span>，获取5星物品的概率为<span>0.600%</span>。当祈愿获取到4星物品时，有<span>50.000%</span>的概率为本期4星UP角色{rateupCharacters}中的一个。如果本次祈愿获取的4星物品非本期4星UP角色，下次祈愿获取的4星物品<span>必定</span>为本期4星UP角色。当祈愿获取到4星UP物品时，每个本期4星UP角色的获取概率均等。\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"「{bannerName}」活动祈愿现已开启。活动期间内，限定5星武器「{featuredWeapon1}」、5星武器「{featuredWeapon2}」以及4星武器{rateupWeapons}的祈愿获取概率将<span>大幅提升</span>！<br/> <span> ※以上武器中，限定武器不会进入「奔行世间」常驻祈愿。</span>\",\n\t\t\t\"※一般情况下所有角色或武器均适用基础概率，如触发概率UP、保底等以具体规则为准。\",\n\t\t\t\"〓祈愿规则〓\",\n\t\t\t\"【5星物品】\",\n\t\t\t\"在本期「{bannerName}」活动祈愿中，5星武器祈愿的基础概率为<span>0.700%</span>，综合概率（含保底）为<span>1.850%</span>，最多<span>80</span>次祈愿必定能通过保底获取5星角色。当祈愿获取到5星角色时，有<span>75.000%</span>的概率为本期5星UP武器「{featuredWeapon1}」、「{featuredWeapon2}」。如果本次祈愿获取的5星角色非本期5星UP武器，下次祈愿获取的5星武器<span>必定</span>为本期5星UP武器。<br/>在未通过命定值达到满值获取定轨武器的情况下，当祈愿获取到5星UP物品时，每把本期5星UP武器的获取概率均等。<br/>在本期「{bannerName}」活动祈愿中，可使用「神铸定轨」对本期5星UP武器进行定轨，定轨武器的选择仅在本期「{bannerName}」活动祈愿中生效。<br/>在本期「{bannerName}」活动祈愿中，使用「神铸定轨」定轨武器后，当获取到的5星武器为非当前定轨武器时，获得1点命定值，命定值达到<span>满值</span>后，在本祈愿中获得的下一把5星武器<span>必定</span>为当前定轨武器。获取到当前定轨武器时，无论当前命定值是否达到满值，都将会重置为<span>0</span>，重新累计。<br/>未使用「神铸定轨」定轨武器时，将<span>不会</span>累积命定值。<br/>定轨武器可进行更换或取消。更换或取消当前定轨武器时，命定值将会重置为<span>0</span>，重新累计。<br/>※本祈愿中的命定值仅在本期「{bannerName}」活动祈愿中生效，祈愿结束后命定值将会重置为<span>0</span>，重新累计。\",\n\t\t\t\"【4星物品】\",\n\t\t\t\"在本期「{bannerName}」活动祈愿中，4星物品祈愿的基础概率为<span>6.000%</span>，4星角色祈愿的基础概率为<span>3.000%</span>，4星武器祈愿的基础概率为<span>3.000%</span>，4星物品祈愿的综合概率（含保底）为<span>14.500%</span>。最多10次祈愿必定能通过保底获取4星或以上物品，通过保底获取4星物品的概率为99.300%，获取5星物品的概率为0.700%。 <br/> 当祈愿获取到4星物品时，有<span>75.000%</span>的概率为本期4星UP武器{rateupWeapons}中的一个。如果本次祈愿获取的4星物品非本期4星UP武器，下次祈愿获取的4星物品<span>必定</span>为本期4星UP武器。当祈愿获取到4星UP物品时，每把本期4星UP武器的获取概率均等。\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"祈愿获得5星武器时，会同时获得10个{starglitter}作为副产物；\",\n\t\t\t\"fourStar\": \"获得4星武器时，会同时获得2个{starglitter}作为副产物；\",\n\t\t\t\"threeStar\": \"获得3星武器时，会同时获得15个{stardust}作为副产物。\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓若获得重复角色〓\",\n\t\t\t\"text\": \"无论通过何种方式（包含但不限于祈愿、商城兑换、系统赠送等）第2~7次获得相同{rarity}星角色时，每次将转化为1个{stellaFortuna}和10个{starglitter}；第8次及之后获得，将仅转化为25个{starglitter}。\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"祈愿历史\",\n\t\t\"text\": \"历史记录\",\n\t\t\"resetButton\": \"重置\",\n\t\t\"resetPromptTitle\": \"重置记录？\",\n\t\t\"resetPrompt\": \"它还会从您的库存中删除与 {bannerName} 卡池相关的所有角色和武器。 <br /> 你确定要重置吗？\",\n\t\t\"resetSuccess\": \"已成功重置！\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"祈愿类型选择:\",\n\t\t\"disclaimer\": \"我们从不将您的数据保存在云存储中。 所有数据都存储到 IndexedDB，这意味着数据保存在您的浏览器存储中。 除非您通过删除/重置按钮手动删除它或清除浏览器数据，否则它永远不会删除。\",\n\t\t\"currentPity\": \"当前已垫:\",\n\t\t\"totalPull\": \"总共抽取:\",\n\t\t\"totalSpend\": \"已花费:\",\n\t\t\"filterTxt\": \"筛选\",\n\t\t\"filter\": \"{rarity} 星\",\n\t\t\"filterAll\": \"全部\",\n\t\t\"pity\": \"已垫\",\n\t\t\"timeReceived\": \"祈愿时间\",\n\t\t\"waiting\": \"请稍等\",\n\t\t\"noData\": \"无可用数据\",\n\t\t\"untracked\": \"未追踪\",\n\t\t\"win\": \"小保底\",\n\t\t\"lose\": \"歪\",\n\t\t\"guaranteed\": \"大保底\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"已定轨\",\n\t\t\"olderLayout\": \"旧布局\",\n\t\t\"switchv2\": \"切换到新版布局\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"商城\",\n\t\t\"paimonBargains\": \"尘辉兑换\",\n\t\t\"fateNeeded\": \"缺少{rollQty}个{currency}，\",\n\t\t\"primoNeeded\": \"是否消耗{primoPrice}原石购买？\",\n\t\t\"purchaseUpto\": \"限购 1\",\n\t\t\"purchaseConfirm\": \"确认购买\",\n\t\t\"exchangeHeading\": \"兑换物品\",\n\t\t\"purchaseHeading\": \"购买物品\",\n\t\t\"purchaseButton\": \"购买\",\n\t\t\"pay\": \"支付\",\n\t\t\"product\": \"产品\",\n\t\t\"consume\": \"消耗\",\n\t\t\"selectPayment\": \"选择支付方式\",\n\t\t\"unrealWallet\": \"蓝绿修改器破解版\",\n\t\t\"convertPrimo\": \"自动转换为原石？\",\n\t\t\"proceedPayment\": \"确认交易\",\n\t\t\"qty\": \"数量\",\n\t\t\"insufficient\": \"货币不足\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"凝取结晶\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"购买创世结晶\",\n\t\t\"recomendedHeading\": \"推荐商品\",\n\t\t\"paimonHeading\": \"尘辉兑换\",\n\t\t\"welkinNote\": \"可累计购买\",\n\t\t\"limitedOffer\": \"限时提供购买\",\n\t\t\"noLimitTime\": \"刷新时间：不会刷新\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"空月祝福\",\n\t\t\t\"newOutfit\": \"角色装扮 · 新装\",\n\t\t\t\"dayRemaining\": \"剩余 {days} 天\",\n\t\t\t\"alreadyClaimed\": \"本日已领取\",\n\t\t\t\"instantlyGet\": \"购买即可获得\",\n\t\t\t\"dailyGift\": \"每日赠送\",\n\t\t\t\"obtainTotal\": \"*有效期持续30天！累计可获得{totalGenesis}创世结晶和{totalPrimo}原石！\",\n\t\t\t\"claimingBlessing\": \"点击领取今日空月祝福奖励\",\n\t\t\t\"issuedPurchase\": \"购买时获得\",\n\t\t\t\"collect\": \"每日登录奖励\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"无主的星辉\",\n\t\t\t\"stardust\": \"无主的星尘\",\n\t\t\t\"primogem\": \"原石购买\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"创世结晶\",\n\t\t\t\"primogem\": \"原石\",\n\t\t\t\"intertwined\": \"纠缠之缘\",\n\t\t\t\"acquaint\": \"相遇之缘\",\n\t\t\t\"starglitter\": \"无主的星辉\",\n\t\t\t\"stardust\": \"无主的星尘\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"连结梦想的命运之种。缘石辉光能让本无交集的命运交错，让彼此的梦想相连，正如这种光辉将群星连成心之所向的图形。\",\n\t\t\t\"acquaint\": \"点亮星空的希望之种。无论相隔多远，命定相遇的人都会受缘石辉光的指引，在星空下相会。\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"仓库\",\n\t\t\"unsetOutfit\": \"未设置装扮\",\n\t\t\"setOutfit\": \"设置角色装扮\",\n\t\t\"refinement\": \"精炼等级 {count}\",\n\t\t\"constellation\": \"命之座层数 {count}\",\n\t\t\"extra\": \"{count} 已满并溢出\",\n\t\t\"firstSummon\": \"首次获得: {date}\",\n\t\t\"notOwned\": \"尚未拥有\",\n\t\t\"sort\": \"排序\",\n\t\t\"rarity\": \"稀有度\",\n\t\t\"name\": \"名字\",\n\t\t\"quantity\": \"数量\",\n\t\t\"element\": \"元素\",\n\t\t\"release\": \"Release Date\",\n\t\t\"type\": \"类型\",\n\t\t\"owned\": \"已获得\",\n\t\t\"showAllOption\": \"显示所有{item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"否\",\n\t\t\"yes\": \"是\",\n\t\t\"text\": \"菜单\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"选项\",\n\t\t\"updates\": \"更新历史\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"语言\",\n\t\t\"currency\": \"货币\",\n\t\t\"fates\": \"Number of Wishes\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"禁用音频音效\",\n\t\t\"switchBanner\": \"切换卡池\",\n\t\t\"showAllitems\": \"在库存中显示所有物品\",\n\t\t\"animatedbg\": \"动画背景\",\n\t\t\"autoskip\": \"自动跳过祈愿动画\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"清除数据并恢复默认\",\n\t\t\"resetTitle\": \"恢复默认\",\n\t\t\"rotate\": \"旋转设备以获得更好体验\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"清空缓存 ( {size} ) ？<small>勾选本项并恢复后将会重载资源！</small>\",\n\t\t\"resetButton\": \"现在重置\",\n\t\t\"resetPrompt\": \"您确定清除<strong>所有数据</strong>并恢复默认吗？\",\n\t\t\"resetSuccess\": \"已成功重置\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"在这里搞一个新的！\",\n\t\t\"noKey\": \"没有赞助码？\",\n\t\t\"verifyFail\": \"无法验证赞助码，请检查您的网络连接！\",\n\t\t\"invalidKey\": \"您的赞助码无效\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"输入赞助码\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/locales/zh-TW.json",
    "content": "{\n\t\"title\": \"原神祈願模擬器\",\n\t\"item\": \"物品\",\n\t\"character\": \"角色\",\n\t\"weapon\": \"武器\",\n\t\"vision\": \"神之眼\",\n\t\"anemo\": \"風\",\n\t\"cryo\": \"冰\",\n\t\"dendro\": \"草\",\n\t\"electro\": \"雷\",\n\t\"hydro\": \"水\",\n\t\"geo\": \"岩\",\n\t\"pyro\": \"火\",\n\t\"bow\": \"弓\",\n\t\"catalyst\": \"法器\",\n\t\"claymore\": \"雙手劍\",\n\t\"sword\": \"單手劍\",\n\t\"polearm\": \"長柄武器\",\n\t\"extra\": \"額外獲得\",\n\t\"obtained\": \"已獲得\",\n\t\"waiting\": \"請稍等\",\n\t\"connectionFailed\": \"連接失敗！\",\n\t\"confirmButton\": \"確認\",\n\t\"cancelButton\": \"取消\",\n\t\"disclaimer\": \"本網站所使用的所有資源均為米哈遊所有。\",\n\t\"fanmade\": \"這是一個粉絲製作的模擬器，盡情享受吧！\",\n\t\"pressToContinue\": \"點擊空白區域繼續\",\n\t\"installInstruction\": \"安裝到桌面的教學\",\n\t\"share\": \"分享\",\n\t\"screenshot\": \"截圖\",\n\t\"capturing\": \"正在截圖\",\n\t\"rewardFirstShare\": \"首次分享 : {qty}\",\n\t\"version\": \"版本\",\n\t\"donate\": \"捐贈\",\n\t\"banner\": {\n\t\t\"beginner\": \"初行者推薦#祈願#\",\n\t\t\"wanderlust\": \"#奔行#世間\",\n\t\t\"epitome-invocation\": \"神鑄#賦形#\",\n\t\t\"ode-to-the-dawn-breeze\": \"#晨風#之詩\",\n\t\t\"adrift-in-the-harbor\": \"#浮生#孰來\",\n\t\t\"ambrosial-essence\": \"#凝露#輕芳\",\n\t\t\"ancient-flame-ablaze\": \"#宿古#的赫炎\",\n\t\t\"astral-actuation\": \"#聚星#源動\",\n\t\t\"auric-blaze\": \"#烈陽#爍金\",\n\t\t\"azure-excursion\": \"#蒼流#踏花\",\n\t\t\"ballad-in-goblets\": \"#杯裝#之詩\",\n\t\t\"born-of-ocean-swell\": \"#浪湧#之瞬\",\n\t\t\"caution-in-confidence\": \"#敕誡#樞謀\",\n\t\t\"chanson-of-many-waters\": \"#眾水#的頌詩\",\n\t\t\"conjuring-chiaroscuro\": \"#光與影#的戲術\",\n\t\t\"cornucopia-of-contention\": \"#飫宴#角戲\",\n\t\t\"dance-of-lantern\": \"#魚龍#燈晝\",\n\t\t\"dawns-drifting-reverie\": \"#浮枕#朝顏\",\n\t\t\"decree-of-the-deeps\": \"#淵海#界令\",\n\t\t\"dewlit-tranquility\": \"#露景#涓然\",\n\t\t\"discerner-of-enigmas\": \"#素霓#伣天\",\n\t\t\"drifting-luminescence\": \"#浮岳#虹珠\",\n\t\t\"everbloom-violet\": \"#華紫#櫻緋\",\n\t\t\"farewell-of-snezhnaya\": \"#暫別#冬都\",\n\t\t\"forgefires-blessing\": \"#煅火#的祝賜\",\n\t\t\"from-ashes-reborn\": \"#餘火#變相\",\n\t\t\"gentry-of-hermitage\": \"#陵藪#市朝\",\n\t\t\"harmonious-abundance\": \"#華黍#由儀\",\n\t\t\"illuminating-lightning\": \"#流霆#貫夜\",\n\t\t\"immaculate-pulse\": \"#心珠#循琅\",\n\t\t\"in-the-name-of-the-rosula\": \"#刺玫#的銘誓\",\n\t\t\"invitation-to-mundane-life\": \"#煙火#之邀\",\n\t\t\"la-chanson-cerise\": \"#莓色#香頌\",\n\t\t\"leaves-in-the-wind\": \"#葉落#風隨\",\n\t\t\"moment-of-bloom\": \"#蒼林#月禱\",\n\t\t\"moonsong-of-the-groves\": \"#苍林#月祷\",\n\t\t\"of-silken-clouds-woven\": \"#千雲#繪羽織\",\n\t\t\"oni_s-royale\": \"#鬼門#斗宴\",\n\t\t\"piercing-shots-crimson-wake\": \"#飲羽#散紅\",\n\t\t\"reign-of-serenity\": \"#影寂#天下人\",\n\t\t\"remembrance-of-jade-and-stone\": \"#玉岩#之憶\",\n\t\t\"romaritime-meluserenity\": \"#柔柔#海露心\",\n\t\t\"roving-chalice-of-dewgrass\": \"#露草#的行盞\",\n\t\t\"rubedo-of-white-stone-born\": \"#白礜#赤成\",\n\t\t\"sharktacular-surfari\": \"#鯊鯊#逐浪遊\",\n\t\t\"secretum-secretorum\": \"#深秘#之息\",\n\t\t\"seeker-of-flame-wrought-secrets\": \"#巡火#獵秘\",\n\t\t\"somnias-a-luna\": \"#伴月#同眠\",\n\t\t\"sparkling-steps\": \"#閃焰#的駐足\",\n\t\t\"starry-nights-whispers\": \"#星邊#夜語\",\n\t\t\"tapestry-of-golden-flames\": \"#焰色#天河\",\n\t\t\"tempestuous-destiny\": \"#劫中#泛濫\",\n\t\t\"temptation-of-the-crimson-sands\": \"#赤砂#的誘言\",\n\t\t\"the-crane-soars-skyward\": \"#雲府#鶴行\",\n\t\t\"the-hearths-ashen-shadow\": \"#爐邊#燼影\",\n\t\t\"the-heron_s-court\": \"#白鷺#之庭\",\n\t\t\"the-lone-light-knocks-at-night\": \"#孤燈#夜訪\",\n\t\t\"the-moongrass-enlightenment\": \"#月草#的賜慧\",\n\t\t\"the-northerly-winds-song-of-triumph\": \"#北風#的凱旋歌\",\n\t\t\"the-transcendent-one-returns\": \"#出塵#入世\",\n\t\t\"thunder-rends-the-plains-on-high\": \"#鳴雷#貫天原\",\n\t\t\"twilight-arbiter\": \"#靂裁#冥昭\",\n\t\t\"twirling-lotus\": \"#翩舞#歈蓮\",\n\t\t\"viridescent-vigil\": \"#巡禦#翳薈\",\n\t\t\"void-stars-advent\": \"#虛星#臨渡\",\n\t\t\"ya-hoho-compendium\": \"#呀吼吼#博物誌\"\n\t},\n\t\"editor\": {\n\t\t\"bannerConfig\": \"{banner} Configuration\",\n\t\t\"baseRate\": \"{rarity}-Star Base Rate:\",\n\t\t\"maxPity\": \"{rarity}-Star Max Pity:\",\n\t\t\"hardPity\": \"Boost {rarity}-Star rate starts from pity:\",\n\t\t\"currentPity\": \"{rarity}-Star Current Pity\",\n\t\t\"winRate\": \"Chance to get Featured Item:\",\n\t\t\"charRate\": \"Chance to get Character instead of Weapon\",\n\t\t\"radRate\": \"Capturing Radiance Rate\",\n\t\t\"radTrigger\": \"(Triggered when losing 50:50)\",\n\t\t\"nonRateup\": \"(When losing 4-Star Item)\",\n\t\t\"selectedRate\": \"Selected {itemType} Rate:\",\n\t\t\"guaranteedSystem\": \"Guaranteed System\",\n\t\t\"backToDefault\": \"Back to Default\",\n\t\t\"resetPrompt\": \"Are you sure to Reset <b>\\\"{banner}\\\"</b> probabilities back to default?\",\n\t\t\"default\": \"Default\",\n\t\t\"never\": \"Never\",\n\t\t\"always\": \"Always\"\n\t},\n\t\"customBanner\": {\n\t\t\"title\": \"Customize Banner\",\n\t\t\"byTraveler\": \"Created by Travelers\",\n\t\t\"deletePrompt\": \"Are You Sure to delete this banner ?\",\n\t\t\"ownerDeleteNote\": \"If you've shared this banner publicly, The Travelers who have made wishes on your banner will no longer be able to access it.\",\n\t\t\"userDeleteNote\": \"The Wishing History on this banner will not be deleted, but you will not be able to pull on this banner again.\",\n\t\t\"retry\": \"Retry\",\n\t\t\"findBanner\": \"Looking for a Banner..\",\n\t\t\"networkError\": \"Network Error, Please check your Connection!\",\n\t\t\"bannerNotFound\": \"Banner not found, wrong <u>Banner ID</u> or maybe the author has removed it.\",\n\t\t\"invalidBanner\": \"Invalid Banner ID\",\n\t\t\"identifying\": \"Identifying Banner\",\n\t\t\"loadOwnedBanner\": \"You're the owner of \\\"{ownedBanner}\\\" banner, your local data will be used instead of the data you've shared online.\",\n\t\t\"loadReady\": \"\\\"{banner}\\\" is ready to Wish\",\n\t\t\"uploading\": \"Uploading {item}\",\n\t\t\"uploadFailed\": \"Image Upload Failed, please try again later!\",\n\t\t\"close\": \"Close\",\n\t\t\"almostDone\": \"Almost Done\",\n\t\t\"shareText\": \"Come and Try Your Luck on my {character} Banner Simulator\",\n\t\t\"setPosition\": \"Set Position\",\n\t\t\"next\": \"Next\",\n\t\t\"move\": \"Move\",\n\t\t\"changeSplashArt\": \"Change Splash Art\",\n\t\t\"adjustSplashArt\": \"Adjust Splash Art\",\n\t\t\"dropHere\": \"Drop Here!\",\n\t\t\"preview\": \"Banner Preview\",\n\t\t\"generateImage\": \"Generate Image\",\n\t\t\"notAnImage\": \"Not an Image\",\n\t\t\"imageTooLarge\": \"Image is too Large, max size: {maxSize}\",\n\t\t\"faceIcon\": \"Face Icon\",\n\t\t\"addBanner\": \"Add Banner\",\n\t\t\"delete\": \"Delete\",\n\t\t\"deleteFailed\": \"Failed to Remove\",\n\t\t\"bannerRemoved\": \"Banner Removed\",\n\t\t\"edit\": \"Edit\",\n\t\t\"editInfo\": \"Edit Details\",\n\t\t\"editBanner\": \"Edit Banner Information\",\n\t\t\"bannerName\": \"Banner Name\",\n\t\t\"titleOfBanner\": \"The #Title of# the Banner\",\n\t\t\"titleNote\": \"Letters between #_# will be highlighted\",\n\t\t\"charName\": \"Character Name\",\n\t\t\"charTitle\": \"Character Title\",\n\t\t\"watermark\": \"Watermark\",\n\t\t\"completeAllField\": \"Please Complete All Required Field!\",\n\t\t\"finishAndWish\": \"Finish and Wish\",\n\t\t\"publish\": \"Publish Banner\",\n\t\t\"updateAndShare\": \"Update & Share\",\n\t\t\"rateupChar\": \"Rate Up Characters\",\n\t\t\"rateupNote\": \"Minimum 1 Rate Up Character\",\n\t\t\"yourBanners\": \"Your Banners\",\n\t\t\"createBanner\": \"Create a Custom Banner\",\n\t\t\"limitation\": \"You are not a member, please delete some banners to activate the editor\",\n\t\t\"memberToUnlock\": \"Become a Member to Add More Banner\",\n\t\t\"incomplete\": \"Incomplete\",\n\t\t\"inappropriate\": \"Inappropriate Content!\",\n\t\t\"lastSync\": \"Last Sync: {time}\",\n\t\t\"inactive\": \"Inactive\",\n\t\t\"unshared\": \"Not shared yet\",\n\t\t\"create\": \"Create Banner\"\n\t},\n\t\"backupRestore\": {\n\t\t\"cloudSync\": \"Cloud Sync\",\n\t\t\"localSync\": \"Local Backup/Restore\",\n\t\t\"import\": \"Import Data\",\n\t\t\"export\": \"Export Data\",\n\t\t\"importAction\": \"{fileInfo} will be added to the App, please choose what action you want to perform!\",\n\t\t\"mergeAction\": \"Merge Data <small>Automatically remove duplicate item(s) and insert new item(s)</small>\",\n\t\t\"replaceAction\": \"Replace Data <small> Erase the current App Data and replace it with the imported one. </small>\",\n\t\t\"dropFiles\": \"Drop Your File Here\",\n\t\t\"autoExport\": \"Auto Export\",\n\t\t\"destination\": \"Destination\",\n\t\t\"lastExport\": \"Last Export\",\n\t\t\"fileSize\": \"File Size\",\n\t\t\"desNotFound\": \"Cannot find backup file location, please try to Export again\"\n\t},\n\t\"epitomizedPath\": {\n\t\t\"heading\": \"神鑄定軌\",\n\t\t\"fatePoint\": \"命定值\",\n\t\t\"confirm\": \"Confirm Selection\",\n\t\t\"viewDetails\": \"View Details\",\n\t\t\"details\": \"Details\",\n\t\t\"rules\": \"Chronicled Path Rules\",\n\t\t\"chartChronicled\": \"Chart course towards one of the following Characters or Weapons\",\n\t\t\"currentSelection\": \"Current Selection: 5-Star {itemType} wish\",\n\t\t\"dropType\": \"Only 5-Star {itemType} will be obtained from the Wish\",\n\t\t\"cancelPrompt\": \"是否確認取消目前的定軌？\",\n\t\t\"cancelDesc\": \"取消後，已累積的命定值將會清空。\",\n\t\t\"selectWeapon\": \"選擇定軌武器\",\n\t\t\"chartCourseOf\": \"為{target}定軌\",\n\t\t\"cancelCourse\": \"取消定軌\",\n\t\t\"chartCourse\": \"定軌\",\n\t\t\"courseSetFor\": \"目前定軌: {selectedCourse}\",\n\t\t\"setFor\": \"Path Set For: \",\n\t\t\"notSetYet\": \"No Path Set\",\n\t\t\"description\": [\n\t\t\t\"「神鑄定軌」是本期「神鑄賦形」所特有的祈願機制：\",\n\t\t\t\"對期望的5星UP武器進行定軌後，當透過祈願在本期「神鑄賦形」中<span>取得非定軌的5星武器時，將獲得1點命定值</span> 。\",\n\t\t\t\"命定值充滿後，在本期「神鑄賦形」中祈願獲得的下一件5星武器將會是透過「神鑄定軌」選定的武器。\",\n\t\t\t\"在本期「神鑄賦形」中祈願<span>取得「神鑄定軌」的武器時，已累積的命定值將會清除</span>。\",\n\t\t\t\"當未通過「神鑄定軌」定軌武器時，祈願將不會累積命定值。\",\n\t\t\t\"武器的定軌狀態可以更換，也可以取消定軌。 <span>更換或取消時，會清除已累積的命定值</span>。\",\n\t\t\t\"<span>本期「神鑄賦形」結束時，已累積的命定值也將清除</span>。\"\n\t\t],\n\t\t\"chronicledRules\": [\n\t\t\t\"Chronicled Path is a unique mechanism for Chronicled Wishes:\",\n\t\t\t\"Before making a Chronicled Wish, you must select a target amongst the 5-star characters or 5-star weapons for your Chronicled Path. After making a selection, during this Chronicled Wish period, <span>the 5-star items you receive from the Wish will only be of the same item type as the target you selected for your Chronicled Path</span>.\",\n\t\t\t\"<span>You will receive 1 Fate Point when you receive a 5-star weapon or character that is not the one you chose </span> for this Chronicled Wish period.\",\n\t\t\t\"Once you have accumulated enough Fate Points, the next 5-star character or weapon you receive through Chronicled Wish in this period will be the one you chose through Chronicled Path.\",\n\t\t\t\"<span>Your already accumulated Fate Points will be reset when you receive the character or weapon you selected</span> in this Chronicled Wish period.\",\n\t\t\t\"You may change or cancel the Path you have set. <span>Doing so will reset your already accumulated Fate Points</span>.\",\n\t\t\t\"<span>When this Chronicled Wish period ends, accumulated Fate Points will be reset</span>.\"\n\t\t]\n\t},\n\t\"wish\": {\n\t\t\"rollButton\": \"祈願{count}次\",\n\t\t\"stellaFortuna\": \"對應角色的命星\",\n\t\t\"loadFailed\": \"Failed to load Banner! <br /> Please switch to other banner or reconnect to the internet to avoid errors!\",\n\t\t\"loadMeteor\": \"Load Animation\",\n\t\t\"skipMeteor\": \"Skip Animation\",\n\t\t\"loadMeteorMsg\": \"Loading <span>{star} Star Meteor Animation </span>\",\n\t\t\"meteorNotLoaded\": \"Cannot find Meteor Animation in your storage, please <span> Load the Meteor Animation</span> first before pulling, or <span> Turn ON </span> the option to skip Animation!\",\n\t\t\"preloadFilesMsg\": \"* The loaded files will be stored in the Browser Storage, so you don't need to load them again until the site is updated.\",\n\t\t\"banner\": {\n\t\t\t\"wishTitle\": \"祈願\",\n\t\t\t\"text\": \"卡池\",\n\t\t\t\"allBanner\": \"全部卡池\",\n\t\t\t\"previous\": \"往期卡池\",\n\t\t\t\"findBanner\": \"搜尋卡池\",\n\t\t\t\"group\": \"分组\",\n\t\t\t\"beginner\": \" 初行者推薦祈願\",\n\t\t\t\"character-event\": \"角色活動祈願\",\n\t\t\t\"weapon-event\": \"武器活動祈願\",\n\t\t\t\"chronicled\": \"Chronicled Wish\",\n\t\t\t\"standard\": \"常駐祈願\",\n\t\t\t\"wishDescription\": \"每十次祈願必出四星或以上物品。\",\n\t\t\t\"novice\": \"新手祈願\",\n\t\t\t\"up\": \"UP!\",\n\t\t\t\"beginnerSet\": \"十連8折，首次必得{character}\",\n\t\t\t\"beginnerNote\": \"「我會注意女僕的禮儀。」\",\n\t\t\t\"beginnerChance\": \"剩餘次數：{chances}\",\n\t\t\t\"standardNote\": \"常駐祈願，永久性祈願活動。\",\n\t\t\t\"allWeaponTypes\": \"全部類型\",\n\t\t\t\"etc\": \"等\",\n\t\t\t\"probIncreased\": \"獲取機率提升！\",\n\t\t\t\"eventNote\": \"活動限定五星角色僅在UP期間，透過對應祈願獲得。\",\n\t\t\t\"viewDetails\": \"具體内容查看【詳情】\"\n\t\t},\n\t\t\"result\": {\n\t\t\t\"skip\": \"跳過\",\n\t\t\t\"meteorFailed\": \"祈願動畫載入失敗\",\n\t\t\t\"new\": \"新\",\n\t\t\t\"convertion\": \"轉化\",\n\t\t\t\"title\": \"{item} 祈願结果\"\n\t\t}\n\t},\n\t\"outfit\": {\n\t\t\"heading\": \"角色裝扮\",\n\t\t\"default\": \"Default\",\n\t\t\"setOutfit\": \"設置裝扮\",\n\t\t\"owned\": \"已擁有\",\n\t\t\"purchasePrompt\": \"您還沒有此裝扮對應的角色，您確定要購買此裝扮嗎？\",\n\t\t\"promptInfo\": \"獲得相應的角色後，您仍然可以使用此裝扮\",\n\t\t\"obtained\": \"New Outfit Obtained\",\n\t\t\"unlocked\": \"{character}: Outfit Unlocked\",\n\t\t\"item\": {\n\t\t\t\"5-star-outrider\": {\n\t\t\t\t\"name\": \"「滿分的偵察騎士」\"\n\t\t\t},\n\t\t\t\"favonian-fevotion\": {\n\t\t\t\t\"name\": \"風之虔護\"\n\t\t\t},\n\t\t\t\"flowing-fate\": {\n\t\t\t\t\"name\": \"星命流轉\"\n\t\t\t},\n\t\t\t\"executor_s-thorns\": {\n\t\t\t\t\"name\": \"處刑棘刺\"\n\t\t\t},\n\t\t\t\"sea-breeze-dandelion\": {\n\t\t\t\t\"name\": \"海風之夢\",\n\t\t\t\t\"description\": \"琴的夏日裝束。 清涼不失優雅，是海濱之遊的絕佳搭配。\"\n\t\t\t},\n\t\t\t\"summertime-sparkle\": {\n\t\t\t\t\"name\": \"閃耀協奏\",\n\t\t\t\t\"description\": \"芭芭拉的海灘裝扮。 洋溢著夏日活力的俏麗短裙，似乎散發著海洋的清爽氣息。\"\n\t\t\t},\n\t\t\t\"opulent-splendor\": {\n\t\t\t\t\"name\": \"霓裾蹁躚\",\n\t\t\t\t\"description\": \"刻晴的禮服裝扮。 於海燈節之良辰美景中，往日辛勞濃墨所繪的線條，交織成今夜輕盈而瑰麗的容姿。\"\n\t\t\t},\n\t\t\t\"orchid_s-evening-gown\": {\n\t\t\t\t\"name\": \"紗中幽蘭\",\n\t\t\t\t\"description\": \"凝光的禮服裝扮。 紺藍長裙勾勒出麗人優雅的曲線，腳踝上的蝶翼又為她增添了幾分輕盈。\"\n\t\t\t},\n\t\t\t\"ein-immernachtstraum\": {\n\t\t\t\t\"name\": \"極夜終夢\",\n\t\t\t\t\"description\": \"皇女菲謝爾的祭禮服裝。 願高貴的人永遠葆有勇氣、誠摯與善心，如此，邪惡必無法挫敗她。\"\n\t\t\t},\n\t\t\t\"red-dead-of-night\": {\n\t\t\t\t\"name\": \"殷紅終夜\",\n\t\t\t\t\"description\": \"迪盧克隱密行動時所穿的衣裝之一，如陰影之中翻騰的火焰。 敵人視野盡頭所留下的殷紅殘痕，即是他們餘生揮之不去的夢魘。\"\n\t\t\t},\n\t\t\t\"a-sobriquet-under-shade\": {\n\t\t\t\t\"name\": \"葉隱芳名\",\n\t\t\t\t\"description\": \"麗莎重遊須彌時請人訂做的服飾。 裙裝幹練而不失優雅，與她學生時代的製服有幾分相似之處。\"\n\t\t\t},\n\t\t\t\"springbloom-missive\": {\n\t\t\t\t\"name\": \"花時來信\",\n\t\t\t\t\"description\": \"神裡綾華的出遊裝扮。 比照輕小說插畫中的楓丹女性裝束而製作的洋裝，似乎能藉其一窺楓丹淑女的生活風貌。\"\n\t\t\t},\n\t\t\t\"blossoming-starlight\": {\n\t\t\t\t\"name\": \"琪花星燭\",\n\t\t\t\t\"description\": \"可莉出演關鍵劇目時所穿的精緻服裝，色彩明麗，如同點綴著奶油花朵和明紅蠟燭的蛋糕，能將快樂與笑容帶往冒險所至的每個角落。\"\n\t\t\t},\n\t\t\t\"sailwind-shadow\": {\n\t\t\t\t\"name\": \"帆影遊風\",\n\t\t\t\t\"description\": \"凱亞在舞台上飾演「短刀大盜」時的裝扮，以「吸睛」為設計原則的華麗服裝。 不過衣服穿起來並不麻煩，最花時間打理的是飾品與短刀。\"\n\t\t\t},\n\t\t\t\"frostflower-dew\": {\n\t\t\t\t\"name\": \"冷花幽露\",\n\t\t\t\t\"description\": \"申鶴收到的海燈節賀禮。由其師留雲借風真君請人縫製的優雅禮服，雙臂上紅繩依舊，但申鶴心中的苦寒之意已淡。\"\n\t\t\t},\n\t\t\t\"twilight-blossom\": {\n\t\t\t\t\"name\": \"玄玉瑤芳\",\n\t\t\t\t\"description\": \"輕盈優雅的佳節服飾，以龍葵紫黑和玉鈫藍為主調，髮飾則如清心般明麗，正是甘雨最喜愛的搭配。\"\n\t\t\t},\n\t\t\t\"bamboo-rain\": {\n\t\t\t\t\"name\": \"雨化竹身\",\n\t\t\t\t\"description\": \"飛雲商會為行秋準備的宴會衣裝。竹紋清雅、剪裁服貼，但最令行秋滿意的還是其內層的口袋，足夠塞下一冊較薄的小說了。\"\n\t\t\t},\n\t\t\t\"phantom-in-boots\": {\n\t\t\t\t\"name\": \"倩影遊俠\",\n\t\t\t\t\"description\": \"綺良良的裝扮款式。童話中行俠仗義的貓貓劍客，傳遞願望的狡黠少女，向您致意。\"\n\t\t\t},\n\t\t\t\"breeze-of-sabaa\": {\n\t\t\t\t\"name\": \"莎邦之息\",\n\t\t\t\t\"description\": \"妮露的典雅服飾，千花編織般的輕盈裙裝，如有黎明時東風捎來的淡香，承載著童話世界的美好祝福。\"\n\t\t\t},\n\t\t\t\"cherries-snow-laden\": {\n\t\t\t\t\"name\": \"宿雪桃紅\",\n\t\t\t\t\"description\": \"胡桃的裝扮款式。有別於往生堂深色儀服的素色連身裙，是好友香菱為胡桃特別準備的禮物，墨鏡則是她自己的收藏。\"\n\t\t\t},\n\t\t\t\"new-years-cheers\": {\n\t\t\t\t\"name\": \"歲夜歡譁\",\n\t\t\t\t\"description\": \"香菱的裝扮款式。冷風中的一抹紅色灶火，帽子在胡桃的提議下特別根據鍋巴的形象設計而成，很受香菱喜愛。\"\n\t\t\t},\n\t\t\t\"tranquil-banquet\": {\n\t\t\t\t\"name\": \"靜暇雅宴\",\n\t\t\t\t\"description\": \"夜蘭為假日時光所搭配的裝束，典雅而不失俐落，捎來悠暇的心境之餘，也不失為一種「充滿攻勢」的偽裝…\"\n\t\t\t},\n\t\t\t\"adventures-in-blazing-hue\": {\n\t\t\t\t\"name\": \"熾繪奇旅\",\n\t\t\t\t\"description\": \"班尼特的納塔遊歷裝束，主色調是幸運的湖藍，以及熾熱的黃橙，如同這片土地一般洋溢著勃勃生機。\"\n\t\t\t},\n\t\t\t\"melusent-gift\": {\n\t\t\t\t\"name\": \"莘露的贈禮\",\n\t\t\t\t\"description\": \"那維萊特收到的驚喜禮物。驚喜不僅源於禮物本身，更來自於參與禮物製作的每一雙小小援手。就像河流匯於大海，露水也凝聚成閃耀著七色光芒的奇蹟。\"\n\t\t\t},\n\t\t\t\"rainlit-bamboo-reverie\": {\n\t\t\t\t\"name\": \"聆雨聽竹\",\n\t\t\t\t\"description\": \"瑤瑤的裝扮款式。新梢清影叩書案，有時客來不是風。\"\n\t\t\t}\n\t\t}\n\t},\n\t\"details\": {\n\t\t\"text\": \"詳情\",\n\t\t\"promotional\": \"UP物品\",\n\t\t\"itemlist\": \"物品清單\",\n\t\t\"increasedRate\": \"以下内容出现[概率UP!!!]\",\n\t\t\"percentageDrop\": \"占{rarity}星出率的: {percentage}\",\n\t\t\"wishDetails\": \"祈願詳情\",\n\t\t\"probInfo\": \"{rarity}星物基礎出率：{singlePercentage} (含保底綜合出率：{avgPercentage})\",\n\t\t\"itemWishFor\": \"以下為祈禱物品清單：\",\n\t\t\"itemType\": \"類型\",\n\t\t\"itemName\": \"名稱\",\n\t\t\"beginnerInfo\": \"無時間上限 (抽取20次後關閉)\",\n\t\t\"limited\": \"限時活動\",\n\t\t\"permanent\": \"永久\",\n\t\t\"alert\": \"※ 本祈願屬於「{wishName}」，其祈願次數保底會一直累計在「{wishName}」中，與其他祈願的祈願次數保底相互獨立計算，互不影響。\",\n\t\t\"designatable\": \"Designatable Items\",\n\t\t\"targetList\": \"When the Designated Item is a 5-Star {itemType}, the list of 5-Star Items is as follows:\",\n\t\t\"chronicledRate\": \"(If there are no guarantees or Chronicled Path in effect, the base probability of all characters or weapons will be evenly distributed.)\",\n\t\t\"chronicledPeriod\": \"5-Star Designatable Items in This Period\",\n\t\t\"chronicledCourse\": \"Chart a course towards one of the following 5-Star Items where the probability of it appearing in 5-Star Item Drops:\",\n\t\t\"beginner\": [\n\t\t\t\"初行者推薦祈願為<span>永久</span>性祈願活動，是面向新加入提瓦特大陸的旅行者的推薦祈願。 在本祈願內，十連所消耗的相遇之緣數量可享8折優惠，且首次十連必會獲取“{character}”，第二次十連必會獲取4星或以上的角色！ 本祈願存在祈願次數上限，最高為<span>20</span>次，抽取20次後<span>本活動祈願介面將關閉</span>。\",\n\t\t\t\"※一般情況下所有角色或武器均適用基礎機率，如觸發機率UP、保底等以具體規則為準。\",\n\t\t\t\"〓祈願規則〓\",\n\t\t\t\"5星物品祈願的基礎機率為<span>0.600%</span>，5星角色祈願的基礎機率為<span>0.300%</span>，5星武器祈願的基礎機率為<span> 0.300%</span>，5星物品祈願綜合機率（含保底）為<span>1.600%</span>，最多<span>90</span>次祈願必定能透過保底獲取5星物品。 <br> 4星物品祈願的基礎機率為<span>5.100%</span>，4星角色祈願的基礎機率為<span>2.550%</span>，4星武器祈願的基礎機率為 <span>2.550%</span>，4星物品祈願的綜合機率（含保底）為<span>13.000%</span>。 最多<span>10</span>次祈願必定能透過保底獲取4星或以上物品，透過保底獲取4星物品的機率為<span>99.400%</span>，取得5星物品的機率為< span>0.600%</span>。\"\n\t\t],\n\t\t\"standard\": [\n\t\t\t\"「{bannerName}」常駐祈願為永久性祈願活動，玩家可抽取非限定角色與武器。 <br/>在本祈願內，每10次祈願<span>必會</span>獲得至少1個4星或以上物品。\",\n\t\t\t\"※一般情況下所有角色或武器均適用基礎機率，如觸發機率UP、保底等以具體規則為準。\",\n\t\t\t\"〓祈願規則〓\",\n\t\t\t\"5星物品祈願的基礎機率為<span>0.600%</span>，5星角色祈願的基礎機率為<span>0.300%</span>，5星武器祈願的基礎機率為<span> 0.300%</span>，5星物品祈願綜合機率（含保底）為<span>1.600%</span>，最多<span>90</span>次祈願必定能透過保底獲取5星物品。 <br> 4星物品祈願的基礎機率為<span>5.100%</span>，4星角色祈願的基礎機率為<span>2.550%</span>，4星武器祈願的基礎機率為 <span>2.550%</span>，4星物品祈願的綜合機率（含保底）為<span>13.000%</span>。 最多<span>10</span>次祈願必定能透過保底獲取4星或以上物品，透過保底獲取4星物品的機率為<span>99.400%</span>，取得5星物品的機率為< span>0.600%</span>。\"\n\t\t],\n\t\t\"events\": [\n\t\t\t\"「{bannerName}」活動祈願已開啟。 活動期間內，限定5星角色「{featuredCharacter} 」以及4星角色 {rateupCharacters} 的祈願獲取機率將<span>大幅提升</span>！ <span> ※以上角色中，限定角色不會進入「奔行世間」常駐祈願。 </span>\",\n\t\t\t\"※ 一般情況下所有角色或武器均適用基礎機率，如觸發機率UP、保底等以具體規則為準。\",\n\t\t\t\"〓祈願規則〓\",\n\t\t\t\"【5星物品】\",\n\t\t\t\"在本期「{bannerName}」活動祈願中，5星角色祈願的基礎機率為<span>0.600%</span>，綜合機率（含保底）為<span>1.600%</span>，最多 <span>90</span>次祈願必定能透過保底獲取5星角色。 當祈願獲取到5星角色時，有<span>50.000%</span>的機率為本期5星UP角色「{featuredCharacter}」。 若這次祈願獲取的5星角色非本期5星UP角色，下次祈願獲取的5星角色<span>必定</span>為本期5星UP角色。\",\n\t\t\t\"【4星物品】\",\n\t\t\t\"在本期「葉落風隨」活動祈願中，4星物品祈願的基礎機率為<span>5.100%</span>，4星角色祈願的基礎機率為<span>2.550%</span >，4星武器祈願的基礎機率為<span>2.550%</span>，4星物祈願的綜合機率（含保底）為<span>13.000%</span>。 最多<span>10</span>次祈願必定能透過保底獲取4星或以上物品，透過保底獲取4星物品的機率為<span>99.400%</span>，取得5星物品的機率為< span>0.600%</span>。 當祈願獲取到4星物品時，有<span>50.000%</span>的機率為本期4星UP角色{rateupCharacters}中的一個。 如果本次祈願獲取的4星物品非本期4星UP角色，下次祈願獲取的4星物品<span>必定</span>為本期4星UP角色。 當祈願獲取到4星UP物品時，每個本期4星UP角色的獲取機率均等。\"\n\t\t],\n\t\t\"weapons\": [\n\t\t\t\"「{bannerName}」活動祈願現已開啟。 活動期間內，限定5星武器{featuredWeapon1}、5星武器{featuredWeapon2}以及4星武器{rateupWeapons}的祈願獲取機率將<span>大幅提升</span>！ <br/> <span> ※以上武器中，限定武器不會進入「奔行世間」常駐祈願。 </span>\",\n\t\t\t\"※一般情況下所有角色或武器均適用基礎機率，如觸發機率UP、保底等以具體規則為準。\",\n\t\t\t\"〓祈願規則〓\",\n\t\t\t\"【5星物品】\",\n\t\t\t\"在本期「{bannerName}」活動祈願中，5星武器祈願的基礎機率為<span>0.700%</span>，綜合機率（含保底）為<span>1.850%</span>，最多 <span>80</span>次祈願必定能透過保底獲取5星角色。 當祈願獲取到5星角色時，有<span>75.000%</span>的機率為本期5星UP武器「{featuredWeapon1}」、「{featuredWeapon2}」。 如果本次祈願獲取的5星角色非本期5星UP武器，下次祈願獲取的5星武器<span>必定</span>為本期5星UP武器。 <br/>在未通過命定值達到滿值獲取定軌武器的情況下，當祈願獲取到5星UP物品時，每把本期5星UP武器的獲取機率均等。 <br/>在本期「{bannerName}」活動祈願中，可使用「神鑄定軌」對本期5星UP武器進行定軌，定軌武器的選擇僅在本期「{bannerName}」 活動祈願中生效。 <br/>在本期「{bannerName}」活動祈願中，使用「神鑄定軌」定軌武器後，當取得到的5星武器為非目前定軌武器時，獲得1點命定值 ，命定值達到<span>滿值</span>後，在本祈願中獲得的下一把5星武器<span>必定</span>為當前定軌武器。 當取得目前定軌武器時，無論目前命定值是否達到滿值，都會重設為<span>0</span>，重新累積。 <br/>未使用「神鑄定軌」定軌武器時，將<span>不會</span>累積命定值。 <br/>定軌武器可進行更換或取消。 更換或取消目前定軌武器時，命定值將會重設為<span>0</span>，重新累積。 <br/>※本祈願中的命定值僅在本期「{bannerName}」活動祈願中生效，祈願結束後命定值將會重置為<span>0</span>，重新 累計。\",\n\t\t\t\"【4星物品】\",\n\t\t\t\"在本期「{bannerName}」活動祈願中，4星物品祈願的基礎機率為<span>6.000%</span>，4星角色祈願的基礎機率為<span>3.000%</span> ，4星武器祈願的基礎機率為<span>3.000%</span>，4星物祈願的綜合機率（含保底）為<span>14.500%</span>。 最多10次祈願必定能透過保底獲取4星或以上物品，透過保底獲取4星物品的機率為99.300%，獲取5星物品的機率為0.700%。 <br/> 當祈願獲取到4星物品時，有<span>75.000%</span>的機率為本期4星UP武器{rateupWeapons}中的一個。 如果本次祈願獲取的4星物品非本期4星UP武器，下次祈願獲取的4星物品<span>必定</span>為本期4星UP武器。 當祈願獲取到4星UP物品時，每把本期4星UP武器的獲取機率均等。\"\n\t\t],\n\t\t\"chronicled\": [\n\t\t\t\"Chronicled Wish \\\"{bannerName}\\\" is now available. During this event wish, the <span>event-exclusive</span> 5-star characters {featuredCharacter}, the <span>event-exclusive</span> 5-star weapons {featuredWeapon} will be available for a limited time.\",\n\t\t\t\"※ In most cases, the base probability of all characters and weapons is evenly distributed. If there is a boost or guarantee in effect, please refer to the corresponding rules.\",\n\t\t\t\"〓Rules〓\",\n\t\t\t\"5-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 5-star item = <span>0.600%</span>; consolidated probability of winning 5-star item (incl. guarantee) = <span>1.600%</span>; guaranteed to win 5-star item at least once per <span>90</span> attempts. For Chronicled Wish \\\"{bannerName}\\\", you can chart a course towards your chosen boosted 5-star character or weapon amongst all 5-star items with \\\"Chronicled Path.\\\" The choice of item will only be valid for this period of Chronicled Wish \\\"{bannerName}\\\".\",\n\t\t\t\"※ When the Designated Item is a <span>5-Star Character</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Characters</span>. When the Designated Item is a <span>5-Star Weapon</span>, the 5-star items you can obtain in the Wish are: <span>5-Star Weapons</span>.\",\n\t\t\t\"When you obtain a 5-star item in this event wish, there is a <span>50.000%</span> chance it will be the Designated Item. If you obtain a 5-star item that was not your chosen item, you will receive 1 Fate Point. Once you have reached the <span>maximum amount</span> of Fate Points, the next 5-star item will be <span>guaranteed</span> to be your chosen item. Once you have obtained the chosen item, the number of Fate Points will reset to <span>0</span> whether or not you have reached maximum points, and you will have to accumulate them again.\",\n\t\t\t\"After charting a course towards a Designated Item, you can change your choice, but doing so will reset the Fate Points to <span>0</span> and you will have to accumulate them again.\",\n\t\t\t\"※ The Fate Points for this Wish are only valid for the current period of Chronicled Wish \\\"{bannerName}\\\". Once the Wish event is over, the number of Fate Points will reset to <span>0</span>, and you will have to accumulate them again.\",\n\t\t\t\"4-Star Items\",\n\t\t\t\"For Chronicled Wish \\\"{bannerName}\\\": Base probability of winning 4-star item = <span>5.100%</span>; base probability of winning 4-star character = <span>2.550%</span>, and base probability of winning 4-star weapon = <span>2.550%</span>; consolidated probability (incl. guarantee) of winning 4-star item = <span>13.000%</span>; guaranteed to win 4-star or above item at least once per 10 attempts; probability of winning 4-star item through the guarantee = <span>99.400%</span>, and probability of winning 5-star item through the guarantee = <span>0.600%</span>.\"\n\t\t],\n\t\t\"convertion\": {\n\t\t\t\"fiveStar\": \"祈願獲得5星武器時，會同時獲得10個{starglitter}作為副產物；\",\n\t\t\t\"fourStar\": \"獲得4星武器時，會同時獲得2個{starglitter}作為副產物；\",\n\t\t\t\"threeStar\": \"獲得3星武器時，會同時獲得15個{stardust}作為副產物。\"\n\t\t},\n\t\t\"duplicate\": {\n\t\t\t\"heading\": \"〓若獲得重複角色〓\",\n\t\t\t\"text\": \"無論透過何種方式（包含但不限於祈願、商城兌換、系統贈送等）第2~7次獲得相同{rarity}星角色時，每次將轉化為1個{stellaFortuna}和10個{starglitter} ；第8次及之後獲得，將僅轉換為25個{starglitter}。\"\n\t\t}\n\t},\n\t\"history\": {\n\t\t\"title\": \"祈願歷史\",\n\t\t\"text\": \"歷史紀錄\",\n\t\t\"resetButton\": \"重置\",\n\t\t\"resetPromptTitle\": \"重置紀錄？\",\n\t\t\"resetPrompt\": \"它還會從您的庫存中刪除與 {bannerName} 卡池相關的所有角色和武器。 <br /> 你確定要重置嗎？\",\n\t\t\"resetSuccess\": \"已成功重置！\",\n\t\t\"keepPity\": \"Don't reset Pity and Guaranteed Status\",\n\t\t\"selectWish\": \"祈願類型選擇:\",\n\t\t\"disclaimer\": \"我們從不將您的資料保存在雲端儲存中。 所有資料都儲存到 IndexedDB，這表示資料保存在您的瀏覽器儲存中。 除非您透過刪除/重置按鈕手動刪除它或清除瀏覽器數據，否則它永遠不會刪除。\",\n\t\t\"currentPity\": \"目前已墊:\",\n\t\t\"totalPull\": \"總共抽取:\",\n\t\t\"totalSpend\": \"已花费:\",\n\t\t\"filterTxt\": \"篩選\",\n\t\t\"filter\": \"{rarity} 星\",\n\t\t\"filterAll\": \"全部\",\n\t\t\"pity\": \"已墊\",\n\t\t\"timeReceived\": \"祈願時間\",\n\t\t\"waiting\": \"請稍等\",\n\t\t\"noData\": \"無可用數據\",\n\t\t\"untracked\": \"未追踪\",\n\t\t\"win\": \"小保底\",\n\t\t\"lose\": \"歪\",\n\t\t\"guaranteed\": \"大保底\",\n\t\t\"captured\": \"Capturing Radiance\",\n\t\t\"selected\": \"已定軌\",\n\t\t\"olderLayout\": \"舊布局\",\n\t\t\"switchv2\": \"切换到新版布局\"\n\t},\n\t\"shop\": {\n\t\t\"text\": \"商城\",\n\t\t\"paimonBargains\": \"塵輝兌換\",\n\t\t\"fateNeeded\": \"缺少{rollQty}個{currency}，\",\n\t\t\"primoNeeded\": \"是否消耗{primoPrice}原石購買？\",\n\t\t\"purchaseUpto\": \"限購 1\",\n\t\t\"purchaseConfirm\": \"確認購買\",\n\t\t\"exchangeHeading\": \"兌換物品\",\n\t\t\"purchaseHeading\": \"購買物品\",\n\t\t\"purchaseButton\": \"購買\",\n\t\t\"pay\": \"支付\",\n\t\t\"product\": \"產品\",\n\t\t\"consume\": \"消耗\",\n\t\t\"selectPayment\": \"選擇支付方式\",\n\t\t\"unrealWallet\": \"藍綠色修改器破解版\",\n\t\t\"convertPrimo\": \"自動轉換為原石？\",\n\t\t\"proceedPayment\": \"確認交易\",\n\t\t\"qty\": \"數量\",\n\t\t\"insufficient\": \"貨幣不足\",\n\t\t\"maxCharacter\": \"Obtained the maximum possible amount of Stella Fortuna\",\n\t\t\"crystalTopup\": \"凝取結晶\",\n\t\t\"initialBonus\": \"Initial Topup Bonus\",\n\t\t\"bonus\": \"Bonus\",\n\t\t\"buyGenesisHeading\": \"購買創世結晶\",\n\t\t\"recomendedHeading\": \"推薦商品\",\n\t\t\"paimonHeading\": \"塵輝兌換\",\n\t\t\"welkinNote\": \"可累計購買\",\n\t\t\"limitedOffer\": \"限時提供購買\",\n\t\t\"noLimitTime\": \"刷新時間：不會刷新\",\n\t\t\"paymentChilde\": \"Childe\",\n\t\t\"paymentTears\": \"Tears\",\n\t\t\"paymentWakaranai\": \"Wakaranai\",\n\t\t\"recomended\": {\n\t\t\t\"welkin\": \"空月祝福\",\n\t\t\t\"newOutfit\": \"角色裝扮 · 新裝\",\n\t\t\t\"dayRemaining\": \"剩餘 {days} 天\",\n\t\t\t\"alreadyClaimed\": \"本日已領取\",\n\t\t\t\"instantlyGet\": \"購買即可獲得\",\n\t\t\t\"dailyGift\": \"每日赠送\",\n\t\t\t\"obtainTotal\": \"*有效期限持續30天！ 累計可獲得{totalGenesis}創世結晶和{totalPrimo}原石！\",\n\t\t\t\"claimingBlessing\": \"點擊領取今日空月祝福獎勵\",\n\t\t\t\"issuedPurchase\": \"購買時獲得\",\n\t\t\t\"collect\": \"每日登入獎勵\"\n\t\t},\n\t\t\"exchange\": {\n\t\t\t\"starglitter\": \"無主的星輝\",\n\t\t\t\"stardust\": \"無主的星塵\",\n\t\t\t\"primogem\": \"原石購買\"\n\t\t},\n\t\t\"item\": {\n\t\t\t\"genesis\": \"創世結晶\",\n\t\t\t\"primogem\": \"原石\",\n\t\t\t\"intertwined\": \"糾纏之緣\",\n\t\t\t\"acquaint\": \"相遇之緣\",\n\t\t\t\"starglitter\": \"無主的星輝\",\n\t\t\t\"stardust\": \"無主的星塵\"\n\t\t},\n\t\t\"description\": {\n\t\t\t\"intertwined\": \"連結夢想的命運之種。 緣石輝光能讓本無交集的命運交錯，讓彼此的夢想相連，正如這種光輝將群星連成心之所向的圖形。\",\n\t\t\t\"acquaint\": \"點亮星空的希望之種。 無論相隔多遠，命定相遇的人都會受緣石輝光的指引，在星空下相會。\"\n\t\t}\n\t},\n\t\"inventory\": {\n\t\t\"text\": \"倉庫\",\n\t\t\"unsetOutfit\": \"未設置裝扮\",\n\t\t\"setOutfit\": \"設置角色裝扮\",\n\t\t\"refinement\": \"精煉等級 {count}\",\n\t\t\"constellation\": \"命之座層數 {count}\",\n\t\t\"extra\": \"{count} 已滿並溢出\",\n\t\t\"firstSummon\": \"首次獲得: {date}\",\n\t\t\"notOwned\": \"尚未擁有\",\n\t\t\"sort\": \"排序\",\n\t\t\"rarity\": \"稀有度\",\n\t\t\"name\": \"名字\",\n\t\t\"quantity\": \"數量\",\n\t\t\"element\": \"元素\",\n\t\t\"release\": \"Release Date\",\n\t\t\"type\": \"類型\",\n\t\t\"owned\": \"已獲得\",\n\t\t\"showAllOption\": \"顯示所有{item}\"\n\t},\n\t\"menu\": {\n\t\t\"no\": \"否\",\n\t\t\"yes\": \"是\",\n\t\t\"text\": \"選單\",\n\t\t\"feedback\": \"Feedback\",\n\t\t\"options\": \"選項\",\n\t\t\"updates\": \"更新歷史\",\n\t\t\"customBanner\": \"Custom Banner\",\n\t\t\"backupRestore\": \"Backup & Restore\",\n\t\t\"language\": \"語言\",\n\t\t\"currency\": \"貨幣\",\n\t\t\"fates\": \"Number of Wishes\",\n\t\t\"unlimited\": \"Unlimited\",\n\t\t\"manual\": \"Manual Input\",\n\t\t\"mute\": \"停用音頻音效\",\n\t\t\"switchBanner\": \"切換卡池\",\n\t\t\"showAllitems\": \"在庫存中顯示所有物品\",\n\t\t\"animatedbg\": \"動畫背景\",\n\t\t\"autoskip\": \"自動跳過祈願動畫\",\n\t\t\"multiRoll\": \"Number per multi-roll\",\n\t\t\"factoryReset\": \"清除資料並恢復預設\",\n\t\t\"resetTitle\": \"恢復預設\",\n\t\t\"rotate\": \"旋轉設備以獲得更好體驗\",\n\t\t\"keepSetting\": \"Keep Settings? <small> Current Pity, Balance and the Settings will not be deleted </small>\",\n\t\t\"clearCache\": \"清空快取 ( {size} ) ？ <small>勾選本項並恢復後將會重載資源！</small>\",\n\t\t\"resetButton\": \"現在重置\",\n\t\t\"resetPrompt\": \"您確定清除<strong>所有資料</strong>並恢復預設嗎？\",\n\t\t\"resetSuccess\": \"已成功重置\",\n\t\t\"proAccess\": \"Pro Access\",\n\t\t\"getpro\": \"Unlock Pro Access\",\n\t\t\"removeKey\": \"Remove Key\",\n\t\t\"removeKeyConfirm\": \"Are you sure to delete the current Key? You will lose all of these benefits until you re-enter the new key!\",\n\t\t\"getNewKey\": \"在這裡獲得一個新的！\",\n\t\t\"noKey\": \"沒有贊助碼？\",\n\t\t\"verifyFail\": \"無法驗證贊助碼，請檢查您的網路連接！\",\n\t\t\"invalidKey\": \"您的贊助碼無效\",\n\t\t\"keyExpired1\": \"Expired Key!\",\n\t\t\"keyExpired2\": \"Your key: \\\"{key}\\\" has expired since {date}!\",\n\t\t\"adFreeUser\": \"You already have access to the pro features!\",\n\t\t\"inputKeyPlaceholder\": \"輸入贊助碼\",\n\t\t\"inputKeyTxt\": \"Input a Key to get more Benefits !\",\n\t\t\"checkingKey\": \"Verifying Stored Access Key\",\n\t\t\"benefit\": \"Benefits\",\n\t\t\"authorNotes\": [\n\t\t\t\"Ads Removed\",\n\t\t\t\"Unlimited Custom Banners\",\n\t\t\t\"You can use the same key for {HSRWishSim} to get the same benefits\"\n\t\t]\n\t}\n}\n"
  },
  {
    "path": "src/post/banner-guidelines.md",
    "content": "As I expected, after a period of monitoring Custom Banner features, I found that a lot of users shared inappropriate content through this feature. Therefore, I made some adjustments and provided some rules below to maintain the quality of custom banners:\n\n### Prohibited Content:\n\nBy using this feature, you agree to refrain from sharing any content that is inappropriate, offensive, or illegal. This includes, but is not limited to, explicit nudity, sexually explicit material, real and explicit photos, harassment, political content, and any materials that violate applicable laws and regulations.\nIf you persist in violating these rules, I will take actions such as blocking your banner or other appropriate actions.\n\n### Recommendation:\n\n1. Avoid using real photos; I suggest opting for artwork created by an artist or your original creations.\n2. Better to use transparent images whenever possible; both PNG and Webp formats are acceptable.\n3. Better to use different images beetween the Splash-Art Image and Face Image\n4. For the Face Image, it is recommended to use close-up image.\n5. Please ensure all fields are filled with relevant and appropriate text.\n\n<!-- If you choose to share your banner publicly and adhere to these recommendations, there is a possibility that your banner may be featured on this site through a page that I am currently preparing. -->\n\n<br/>\n\n### Data Storage and Privacy:\n\nEach banner you create is securely stored in your browser's local memory. At **WishSimulator.App**, I try to prioritize your privacy, and I want to assure you that I neither collect nor store your banner data in cloud storage unless you choose to click the Share Button explicitly.\n\nIt's important to note that in the event of an unforeseen incident on your device, leading to the clearing of your browser's storage, all the data associated with your banners will be lost. Consequently, you will be unable to edit any banners previously created. I recommend exercising caution and regularly backing up your data to prevent any inadvertent loss\n\nEvery Custom Banner Unit stored in cloud storage will be automatically deleted after 30 days of inactivity. However, the Banner Unit will still be stored in your device's memory, so when your banner has passed the 30-day mark without activity, you just need to republish your banner.\n\n"
  },
  {
    "path": "src/post/install-android.md",
    "content": "# How To Install WishSimulator.App to your <span> Android Phone</span>\n\n## Why I need to Install it ?\n\nYou are not required to install it, the installed app is literally the same as the site, but I advise you to install it because it offers several advantages:\n\n- **Simple to Access**, you don't need to open browser and type url address manually, access the simulator directly from your HomeScreen.\n- **Offline Capability**, You can still open and run the simulator even if you don't have internet. But once the site has a new version, you have to connect it to the internet, the application will be updated automatically\n\n## Steps\n\n1. First, Open the site (**https://wishsimulator.app**) with **Google Chrome**.\n2. Wait for the site to finish loading, **Click three dot** on the top rignt of the browser screen\n\n   ![three dot](https://user-images.githubusercontent.com/13815468/200664873-5d99f256-38c1-4a76-a492-329e164c8f7a.jpg)\n\n3. Click **Install App**\n\n   ![Install](https://user-images.githubusercontent.com/13815468/200664897-5aa28b7b-714a-4e11-9108-a65aca83fef2.jpg)\n\n4. Then Click the **Install** Button\n\n   ![Install Button](https://user-images.githubusercontent.com/13815468/200664834-e09200b7-9b44-4ab9-8639-43a9997f6f51.jpg)\n\n5. You can see the Instruction video below\n\n   <video src=\"https://user-images.githubusercontent.com/13815468/200663590-7497627e-3def-4ede-b883-1037e532d846.mp4\" controls>\n\n6. Congratulations, Now you can access the Simulator directly from your Homescreen !\n7. If You want to uninstall it, Just uninstall like a regular application. Press & Hold the app Icon, then select **Uninstall** option.\n8. Alternative option, you can download and install the App from <a href=\"https://play.google.com/store/apps/details?id=twa.wishsimulator.app\" target=\"_blank\"><img style=\"width: 7rem; transform: translateY(35%)\" src=\"/images/utility/playstore-button.webp\" alt=\"playstore button\"/></a>. But you don't need to download it if you already install WishSimulator.App directly from web, because it's literally same!\n"
  },
  {
    "path": "src/post/install-windows.md",
    "content": "# How To Install WishSimulator.App to your <span> Windows</span>\n\n## Why I need to Install it ?\n\nYou are not required to install it, the installed app is literally the same as the site, but I advise you to install it because it offers several advantages:\n\n- **Simple to Access**, you don't need to open browser and type url address manually, access the simulator from your Desktop directly.\n- **Offline Capability**, You can still open and run the simulator even if you don't have internet. But once the site has a new version, you have to connect it to the internet, the application will be updated automatically\n\n## Requirement\n\n- You must have a browser with a chromium base, for example **Google Chrome, Ms.Edge, Brave, Duckduckgo or others**. **Mozilla and Opera** can also be used too.\n\n## Steps\n\n1. First, Open the site (**https://wishsimulator.app**) with one of the browsers above.\n2. Wait for the site to finish loading, then just navigate to the address bar, then click the install icon on the right side\n\n   ![Windows Install](https://user-images.githubusercontent.com/13815468/200633549-869ae8a3-f077-4865-b120-a3e2804026b2.jpg)\n\n   You can see the video below\n\n   <video src=\"https://user-images.githubusercontent.com/13815468/200639254-ef34490c-e18d-4b2e-b157-a99f9b426267.mp4\" controls>\n\n3. Congratulations, Now you can access the Simulator directly from your desktop!\n4. If You want to uninstall it, Just uninstall like a regular application. Click start -> search \"Genshin Impact Wish Simulator\" -> Click **Uninstall** option\n\n   ![OnPaste 20221109-010157](https://user-images.githubusercontent.com/13815468/200641681-98bd462e-65f2-4ee4-8a49-227f9b8d333a.jpg)\n"
  },
  {
    "path": "src/post/privacy.md",
    "content": "## Privacy Policy\n\nWishSimulator.App operates the _https://wishsimulator.app_ website, which provides the Free SERVICE.\n\nThis page is used to inform website visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service, the WishSimulator.App website.\n\nIf you choose to use our Service, then you agree to the collection and use of information in relation with this policy. The Personal Information that we collect are used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy. Our Privacy Policy was created with the help of the [Privacy Policy Template Generator](https://www.privacypolicytemplate.net/).\n\nThe terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at _https://wishsimulator.app_, unless otherwise defined in this Privacy Policy.\n\n## Information Collection and Use\n\nWishSimulator.App does not collect or store any personally identifiable information about you.\n\nHowever, the app may use third party services that may collect information used to identify you. The information that these third party services request will be retained on your device and is not collected by me in any way.\n\n## Service Providers\n\nWe may employ third-party companies and individuals due to the following reasons:\n\n- To facilitate our Service\n- To provide the Service on our behalf\n- To perform Service-related services; or\n- To assist us in analyzing how our Service is used.\n\nWe want to inform our Service users that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.\n\n## Links to Other Sites\n\nOur Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.\n\n## Changes to This Privacy Policy\n\nWe may update our Privacy Policy from time to time. Thus, we advise you to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page.\n\n## Contact Us\n\nIf you have any questions or suggestions about our Privacy Policy, do not hesitate to contact the author at admin@wishsimulator.app.\n\nThis privacy policy page was created at [privacypolicytemplate.net](https://privacypolicytemplate.net) and modified/generated by **App Privacy Policy Generator**\n\n"
  },
  {
    "path": "src/routes/+error.svelte",
    "content": "<script>\n\timport { page } from '$app/stores';\n\timport { getContext, onMount } from 'svelte';\n\timport Background from '$lib/components/RandomBackground.svelte';\n\n\tconst loaded = getContext('isBannerLoaded');\n\tonMount(loaded);\n</script>\n\n<svelte:head>\n\t<title>Error {$page.status}</title>\n</svelte:head>\n\n<section>\n\t<Background />\n\t<div class=\"container\">\n\t\t<i class=\"gi-primo-star top-left\" />\n\t\t<i class=\"gi-primo-star top-right\" />\n\t\t<i class=\"gi-primo-star bottom-left\" />\n\t\t<i class=\"gi-primo-star bottom-right\" />\n\t\t<i class=\"gi-inazuma icon-bg\" />\n\t\t<h1>Error {$page.status}</h1>\n\t\t<h2>{$page.error.message}</h2>\n\t\t<p>We find some problem with the page you're looking for ..</p>\n\t\t<a href=\"/\"> <i class=\"gi-reply\" /> Back To The Beginning .. </a>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.container {\n\t\tposition: relative;\n\t\tz-index: +1;\n\t\twidth: 80%;\n\t\theight: 70%;\n\t\tbackground-color: #ece6de;\n\t\tpadding: 2rem;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n\n\t.gi-primo-star {\n\t\tcolor: #fdf0ac;\n\t\tfont-size: 1.5rem;\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\tfilter: drop-shadow(0 0 7px rgba(227, 149, 48, 0.9));\n\t}\n\t.top-left {\n\t\ttop: -0.8rem;\n\t\tleft: -0.5rem;\n\t\ttransform: rotate(-45deg);\n\t}\n\t.top-right {\n\t\ttop: -0.8rem;\n\t\tright: -0.5rem;\n\t\ttransform: rotate(45deg);\n\t}\n\t.bottom-left {\n\t\tbottom: -0.8rem;\n\t\tleft: -0.5rem;\n\t\ttransform: rotate(-135deg);\n\t}\n\t.bottom-right {\n\t\tbottom: -0.8rem;\n\t\tright: -0.5rem;\n\t\ttransform: rotate(135deg);\n\t}\n\t.icon-bg {\n\t\tfont-size: 17em;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tcolor: #e4dcce;\n\t\tz-index: -1;\n\t}\n\n\th1 {\n\t\tfont-size: 2.5rem;\n\t}\n\th2 {\n\t\tfont-size: 1.2rem;\n\t\tpadding: 0.6rem 0;\n\t}\n\tp {\n\t\tfont-size: 1rem;\n\t}\n\n\ta {\n\t\tborder-radius: 40px;\n\t\tcolor: white;\n\t\tbackground-color: #4a5265;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tpadding: 5px 4rem 5px 5px;\n\t\ttransition: all 0.2s;\n\t\tmargin-top: 3rem;\n\t}\n\n\ta i {\n\t\twidth: 2rem;\n\t\theight: 2rem;\n\t\tbackground-color: #353533;\n\t\tborder-radius: 100%;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 1rem;\n\t\tmargin-right: 3rem;\n\t\tcolor: #ffc107;\n\t}\n\ta:hover {\n\t\tbackground-color: rgb(51, 57, 71);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/+layout.js",
    "content": "export const prerender = true;\n"
  },
  {
    "path": "src/routes/+layout.svelte",
    "content": "<script>\n\t// Packagae\n\timport { registerSW } from 'virtual:pwa-register';\n\timport { isLoading, locale } from 'svelte-i18n';\n\timport { page } from '$app/stores';\n\timport { dev } from '$app/environment';\n\timport { onMount, setContext } from 'svelte';\n\timport 'zoomist/css';\n\n\timport {\n\t\tviewportHeight,\n\t\tviewportWidth,\n\t\tisMobile,\n\t\tmobileMode,\n\t\tisPWA\n\t} from '$lib/store/app-stores';\n\timport { IDBUpdater } from '$lib/helpers/migrator/IDBUpdater';\n\timport { storageLocal } from '$lib/helpers/dataAPI/api-localstore';\n\timport { HOST, DESCRIPTION, KEYWORDS, APP_TITLE } from '$lib/env';\n\timport { sync } from '$lib/helpers/dataAPI/sync';\n\timport { autoExport } from '$lib/store/filesystem-store';\n\timport { mountLocale } from '$lib/helpers/i18n';\n\timport { mobileDetect } from '$lib/helpers/mobileDetect';\n\timport { wakeLock } from '$lib/helpers/wakeLock';\n\timport { syncCustomBanner } from '$lib/helpers/banner-custom';\n\t// import { initializeDriveAPI } from '$lib/helpers/dataAPI/google-api';\n\timport '../app.css';\n\n\timport Iklan from '$lib/components/Iklan.svelte';\n\timport Toasts from '$lib/components/Toasts.svelte';\n\timport Loader from './_index/InitialLoader.svelte';\n\n\tlet innerHeight;\n\tlet innerWidth;\n\tlet isBannerLoaded = false;\n\tlet isloaded = false;\n\n\tsetContext('bannerLoaded', () => (isBannerLoaded = true));\n\tsetContext('loaded', () => (isloaded = true));\n\n\tlet font = '';\n\t$: {\n\t\tconst lc = $locale?.toLowerCase() || '';\n\t\tconst isSpecial = lc.match(/(cn|ja|kr)/);\n\t\tfont = isSpecial || lc.includes('th') ? lc.split('-')[0] : 'global';\n\t}\n\n\t$: viewportWidth.set(innerWidth);\n\t$: viewportHeight.set(innerHeight);\n\n\tlet directLoad = false;\n\tlet preview = false;\n\n\tconst checkPath = () => {\n\t\tconst path = $page.url.pathname.split('/');\n\t\tdirectLoad = !!path[1];\n\t\tpreview = path[1] === 'screen';\n\n\t\tconst validPaths = ['adkey', 'bnlist', 'install', 'privacy-policy', 'screen'];\n\t\tconst isPathValid = validPaths.includes(path[1].toLowerCase());\n\t\tconst redirect = path[1] && !isPathValid;\n\t\treturn redirect;\n\t};\n\n\tconst setMobileMode = () => {\n\t\tif ($isPWA) return mobileMode.set(true);\n\t\tconst angle = screen.orientation?.angle || 0;\n\t\tconst rotate = angle === 90 || angle === 270;\n\t\tmobileMode.set(rotate);\n\t};\n\n\tmountLocale();\n\tonMount(async () => {\n\t\tif (checkPath()) return window.location.replace('/');\n\n\t\tconst url = new URL(window.location.href);\n\t\tconst searchParams = new URLSearchParams(url.search);\n\t\tisPWA.set(searchParams.get('pwa') === 'true' || !!searchParams.get('pwasc'));\n\n\t\tisMobile.set(mobileDetect() || innerWidth < 601);\n\t\tif ($isMobile) setMobileMode();\n\n\t\twindow.addEventListener('orientationchange', () => {\n\t\t\tif ($isMobile) setMobileMode();\n\t\t});\n\n\t\tstorageLocal.initEvent(); //for autoexport\n\t\tregisterSW(); // Service Worker for faster load\n\t\twakeLock(); // Prevent screen off while open the app\n\t\tawait IDBUpdater(); // Update site data to the newer Version\n\t\tsyncCustomBanner(); // Sync Custom Banner\n\t\t// initializeDriveAPI(); // Drive API for cloud Sync\n\n\t\tdocument.addEventListener('storageUpdate', () => sync($autoExport));\n\t\t// prevent Righ click (hold on android) on production mode\n\t\tif (!dev) document.addEventListener('contextmenu', (e) => e.preventDefault());\n\t});\n</script>\n\n<svelte:window bind:innerHeight bind:innerWidth />\n\n<svelte:head>\n\t<meta name=\"description\" content={DESCRIPTION} />\n\t<meta name=\"keywords\" content={KEYWORDS} />\n\t<meta property=\"al:web:url\" content={HOST} />\n\t<link rel=\"fluid-icon\" href=\"{HOST}/meta-picture.jpg\" title={APP_TITLE} />\n\n\t<meta property=\"og:url\" content={HOST} />\n\t<meta property=\"og:type\" content=\"website\" />\n\t<meta property=\"og:title\" content={APP_TITLE} />\n\t<meta property=\"og:description\" content={DESCRIPTION} />\n\t<meta property=\"og:image\" content=\"{HOST}/meta-picture.jpg\" />\n\n\t<meta name=\"twitter:card\" content=\"summary_large_image\" />\n\t<meta property=\"twitter:domain\" content={HOST.replace('https://', '').replace('http://', '')} />\n\t<meta property=\"twitter:url\" content={HOST} />\n\t<meta name=\"twitter:title\" content={APP_TITLE} />\n\t<meta name=\"twitter:description\" content={DESCRIPTION} />\n\t<meta name=\"twitter:image\" content=\"{HOST}/meta-picture.jpg\" />\n\n\t<link\n\t\trel=\"preload\"\n\t\thref=\"/fonts/optimized_global_web.woff2\"\n\t\tas=\"font\"\n\t\ttype=\"font/woff2\"\n\t\tcrossorigin\n\t/>\n\t<link\n\t\trel=\"preload\"\n\t\thref=\"/fonts/optimized_th_web.woff2\"\n\t\tas=\"font\"\n\t\ttype=\"font/woff2\"\n\t\tcrossorigin\n\t/>\n\t<link\n\t\trel=\"preload\"\n\t\thref=\"/fonts/optimized_ja_web.woff2\"\n\t\tas=\"font\"\n\t\ttype=\"font/woff2\"\n\t\tcrossorigin\n\t/>\n\t<link\n\t\trel=\"preload\"\n\t\thref=\"/fonts/optimized_zh_web.woff2\"\n\t\tas=\"font\"\n\t\ttype=\"font/woff2\"\n\t\tcrossorigin\n\t/>\n\t<link\n\t\trel=\"preload\"\n\t\thref=\"/fonts/optimized_ko_web.woff2\"\n\t\tas=\"font\"\n\t\ttype=\"font/woff2\"\n\t\tcrossorigin\n\t/>\n\n\t{#if !dev}\n\t\t<link rel=\"manifest\" href=\"/appmanifest.json\" />\n\t{/if}\n\n\t<Iklan head />\n</svelte:head>\n\n<Loader {isBannerLoaded} {directLoad} />\n\n<main\n\tclass:mobile={$mobileMode}\n\tclass:preview\n\tclass={$locale}\n\tstyle=\"--screen-height: {$viewportHeight\n\t\t? `${$viewportHeight}px`\n\t\t: '100vh'};--screen-width: {$viewportWidth}px;\n\t\t--genshin-font: var(--gi-{font}-font);\"\n>\n\t<Toasts />\n\n\t{#if !$isLoading && isloaded}\n\t\t<slot />\n\t{/if}\n\t<a\n\t\thref=\"/\"\n\t\ton:click|preventDefault={() => window.location.replace('/')}\n\t\tclass=\"uid\"\n\t\ttitle=\"Try Your Luck by this Simulator\"\n\t>\n\t\tWishSimulator.App\n\t</a>\n</main>\n\n<style global>\n\t@import '../../node_modules/overlayscrollbars/css/OverlayScrollbars.css';\n\n\t@font-face {\n\t\tfont-family: 'GI_Global_Web';\n\t\tsrc: url('/fonts/optimized_global_web.woff2') format('woff2');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n\n\t@font-face {\n\t\tfont-family: 'GI_JA_Web';\n\t\tsrc: url('/fonts/optimized_ja_web.woff2') format('woff2');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n\n\t@font-face {\n\t\tfont-family: 'GI_KO_Web';\n\t\tsrc: url('/fonts/optimized_ko_web.woff2') format('woff2');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n\n\t@font-face {\n\t\tfont-family: 'GI_TH_Web';\n\t\tsrc: url('/fonts/optimized_th_web.woff2') format('woff2');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n\n\t@font-face {\n\t\tfont-family: 'GI_ZH_Web';\n\t\tsrc: url('/fonts/optimized_zh_web.woff2') format('woff2');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t}\n\n\t:global(.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle) {\n\t\tbackground-color: #d2c69c;\n\t\topacity: 0.5;\n\t}\n\t:global(.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle:hover),\n\t:global(.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle:active) {\n\t\tbackground-color: #d2c69c;\n\t\topacity: 1;\n\t}\n\n\t:global(.os-theme-light > .os-scrollbar-vertical) {\n\t\twidth: 8px;\n\t}\n\t:global(.os-theme-light > .os-scrollbar-horizontal) {\n\t\theight: 8px;\n\t}\n\n\tmain {\n\t\tdisplay: block;\n\t\twidth: var(--screen-width);\n\t\theight: var(--screen-height);\n\t\tfont-family: var(--genshin-font);\n\t\toverflow: hidden;\n\t}\n\n\t.uid {\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\tbottom: 0px;\n\t\tright: 2em;\n\t\tz-index: 9999;\n\t\tcolor: #fff;\n\t\ttext-shadow: 0 0 1.5px rgba(0, 0, 0, 0.7);\n\t\tfont-family: Roboto, sans-serif;\n\t\tpointer-events: none;\n\t}\n\n\t.mobile .uid {\n\t\tright: 5%;\n\t}\n\n\t.preview .uid {\n\t\tpointer-events: unset;\n\t\tright: unset;\n\t\tleft: 1rem;\n\t\tbottom: 1rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/+page.svelte",
    "content": "<script>\n\timport { page } from '$app/stores';\n\timport { fade } from 'svelte/transition';\n\timport { writable } from 'svelte/store';\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport hotkeys from 'hotkeys-js';\n\n\timport browserState from '$lib/helpers/browserState';\n\timport { assets, preloadVersion, showBeginner } from '$lib/store/app-stores';\n\timport { dailyWelkin, localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { importLocalConfig, setBannerVersionAndPhase } from '$lib/helpers/dataAPI/storage-reader';\n\timport { handleShowStarter, initializeBanner } from '$lib/helpers/banner-loader';\n\timport { userCurrencies } from '$lib/helpers/currencies';\n\timport { pauseSfx, playSfx } from '$lib/helpers/audio/audio';\n\n\timport ModalInitBanner from './_custom-banner/ModalInitBanner.svelte';\n\timport ModalWelcome from './_index/ModalWelcome.svelte';\n\timport WelkinCheckin from './_index/WelkinCheckin.svelte';\n\timport PreloadMeteor from './_index/PreloadMeteor.svelte';\n\timport MainWish from './_wish/index.svelte';\n\n\tlet status = '';\n\tlet pageActive = 'index';\n\tlet showWelcomeModal = true;\n\tlet shareID = '';\n\n\tlet appReady = writable(false);\n\tlet onWish = writable(false);\n\n\tsetContext('onWish', onWish);\n\tsetContext('appReady', appReady);\n\tsetContext('query', writable('')); //query store to help finding a banner\n\tsetContext('readyToPull', writable(true)); // Ready to pull if meteor animation are loaded already\n\n\t// Background animation\n\tlet animatedBG = localConfig.get('animatedBG');\n\tconst animatebg = () => (animatedBG = localConfig.get('animatedBG'));\n\tsetContext('animateBG', animatebg);\n\n\t// Background Music\n\t$: if (!showWelcomeModal) {\n\t\tif (pageActive !== 'index' || $onWish) pauseSfx('wishBacksound');\n\t\telse playSfx('wishBacksound');\n\t}\n\n\tconst bgmHandle = () => {\n\t\tif (showWelcomeModal) return; // User is not ready to Wish\n\t\tif ($onWish) return; // dont resume/pause if user on wishing\n\t\tif (pageActive !== 'index') return; // dont handle BGM if not index page\n\n\t\tconst mode = document.visibilityState;\n\t\tif (mode === 'visible') return playSfx('wishBacksound');\n\t\treturn pauseSfx('wishBacksound');\n\t};\n\n\t// Welkin Checkin\n\tlet showWelkinScreen = false;\n\tconst welkinCheckin = () => {\n\t\tconst { remaining, diff, latestCheckIn } = dailyWelkin.getData();\n\t\tshowWelkinScreen = remaining > 0 && remaining - diff >= 0 && diff > 0;\n\t\tif (latestCheckIn) return dailyWelkin.checkin();\n\t};\n\tsetContext('closeWelkin', () => (showWelkinScreen = false));\n\n\tconst startApp = () => {\n\t\tappReady.set(true);\n\t\thotkeys.setScope('index');\n\t\tshowWelcomeModal = false;\n\t\twelkinCheckin();\n\t\tplaySfx();\n\t};\n\t// Welcome Modal && Custom Banner Modal\n\tsetContext('startApp', startApp);\n\n\t// Menu\n\tlet showMenu = false;\n\tconst handleMenu = (act) => {\n\t\tshowMenu = !showMenu;\n\t\tif (act === 'mute') return;\n\t\tplaySfx(!showMenu ? 'close' : 'click');\n\t};\n\tsetContext('handleMenu', handleMenu);\n\n\t// Page Navigation\n\tconst navigate = (page, updateState = true) => {\n\t\tlet beforeNavigate = pageActive;\n\t\tpageActive = page;\n\t\tshowMenu = false;\n\t\thotkeys.setScope(page);\n\n\t\tif (beforeNavigate === pageActive) return;\n\t\thotkeys.deleteScope(beforeNavigate);\n\n\t\tif (!updateState) return;\n\t\tif (beforeNavigate !== 'index') return browserState.back();\n\t\tbrowserState.set(page);\n\t};\n\tsetContext('navigate', navigate);\n\n\t// Component Loader\n\tlet AllBanners, GachaInfo, Inventory, Shop, Feedback, Menu, ObtainedItem, ModalConvert;\n\tconst asyncLoadComponent = async () => {\n\t\tObtainedItem = (await import('$lib/components/ObtainedItem.svelte')).default;\n\t\tModalConvert = (await import('./_index/ModalConvert.svelte')).default;\n\n\t\tMenu = (await import('./_menu/index.svelte')).default;\n\t\tGachaInfo = (await import('./_gachainfo/index.svelte')).default;\n\t\tAllBanners = (await import('./_allbanners/index.svelte')).default;\n\t\tInventory = (await import('./_inventory/index.svelte')).default;\n\t\tShop = (await import('./_shop/index.svelte')).default;\n\t\tFeedback = (await import('./_feedback/index.svelte')).default;\n\t};\n\n\t// Switching Banner\n\tconst bannerLoaded = getContext('bannerLoaded');\n\tconst loadBanner = async (patchPhase) => {\n\t\tconst initBanner = await initializeBanner(patchPhase);\n\t\t({ status } = initBanner || {});\n\t\tbannerLoaded();\n\t};\n\n\tonMount(() => {\n\t\tsetBannerVersionAndPhase();\n\t\tpreloadVersion.subscribe(loadBanner);\n\t\tshowBeginner.subscribe(handleShowStarter);\n\n\t\timportLocalConfig();\n\t\tuserCurrencies.init();\n\t\tasyncLoadComponent();\n\t\tanimatebg();\n\n\t\twindow.addEventListener('popstate', (e) => {\n\t\t\tif (e.state.page) return;\n\t\t\tif (pageActive === 'index') return;\n\t\t\tnavigate('index');\n\t\t});\n\t\tdocument.addEventListener('visibilitychange', bgmHandle);\n\n\t\t// Check Custom Banner\n\t\tconst { url } = $page;\n\t\tshareID = url.searchParams.get('banner');\n\t});\n\n\t// Obtained\n\tlet showObtained = false;\n\tlet obtainedData = {};\n\tconst openObtained = (data) => {\n\t\tobtainedData = data;\n\t\tshowObtained = true;\n\t};\n\tconst closeObtained = () => {\n\t\tshowObtained = false;\n\t\tobtainedData = {};\n\t\tplaySfx('close');\n\t};\n\tsetContext('openObtained', openObtained);\n\tsetContext('closeObtained', closeObtained);\n\n\t// Modal to Convert Genesis\n\tlet showConvertModal = false;\n\tsetContext('openConvertModal', () => (showConvertModal = true));\n\tsetContext('closeConvertModal', () => (showConvertModal = false));\n\n\t// Feedback\n\tlet chatLoaded = false; // initial load\n\tlet showChat = false; // toggle hide-show\n\tconst chatToggle = () => {\n\t\tchatLoaded = true;\n\t\tshowChat = !showChat;\n\t\tplaySfx(showChat ? 'shopnav' : 'close');\n\t};\n\tsetContext('chatToggle', chatToggle);\n\t$: hotkeys('o', pageActive, chatToggle);\n</script>\n\n{#if status !== 'ok'}\n\terror bos\n{/if}\n\n{#if animatedBG && pageActive.match(/(index|detail|history)/) && !$onWish}\n\t<video\n\t\ttransition:fade|local={{ duration: 2000 }}\n\t\tmuted\n\t\tloop\n\t\tautoplay\n\t\ttype=\"video/webm\"\n\t\tsrc={$assets['bg.webm']}\n\t\tposter={$assets['wish-background.webp']}\n\t>\n\t\t<track kind=\"captions\" />\n\t</video>\n{/if}\n\n<!-- Main Banner -->\n{#if pageActive === 'index'}\n\t<MainWish />\n\n\t{#if showMenu}\n\t\t<svelte:component this={Menu} />\n\t{/if}\n\n\t<!-- Select Banner -->\n{:else if pageActive === 'allbanners'}\n\t<svelte:component this={AllBanners} />\n\n\t<!-- Wish Details -->\n{:else if pageActive === 'details'}\n\t<svelte:component this={GachaInfo} page=\"details\" />\n\n\t<!-- Wish Record -->\n{:else if pageActive === 'history'}\n\t<svelte:component this={GachaInfo} page=\"history\" />\n\n\t<!-- Inventory -->\n{:else if pageActive === 'inventory'}\n\t<svelte:component this={Inventory} />\n\n\t<!-- Shop -->\n{:else if pageActive === 'shop'}\n\t<svelte:component this={Shop} />\n{/if}\n\n{#if showObtained}\n\t<svelte:component this={ObtainedItem} data={obtainedData} />\n{/if}\n\n<!-- Utility -->\n{#if showConvertModal}\n\t<svelte:component this={ModalConvert} />\n{/if}\n\n{#if chatLoaded}\n\t<svelte:component this={Feedback} show={showChat} />\n{/if}\n\n{#if showWelkinScreen}\n\t<WelkinCheckin />\n{/if}\n\n{#if showWelcomeModal}\n\t{#if shareID}\n\t\t<ModalInitBanner {shareID} />\n\t{:else}\n\t\t<ModalWelcome />\n\t{/if}\n{/if}\n\n<PreloadMeteor />\n\n<style>\n\tvideo {\n\t\tposition: fixed;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tobject-position: 20%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_allbanners/_form-box.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\texport let groupby;\n\tlet showOptions;\n\n\tconst query = getContext('query');\n\tconst handleSearch = getContext('handleSearch');\n\tconst selectGroup = getContext('selectGroup');\n\tconst reverseContext = getContext('reverse');\n\n\tconst reverse = () => {\n\t\treverseContext();\n\t\tshowOptions = false;\n\t};\n\n\tconst toggleOption = (op = null) => {\n\t\tshowOptions = !showOptions;\n\t\tif (op === 'dimiss') return;\n\t\tplaySfx();\n\t};\n\n\tconst select = (val) => {\n\t\tselectGroup(val);\n\t\tshowOptions = false;\n\t};\n\n\tonMount(() => {\n\t\tconst section = document.querySelector('#previous');\n\t\tsection.addEventListener('mousedown', () => (showOptions = false));\n\t});\n</script>\n\n<div class=\"filter\">\n\t<div class=\"row\">\n\t\t<div class=\"search\">\n\t\t\t<input\n\t\t\t\tclass=\"wishinput\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"q\"\n\t\t\t\tid=\"q\"\n\t\t\t\tplaceholder={$t('wish.banner.findBanner')}\n\t\t\t\tvalue={$query}\n\t\t\t\ton:input={handleSearch}\n\t\t\t\ttitle=\"Find by Character's or Weapon's Name (4star or 5star) or Banner Name\"\n\t\t\t/>\n\t\t\t<button><i class=\"gi-search\" /></button>\n\t\t</div>\n\n\t\t<div class=\"selector\" on:mousedown|stopPropagation>\n\t\t\t<div class=\"selected-option\" on:click={toggleOption}>\n\t\t\t\t{$t('wish.banner.group')} / {groupby === 'version' ? $t(`version`) : $t(groupby)}\n\t\t\t\t<i class=\"gi-caret-{showOptions ? 'up' : 'down'}\" />\n\t\t\t</div>\n\n\t\t\t{#if showOptions}\n\t\t\t\t<div class=\"option-list below\" transition:fade={{ duration: 200 }}>\n\t\t\t\t\t{#each ['version', 'character', 'weapon'] as val}\n\t\t\t\t\t\t<button class:selected={groupby == val} on:click={() => select(val)}>\n\t\t\t\t\t\t\t{$t(val)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t\t<button class=\"btn reverse\" title=\"Reverse Group\" on:click={reverse}>\n\t\t\t<i class=\"gi-exchange\" />\n\t\t</button>\n\t</div>\n</div>\n\n<style>\n\t.filter {\n\t\theight: 3rem;\n\t\twidth: 100%;\n\t}\n\n\t:global(.mobile) .filter {\n\t\theight: 2rem;\n\t\tmargin-top: -0.5rem;\n\t}\n\n\t.filter .row {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 0 2%;\n\t}\n\n\t.search {\n\t\twidth: 20rem;\n\t\tposition: relative;\n\t\tmax-width: 60%;\n\t}\n\n\t.search input {\n\t\tfont-size: 0.75rem;\n\t\tpadding-right: 12%;\n\t}\n\t.search button {\n\t\tposition: absolute;\n\t\tright: 5%;\n\t\ttop: 55%;\n\t\ttransform: translateY(-50%);\n\t}\n\n\t.selector {\n\t\twidth: 12rem;\n\t\tmin-width: fit-content;\n\t\tmax-width: 40%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_allbanners/_item-banner.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { getName } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { activeVersion, assets, preloadVersion } from '$lib/store/app-stores';\n\timport { imageCDN } from '$lib/helpers/assets';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\n\texport let groupby = 'version';\n\texport let groupName;\n\texport let data;\n\n\tconst isCustom = groupName.toLowerCase() === 'custom';\n\n\tconst navigate = getContext('navigate');\n\tconst selectBanner = (patch, phase) => {\n\t\tplaySfx();\n\t\t// If select the same banner with the active one, change nothing just back to index\n\t\tconst { patch: activePatch, phase: activePhase } = $activeVersion;\n\t\tnavigate('index');\n\t\tif (activePhase === phase && activePatch === patch) return;\n\n\t\t// Select a banner\n\t\tpreloadVersion.set({ patch, phase });\n\t};\n</script>\n\n<div class=\"group-title\">\n\t{#if isCustom}\n\t\t<h2>{$t('customBanner.byTraveler')} <i class=\"gi-primo-star\" /></h2>\n\t{:else}\n\t\t<h2>\n\t\t\t{#if groupby === 'version'}\n\t\t\t\t{$t('version')} {groupName}\n\t\t\t{:else if groupby === 'weapon'}\n\t\t\t\t{$t(groupName)}\n\t\t\t{:else}\n\t\t\t\t{$t(`${groupName}.name`)}\n\t\t\t{/if}\n\t\t\t<i class=\"gi-primo-star\" />\n\t\t</h2>\n\t{/if}\n</div>\n\n{#each data as { patch, phase, chars, weapons, chronicled }, i (i)}\n\t<a\n\t\thref=\"/\"\n\t\tclass=\"item\"\n\t\tclass:custom={isCustom}\n\t\ttitle={getName(chars.map(({ character }) => character).join(', '))}\n\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 10000) }}\n\t\ton:click={() => selectBanner(patch, phase)}\n\t>\n\t\t<div class=\"banner\">\n\t\t\t<div class:dual={chars?.length > 1}>\n\t\t\t\t{#each chars as { character, bannerName, images }, i}\n\t\t\t\t\t{#if isCustom}\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tuse:lazyLoad={imageCDN(images)}\n\t\t\t\t\t\t\tdata-placeholder={$assets['placeholder-general.webp']}\n\t\t\t\t\t\t\talt={character}\n\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{#key bannerName}\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={$assets[`thumbnail/${bannerName}`]}\n\t\t\t\t\t\t\t\talt={getName(character)}\n\t\t\t\t\t\t\t\tclass=\"dual{i + 1} \"\n\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t{/key}\n\t\t\t\t\t{/if}\n\t\t\t\t{/each}\n\t\t\t</div>\n\n\t\t\t{#if !isCustom}\n\t\t\t\t{@const { bannerName: chName = null } = chronicled || {}}\n\t\t\t\t<div class:dual={!!chName}>\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={$assets[`thumbnail/${weapons.bannerName}`]}\n\t\t\t\t\t\talt={getName(weapons.bannerName)}\n\t\t\t\t\t\tclass=\"dual1\"\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t{#if chName}\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={$assets[`thumbnail/${chName}`]}\n\t\t\t\t\t\t\talt={$t('wish.banner.chronicled')}\n\t\t\t\t\t\t\tclass=\"dual2 chronicled\"\n\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t\t{#if isCustom}\n\t\t\t<h3 class=\"name\">\n\t\t\t\t{chars.map(({ character }) => character).join('')}\n\t\t\t</h3>\n\t\t{:else}\n\t\t\t<h3 class=\"name\">\n\t\t\t\t{chars.map(({ character }) => $t(`${character}.name`)).join(', ')}\n\t\t\t\t& {weapons.list.map(({ name }) => $t(name)).join(', ')}\n\t\t\t</h3>\n\t\t{/if}\n\t</a>\n{/each}\n\n<style>\n\th2 {\n\t\tfont-size: 1.1rem;\n\t\tpadding: 0.2rem 2rem 0.2rem 6rem;\n\t\tmargin-left: -5rem;\n\t\tmargin-top: 1rem;\n\t\tborder-radius: 40px;\n\t\tbackground-color: var(--tertiary-color);\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\tcolor: #383b40;\n\t}\n\n\th2 .gi-primo-star {\n\t\tcolor: #ede5d8;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 50%;\n\t\tline-height: 0;\n\t\ttransform: translate(80%, -50%);\n\t}\n\n\t.item {\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\twidth: 60vh;\n\t\tmax-width: 460px;\n\t\tmargin: 0.5rem 0.5rem 1rem;\n\t\ttext-align: center;\n\t}\n\t.item.custom {\n\t\twidth: 30vh;\n\t}\n\n\t@media screen and (max-width: 1000px) {\n\t\t.item {\n\t\t\twidth: 46%;\n\t\t\tmin-width: 125px;\n\t\t}\n\t\t.item.custom {\n\t\t\twidth: 23%;\n\t\t\tmin-width: 62.5px;\n\t\t}\n\t}\n\n\t:global(.mobile) .item {\n\t\twidth: 65vh;\n\t}\n\t:global(.mobile) .item.custom {\n\t\twidth: 32.5vh;\n\t}\n\n\t.banner {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t}\n\t.banner > div {\n\t\twidth: 49.5%;\n\t\theight: 100%;\n\t\taspect-ratio: 200/99;\n\t\tbackground-image: linear-gradient(90deg, #fbf6ee 30%, #ccc, #fbf6ee);\n\t\tbackground-size: 400%;\n\t\tdisplay: flex;\n\t\tanimation: infinite alternate 2s skeleton;\n\t}\n\t.custom .banner > div {\n\t\twidth: 98%;\n\t}\n\n\t@keyframes skeleton {\n\t\t0% {\n\t\t\tbackground-position: 0 0;\n\t\t}\n\t\t100% {\n\t\t\tbackground-position: 300% 0;\n\t\t}\n\t}\n\n\t.banner > div:not(.dual) img {\n\t\twidth: 100%;\n\t}\n\n\t.dual .dual1 {\n\t\tobject-position: 60%;\n\t\tmargin-right: auto;\n\t\twidth: 40%;\n\t\taspect-ratio: 81.1/99.35;\n\t}\n\t.dual .dual2 {\n\t\tmargin-left: auto;\n\t\tobject-position: 100%;\n\t\twidth: 60% !important;\n\t\taspect-ratio: 121.65/99.35;\n\t}\n\t.dual .dual2.chronicled {\n\t\tobject-position: 95%;\n\t}\n\n\t.item .name {\n\t\twidth: 100%;\n\t\tpadding: 0.3rem;\n\t\tfont-weight: 400;\n\t\tfont-size: 0.97rem;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_allbanners/index.svelte",
    "content": "<script>\n\timport { getContext, onDestroy, onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { flip } from 'svelte/animate';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { allPatch } from '$lib/data/wish-setup.json';\n\timport { APP_TITLE } from '$lib/env';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { assets, isMobile } from '$lib/store/app-stores';\n\timport { getBannerName } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport ItemBanner from './_item-banner.svelte';\n\timport FormBox from './_form-box.svelte';\n\n\tlet allBanners = [];\n\tlet dataToShow = [];\n\tlet customBanner = [];\n\tlet groupby = 'version';\n\tconst query = getContext('query');\n\n\tconst sort = (arr) =>\n\t\tarr.sort((a, b) => {\n\t\t\tif (a[0] > b[0]) return 1;\n\t\t\tif (a[0] < b[0]) return -1;\n\t\t\treturn 0;\n\t\t});\n\n\tconst groupByChars = () => {\n\t\tconst char = {};\n\t\tallBanners.forEach((data) => {\n\t\t\tdata[1].forEach((dt) => {\n\t\t\t\tdt.chars.forEach(({ character }) => {\n\t\t\t\t\tchar[character] = [...(char[character] || []), dt];\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tdataToShow = sort(Object.entries(char));\n\t\treturn;\n\t};\n\n\tconst groupByWeapon = () => {\n\t\tconst weap = {};\n\t\tallBanners.forEach((data) => {\n\t\t\tdata[1].forEach((wp) => {\n\t\t\t\tconst { weapons } = wp;\n\t\t\t\tconst weapon1 = weapons.list[0].name;\n\t\t\t\tconst weapon2 = weapons.list[1].name;\n\t\t\t\tweap[weapon1] = [...(weap[weapon1] || []), wp];\n\t\t\t\tweap[weapon2] = [...(weap[weapon2] || []), wp];\n\t\t\t});\n\t\t});\n\t\tdataToShow = sort(Object.entries(weap));\n\t\treturn;\n\t};\n\n\tconst groupData = (group) => {\n\t\tif (group === 'version') dataToShow = allBanners;\n\t\tif (group === 'character') return groupByChars();\n\t\tif (group === 'weapon') return groupByWeapon();\n\t};\n\n\tconst selectGroup = (group = null) => {\n\t\tplaySfx();\n\t\tif (!group) return;\n\t\tgroupby = group;\n\t\tgroupData(group);\n\t};\n\tsetContext('selectGroup', selectGroup);\n\n\tconst reverse = () => {\n\t\tplaySfx();\n\t\tdataToShow = dataToShow.reverse();\n\t};\n\tsetContext('reverse', reverse);\n\n\tconst translateWp = (bannerName, featured) => {\n\t\tconst { number } = getBannerName(bannerName);\n\t\tconst tmp = [`${$t(`wish.banner.name.epitome-invocation`)}-${number}`];\n\t\tfeatured.forEach(({ name }) => {\n\t\t\ttmp.push($t(name));\n\t\t\ttmp.push(name);\n\t\t});\n\t\treturn tmp;\n\t};\n\n\tconst translateChar = (item) => {\n\t\tconst tmp = [];\n\t\tconst translate = (name, character) => {\n\t\t\tconst banner = getBannerName(name);\n\t\t\ttmp.push(character);\n\t\t\ttmp.push(name);\n\t\t\ttmp.push($t(`${character}.name`));\n\t\t\ttmp.push(`${$t(`wish.banner.name.${banner.name}`)}-${banner.number}`);\n\t\t};\n\n\t\titem.forEach(({ bannerName, character }) => translate(bannerName, character));\n\t\treturn tmp;\n\t};\n\n\tconst generateQueryKey = (ver, phase, banners) => {\n\t\tconst { events, weapons, chronicled: ch } = banners;\n\t\tconst { rateup, bannerName, featured } = weapons;\n\n\t\tconst translatedRateupWp = rateup.map((wp) => $t(wp));\n\t\tconst translatedBannerWp = translateWp(bannerName, featured);\n\t\tconst translatedRateupCh = events.rateup.map((ch) => $t(`${ch}.name`));\n\t\tconst translatedBannerCh = translateChar(events.featured);\n\t\tconst queryKey = [\n\t\t\t...translatedRateupWp,\n\t\t\t...translatedBannerWp,\n\t\t\t...translatedRateupCh,\n\t\t\t...translatedBannerCh,\n\t\t\t...events.rateup,\n\t\t\t...rateup\n\t\t];\n\n\t\tconst result = {\n\t\t\tqueryKey,\n\t\t\tphase,\n\t\t\tpatch: ver,\n\t\t\trateup: [...events.rateup, ...weapons.rateup],\n\t\t\tweapons: { bannerName: weapons.bannerName, list: weapons.featured },\n\t\t\tchars: events.featured\n\t\t};\n\n\t\tif (ch) result.chronicled = { bannerName: ch?.bannerName };\n\t\treturn result;\n\t};\n\n\tconst checkAllBanner = async () => {\n\t\tconst patchList = [];\n\t\tallPatch.forEach((patch) => {\n\t\t\tconst json = import(`../../lib/data/banners/events/${patch.toFixed(1)}.json`);\n\t\t\tpatchList.push(json);\n\t\t});\n\n\t\tconst promise = await Promise.all(patchList);\n\t\tconst data = promise.map(({ data, patch }) => {\n\t\t\tpatch = patch.toFixed(1);\n\t\t\tdata = data.map(({ phase, banners }) => generateQueryKey(patch, phase, banners));\n\t\t\treturn [patch.toString(), data];\n\t\t});\n\n\t\tallBanners = data.reverse();\n\t\tif ($query.trim().length > 0) return handleSearch($query);\n\t\tdataToShow = allBanners;\n\t\treturn data;\n\t};\n\n\tconst handleSearch = (e) => {\n\t\tgroupby = 'version';\n\t\tconst queryValue = typeof e === 'string' ? e : e.target.value;\n\t\tquery.set(queryValue);\n\t\tconst escapedQuery = queryValue.toLocaleLowerCase().trim().replace(/'/, '');\n\t\tif (escapedQuery.length < 1) return (dataToShow = allBanners);\n\n\t\tconst check = (t) => {\n\t\t\tconst text = t.toLocaleLowerCase();\n\t\t\treturn text.replace(/_/g, '').replace(/-/g, ' ').includes(escapedQuery);\n\t\t};\n\n\t\tconst newArr = allBanners.map(([a, b]) => {\n\t\t\tconst filtered = b.filter(({ queryKey }) => {\n\t\t\t\tconst checkQueryKey = queryKey.map((name) => check(name));\n\t\t\t\treturn checkQueryKey.includes(true);\n\t\t\t});\n\n\t\t\treturn [a, filtered];\n\t\t});\n\t\tdataToShow = newArr.filter(([, b]) => b.length > 0);\n\t};\n\tsetContext('handleSearch', handleSearch);\n\n\tconst readSavedCustomBanner = async () => {\n\t\tconst data = await BannerManager.getListByStatus('cloud');\n\t\tconst proccessed = data.map(({ bannerName, hostedImages, character, itemID, rateup }) => {\n\t\t\tconst { thumbnail } = hostedImages || {};\n\t\t\tconst chars = [{ bannerName, character, images: thumbnail }];\n\t\t\tconst itemData = { rateup, chars, phase: itemID, patch: 'Custom' };\n\t\t\treturn itemData;\n\t\t});\n\t\tcustomBanner = ['Custom', proccessed];\n\t};\n\n\tconst loadData = async () => {\n\t\tawait checkAllBanner();\n\t\tawait readSavedCustomBanner();\n\t\treturn 'ok';\n\t};\n\n\tlet content;\n\tonMount(async () => {\n\t\tplaySfx('prevbanner');\n\t\tOverlayScrollbars(content, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n\n\tonDestroy(() => query.set(''));\n\n\tconst navigate = getContext('navigate');\n\tconst handleClose = () => {\n\t\tnavigate('index');\n\t\tplaySfx('close');\n\t};\n\n\t// Shortcut\n\thotkeys('esc', 'allbanners', (e) => {\n\t\te.preventDefault();\n\t\thandleClose();\n\t});\n</script>\n\n<svelte:head>\n\t<title>{$t('wish.banner.allBanner')} | {$t('title', { default: APP_TITLE })}</title>\n</svelte:head>\n\n<section id=\"previous\" style=\"background-image: url({$assets['constellation.webp']});\">\n\t<header transition:fly={{ y: -20 }}>\n\t\t<h1>{$t('wish.banner.previous')}</h1>\n\t\t<button class=\"close\" on:click={handleClose}>\n\t\t\t<i class=\"gi-close\" />\n\t\t</button>\n\t</header>\n\n\t<div class=\"body\" transition:fade={{ duration: 300 }}>\n\t\t<FormBox {groupby} />\n\t\t<div class=\"content\" bind:this={content}>\n\t\t\t<div id=\"content\">\n\t\t\t\t{#await loadData() then _}\n\t\t\t\t\t{@const showCustom = customBanner[1].length > 0 && !$query}\n\t\t\t\t\t{@const bn = showCustom ? [customBanner, ...dataToShow] : dataToShow}\n\n\t\t\t\t\t{#if $isMobile}\n\t\t\t\t\t\t{#each bn as [groupName, data]}\n\t\t\t\t\t\t\t<div in:fade={{ duration: 300 }} class:custom={groupName.match(/custom/gi)}>\n\t\t\t\t\t\t\t\t<ItemBanner {data} {groupName} {groupby} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{#each bn as [groupName, data], i (groupName)}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tanimate:flip={{ duration: (i) => 10 * Math.sqrt(i) }}\n\t\t\t\t\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 20000) }}\n\t\t\t\t\t\t\t\tclass:custom={groupName.match(/custom/gi)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ItemBanner {data} {groupName} {groupby} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t{/if}\n\t\t\t\t{/await}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tbackground-size: cover;\n\t\tcolor: var(--tertiary-color);\n\t\tfont-size: 0.97rem;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\th1 {\n\t\tcolor: var(--tertiary-color);\n\t}\n\theader {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t\tpadding: 15px 2%;\n\t}\n\t:global(.mobile) header {\n\t\tpadding: 5px 2%;\n\t}\n\n\tbutton:hover {\n\t\tbackground-color: var(--tertiary-color);\n\t}\n\n\t.close {\n\t\tmargin-left: auto;\n\t}\n\t:global(.mobile) .close {\n\t\tmargin-right: 4.5%;\n\t}\n\n\t.body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.content {\n\t\tpadding: 1rem 2%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t}\n\n\t#content > .custom {\n\t\tborder-bottom: 1px solid #ccc;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/BannerArt.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport Zoomist from 'zoomist';\n\timport RateUpArt from './RateUpArt.svelte';\n\n\texport let onBannerEdit = false;\n\texport let artURL = '';\n\texport let rateup = [];\n\texport let bannerPosition = { scale: 2, x: 0, y: 0 };\n\n\tlet mainArt;\n\tlet zoomist;\n\tlet clientWidth = 0;\n\tlet clientHeight = 0;\n\n\tlet zoomPosition = bannerPosition || {};\n\tconst zoomOption = {\n\t\tinitScale: bannerPosition.scale || 2,\n\t\tmaxScale: 5,\n\t\tslider: {\n\t\t\tel: '.zoom-slider',\n\t\t\tdirection: 'vertical'\n\t\t},\n\t\tzoomer: {\n\t\t\tinEl: '.zoomin',\n\t\t\toutEl: '.zoomout',\n\t\t\tresetEl: null,\n\t\t\tdisabledClass: 'zoomer-disabled'\n\t\t}\n\t};\n\n\tconst calculatePosition = () => {\n\t\tconst { x: X = 0, y: Y = 0 } = zoomPosition;\n\n\t\t// get px value from perentage\n\t\tconst x = (X / 100) * clientWidth;\n\t\tconst y = (Y / 100) * clientHeight;\n\t\treturn { x, y };\n\t};\n\n\tconst editBanner = getContext('editBanner');\n\tconst setPosition = getContext('setPosition');\n\n\tconst getPropVal = (el, key) => {\n\t\tconst prop = getComputedStyle(el).getPropertyValue(key);\n\t\tconst num = prop.split('px')[0] || 0;\n\t\treturn parseFloat(num);\n\t};\n\n\tconst setCoordinate = () => {\n\t\tconst options = { draggable: false, wheelable: false, pinchable: false };\n\t\tconst updatedOption = { ...zoomOption, ...options };\n\n\t\t// Get Image Position in Percentage\n\t\tconst zoomistImage = mainArt.querySelector('.zoomist-image');\n\t\tconst xPx = getPropVal(zoomistImage, '--translate-x');\n\t\tconst yPx = getPropVal(zoomistImage, '--translate-y');\n\t\tconst x = (xPx / clientWidth) * 100;\n\t\tconst y = (yPx / clientHeight) * 100;\n\t\tzoomPosition = { x, y };\n\t\tsetPosition('banner', { scale: zoomOption.initScale, x, y });\n\n\t\tzoomist.update(updatedOption);\n\t\tzoomist.moveTo(calculatePosition());\n\t\teditBanner(false);\n\t};\n\n\tconst zoomistEvent = () => {\n\t\tzoomist.moveTo(calculatePosition());\n\t\tzoomist.on('zoom', (e, scale) => (zoomOption.initScale = scale));\n\t};\n\n\tconst editPosition = () => {\n\t\tif (!zoomist) return;\n\t\tzoomist.update(zoomOption);\n\t\tzoomistEvent();\n\t};\n\t$: !onBannerEdit || editPosition();\n\n\tonMount(() => {\n\t\tzoomist = new Zoomist(mainArt, zoomOption);\n\t\tzoomistEvent();\n\t});\n</script>\n\n<RateUpArt {rateup} {onBannerEdit} />\n\n<div class=\"main-art\" class:onBannerEdit bind:clientHeight bind:clientWidth>\n\t<div class=\"zoom-slider\" />\n\t<div class=\"zoomer\">\n\t\t<button class=\"zoomin\"><i class=\"gi-zoom-in\" /></button>\n\t\t<button class=\"zoomout\"><i class=\"gi-zoom-out\" /></button>\n\t</div>\n\t<button class=\"setpos\" on:click={setCoordinate}><i class=\"gi-check\" /></button>\n\n\t<div class=\"zoomist-container\" bind:this={mainArt}>\n\t\t<div class=\"zoomist-wrapper\">\n\t\t\t<div class=\"zoomist-image\">\n\t\t\t\t<img src={artURL} alt=\"Uploaded Splash Art\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.main-art {\n\t\t--zoomist-slider-bar-side: calc(0.003 * var(--content-width));\n\t\t--zoomist-slider-bar-size: calc(0.4 * var(--content-height));\n\t\t--zoomist-slider-button-size: calc(0.015 * var(--content-width));\n\t\t--zoomist-slider-bar-color: #e9a540;\n\t}\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tobject-position: center;\n\t}\n\n\t.main-art,\n\t.zoomist-wrapper,\n\t.zoomist-image {\n\t\twidth: 100%;\n\t\theight: fit-content;\n\t\taspect-ratio: 1080/533;\n\t}\n\n\t.main-art {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t}\n\n\t.zoomist-wrapper {\n\t\tcursor: move;\n\t\tbackground-color: unset;\n\t\tmask-image: linear-gradient(to right, transparent 15%, black 40%, black 70%, transparent 85%);\n\t}\n\n\t.zoom-slider {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tpadding: 2.5%;\n\t\tz-index: +20;\n\t\tdisplay: none;\n\t}\n\n\t.zoomer {\n\t\tposition: absolute;\n\t\tz-index: +20;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tdisplay: none;\n\t}\n\n\t.zoomer button,\n\t.setpos {\n\t\tfont-size: calc(0.02 * var(--content-width));\n\t\twidth: calc(0.06 * var(--content-width));\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tcolor: #fff;\n\t\topacity: 0.75;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.setpos:hover,\n\t.zoomer button:hover:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t}\n\t.setpos:active,\n\t.zoomer button:active:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t\ttransform: scale(0.9);\n\t}\n\n\t.zoomer :global(button.zoomer-disabled) {\n\t\topacity: 0.6;\n\t\tcolor: rgba(255, 255, 255, 0.5);\n\t}\n\n\t.setpos {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tz-index: +20;\n\t\tdisplay: none;\n\t}\n\n\t.onBannerEdit .zoomer {\n\t\tdisplay: flex;\n\t}\n\t.onBannerEdit .zoom-slider,\n\t.onBannerEdit .setpos {\n\t\tdisplay: unset;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/RateUpArt.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let rateup = [];\n\texport let onBannerEdit = false;\n</script>\n\n<div class=\"rateup-art\" class:onBannerEdit>\n\t<div class=\"wrapper\">\n\t\t{#each rateup as name, i}\n\t\t\t{#if name}\n\t\t\t\t<div class=\"art art-{i + 1}\">\n\t\t\t\t\t<img src={$assets[`nobg/${name}`]} alt={$t(`${name}.name`)} />\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t{/each}\n\t</div>\n</div>\n\n<style>\n\t.rateup-art {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: inherit;\n\t\taspect-ratio: 1080/533;\n\t\tz-index: +4;\n\t\tpointer-events: none;\n\t}\n\n\t.rateup-art.onBannerEdit {\n\t\topacity: 0.4;\n\t}\n\n\t.wrapper {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmask-image: linear-gradient(to left, black 25%, transparent 35%);\n\t\toverflow: hidden;\n\t}\n\n\t.art {\n\t\tposition: absolute;\n\t\twidth: 45%;\n\t\theight: auto;\n\t\tmask-image: linear-gradient(to top, transparent 20%, black 50%, black 95%, transparent);\n\t}\n\n\t.art img {\n\t\twidth: 100%;\n\t}\n\n\t.art-1 {\n\t\ttop: -5%;\n\t\tright: -5%;\n\t}\n\t.art-2 {\n\t\ttop: 15%;\n\t\tright: -12%;\n\t}\n\t.art-3 {\n\t\ttop: 45%;\n\t\tright: -3%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_details-editor.svelte",
    "content": "<script>\n\timport { fade, fly } from 'svelte/transition';\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\n\timport ToolTip from '$lib/components/ToolTip.svelte';\n\timport InventoryItem from '../../_inventory/_inventory-item.svelte';\n\timport RateupPicker from './_rateup-picker.svelte';\n\timport PreviewGenerator from './_preview-generator.svelte';\n\n\texport let rateup = [];\n\texport let bannerName = '';\n\texport let character = '';\n\texport let charTitle = '';\n\texport let preview = '';\n\texport let watermark = '';\n\n\tlet showCharPicker = false;\n\tlet charPosition = -1;\n\tlet headerHeight;\n\tlet rowWidth;\n\t$: itemWidth = rowWidth / 4;\n\n\tconst editInfo = getContext('editInfo');\n\tconst setBannerName = getContext('setBannerName');\n\tconst setCharName = getContext('setCharName');\n\tconst setCharTitle = getContext('setCharTitle');\n\tconst setRateup = getContext('setRateup');\n\tconst setWatermark = getContext('setWatermark');\n\n\tconst typeBannerName = ({ target }) => {\n\t\tconst { value } = target;\n\t\tsetBannerName(value);\n\t};\n\n\tconst typeCharName = ({ target }) => {\n\t\tconst { value } = target;\n\t\tsetCharName(value);\n\t};\n\n\tconst typeCharTitle = ({ target }) => {\n\t\tconst { value } = target;\n\t\tsetCharTitle(value);\n\t};\n\n\tconst typeWatermark = ({ target }) => {\n\t\tconst { value } = target;\n\t\tsetWatermark(value);\n\t};\n\n\tconst closeInfoEditor = () => {\n\t\teditInfo(false);\n\t\tplaySfx('close');\n\t};\n\n\tconst openRateupPicker = (index) => {\n\t\tshowCharPicker = true;\n\t\tcharPosition = index;\n\t\tplaySfx('click');\n\t};\n\n\t// Rateup Picker\n\t$: rateUpList = ['', '', ''].map((x, i) => rateup[i] || '');\n\tconst selectChar = (charName) => {\n\t\tshowCharPicker = false;\n\t\tif (!charName) return;\n\t\tif (rateup.includes(charName)) return;\n\t\tconst newArray = rateUpList.map((v, i) => (i !== charPosition ? v : charName));\n\t\tsetRateup(newArray);\n\t\tcharPosition = -1;\n\t};\n\tsetContext('selectChar', selectChar);\n\n\tconst removeChar = (charName) => {\n\t\tplaySfx('close');\n\t\tconst afterRemoved = rateUpList.map((v) => (charName !== v ? v : ''));\n\t\tsetRateup(afterRemoved);\n\t\tcharPosition = -1;\n\t};\n</script>\n\n<section transition:fade={{ duration: 250 }} on:mousedown|self={closeInfoEditor}>\n\t<div\n\t\tclass=\"wrapper vision-picker\"\n\t\tclass:pickerActive={showCharPicker}\n\t\tstyle=\"--bg-icon:url('{$assets['modal-bg-icon.png']}'); --header-height:{headerHeight}px;\"\n\t\ttransition:fly={{ duration: 250, x: 100 }}\n\t>\n\t\t<div class=\"header\" bind:clientHeight={headerHeight}>\n\t\t\t<h1>{$t('customBanner.editBanner')}</h1>\n\t\t\t<div class=\"close-button\">\n\t\t\t\t<button class=\"close\" on:click={closeInfoEditor}>\n\t\t\t\t\t<i class=\"gi-close\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"body\" bind:clientWidth={rowWidth} style=\"--item-width:{itemWidth}px\">\n\t\t\t<div class=\"body-wrapper\">\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<label for=\"bannerName\">\n\t\t\t\t\t\t<span> {$t('customBanner.bannerName')}: * </span>\n\t\t\t\t\t\t<ToolTip>{$t('customBanner.titleNote')}</ToolTip>\n\t\t\t\t\t</label>\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tid=\"bannerName\"\n\t\t\t\t\t\t\tplaceholder={$t('customBanner.titleOfBanner')}\n\t\t\t\t\t\t\tvalue={bannerName}\n\t\t\t\t\t\t\ton:input={typeBannerName}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<label for=\"charName\">{$t('customBanner.charName')}: *</label>\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tid=\"charName\"\n\t\t\t\t\t\t\tplaceholder={$t('customBanner.charName')}\n\t\t\t\t\t\t\tvalue={character}\n\t\t\t\t\t\t\ton:input={typeCharName}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<label for=\"charTitle\">{$t('customBanner.charTitle')}:</label>\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tid=\"charTitle\"\n\t\t\t\t\t\t\tplaceholder={$t('customBanner.charTitle')}\n\t\t\t\t\t\t\tvalue={charTitle}\n\t\t\t\t\t\t\ton:input={typeCharTitle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<label for=\"watermark\">{$t('customBanner.watermark')}:</label>\n\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\tid=\"watermark\"\n\t\t\t\t\t\t\tplaceholder=\"Artwork By @Traveler\"\n\t\t\t\t\t\t\tvalue={watermark}\n\t\t\t\t\t\t\ton:input={typeWatermark}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t<label for=\"rateup\">\n\t\t\t\t\t\t\t<span> {$t('customBanner.rateupChar')}: * </span>\n\t\t\t\t\t\t\t<ToolTip>{$t('customBanner.rateupNote')}</ToolTip>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t{#each rateUpList as _, i}\n\t\t\t\t\t\t\t{@const { name, vision } = getCharDetails(rateup[i]) || {}}\n\t\t\t\t\t\t\t<div class=\"rateup-item\" class:blank={!name}>\n\t\t\t\t\t\t\t\t{#if name}\n\t\t\t\t\t\t\t\t\t<button class=\"remove\" on:click={() => removeChar(name)}>\n\t\t\t\t\t\t\t\t\t\t<i class=\"gi-delete\" /></button\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<button class=\"item-wrapper\">\n\t\t\t\t\t\t\t\t\t\t{#key name}\n\t\t\t\t\t\t\t\t\t\t\t<InventoryItem\n\t\t\t\t\t\t\t\t\t\t\t\titemdata={{ localName: $t(`${name}.name`), name, vision, rarity: 4 }}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{/key}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<button class=\"add\" on:click={() => openRateupPicker(i)}>\n\t\t\t\t\t\t\t\t\t\t<i class=\"gi-plus\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"field-group\">\n\t\t\t\t\t<PreviewGenerator {preview} />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{#if showCharPicker}\n\t\t\t\t<RateupPicker exclude={rateup} />\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\tposition: fixed;\n\t\tz-index: +20;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: var(--screen-width);\n\t\theight: var(--screen-height);\n\t\tbackground-color: rgba(0, 0, 0, 0.1);\n\t\tbackdrop-filter: blur(10px);\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n\n\t.wrapper {\n\t\theight: 100%;\n\t\twidth: 500px;\n\t\tmax-width: 100%;\n\t\tpadding: 1%;\n\t\tbackground-color: #fbf6ee;\n\t\tbackground-image: var(--bg-icon);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 75%;\n\t\tbackground-position: 50% 60%;\n\t\tcolor: var(--text-color);\n\t}\n\n\t:global(.mobile) .wrapper {\n\t\twidth: 350px;\n\t}\n\n\t.header {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t\tmargin-bottom: 2%;\n\t}\n\n\th1 {\n\t\tfont-size: calc(0.2 * var(--item-width));\n\t}\n\n\t.body {\n\t\theight: calc(100% - var(--header-height));\n\t\tpadding-bottom: 2%;\n\t\tposition: relative;\n\t}\n\t.body-wrapper {\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.field-group {\n\t\tpadding: 1%;\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t\tpadding: 0 1.5rem;\n\t\tmargin-bottom: 2%;\n\t\theight: 3rem;\n\t\tdisplay: block;\n\t\tborder-radius: 3rem;\n\t\tborder: #c3b8a5 2px solid;\n\t\tbackground-color: var(--tertiary-color);\n\t\toutline: none;\n\t\ttransition: all 0.2s;\n\t}\n\n\tinput:focus {\n\t\tbox-shadow: 0 0 0.4rem rgba(227, 149, 48, 0.7);\n\t}\n\n\tinput:disabled {\n\t\tbackground-color: transparent;\n\t\topacity: 0.7;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t\tmargin-bottom: 2%;\n\t}\n\n\t.rateup-item {\n\t\tmargin: 1%;\n\t\taspect-ratio: 8.75 / 10;\n\t\twidth: 25%;\n\t\tmax-width: 135px;\n\t\tposition: relative;\n\t}\n\n\t.rateup-item .item-wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.rateup-item .remove {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translate(25%, -25%);\n\t\tz-index: +1;\n\t\tbackground-color: #ff1c1c;\n\t\tcolor: #fff;\n\t\tline-height: 0;\n\t\tpadding: 7%;\n\t\tborder-radius: 100%;\n\t\topacity: 0.8;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.rateup-item .remove:hover {\n\t\topacity: 1;\n\t\tbackground-color: #cb1717;\n\t}\n\t.remove:active {\n\t\ttransform: translate(25%, -25%) scale(0.9);\n\t}\n\n\t.rateup-item.blank {\n\t\tborder: 2px dashed #c3b8a5;\n\t\tborder-radius: 5%;\n\t\ttransition: all 0.25s;\n\t}\n\t.rateup-item.blank:hover {\n\t\tborder-color: #857d71;\n\t}\n\n\t.add {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcolor: #c3b8a5;\n\t\tline-height: 0;\n\t\tfont-size: calc(0.25 * var(--item-width));\n\t\ttransition: all 0.25s;\n\t}\n\n\t.add:hover {\n\t\tcolor: #857d71;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_info-face-button.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\texport let onBannerEdit = false;\n\texport let faceURL = '';\n\n\tconst editInfo = getContext('editInfo');\n\tconst changeFace = getContext('changeFace');\n\tconst editSplashArt = getContext('editSplashArt');\n\tconst allowedType = 'image/png, image/webp, image/jpeg';\n\n\tconst showInfoEditor = () => {\n\t\teditInfo(true);\n\t\tplaySfx('modal');\n\t};\n\n\tconst showSplashArtEdit = () => {\n\t\teditSplashArt(true);\n\t\tplaySfx();\n\t};\n\n\tconst handleImage = (e) => {\n\t\ttry {\n\t\t\tconst file = e.target.files[0];\n\t\t\tconst isImage = allowedType.match(file.type);\n\n\t\t\tif (!isImage) {\n\t\t\t\tconst message = $t('customBanner.notAnImage');\n\t\t\t\tpushToast({ message });\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\n\t\t\tconst fileSize = file.size;\n\t\t\tconst maxSize = 1024 * 1024 * 2; // 2MB\n\t\t\tif (fileSize > maxSize) {\n\t\t\t\tconst message = $t('customBanner.imageTooLarge', { values: { maxSize: '2MB' } });\n\t\t\t\tpushToast({ message, timeout: 5000 });\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\n\t\t\tchangeFace(file);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\t};\n</script>\n\n<div class=\"info\" class:onBannerEdit>\n\t<div class=\"pic\">\n\t\t<label class=\"face\" for=\"faceInput\" on:mousedown={() => playSfx()}>\n\t\t\t<div class=\"overlay\">\n\t\t\t\t<i class=\"gi-picture\" />\n\t\t\t\t<span>{$t('customBanner.faceIcon')}</span>\n\t\t\t</div>\n\n\t\t\t{#if faceURL}\n\t\t\t\t<img src={faceURL} alt=\"Face\" crossorigin=\"anonymous\" />\n\t\t\t{:else}\n\t\t\t\t<img\n\t\t\t\t\tclass=\"placeholder\"\n\t\t\t\t\tsrc={$assets['placeholder-face.webp']}\n\t\t\t\t\talt=\"face placeholder\"\n\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t</label>\n\n\t\t<input\n\t\t\tclass=\"inputFile\"\n\t\t\ttype=\"file\"\n\t\t\tid=\"faceInput\"\n\t\t\taccept={allowedType}\n\t\t\ton:change={handleImage}\n\t\t/>\n\t</div>\n\n\t<div class=\"customize\">\n\t\t<button class=\"detail\" on:click={showInfoEditor}>\n\t\t\t<i class=\"gi-pen\" />\n\t\t\t{$t('customBanner.editInfo')}\n\t\t</button>\n\t\t<br />\n\t\t<button class=\"splashart\" on:click={showSplashArtEdit}>\n\t\t\t<i class=\"gi-pen\" />\n\t\t\t{$t('customBanner.adjustSplashArt')}\n\t\t</button>\n\t</div>\n</div>\n\n<style>\n\t.info {\n\t\tposition: absolute;\n\t\tz-index: +11;\n\t\tleft: 5%;\n\t\tbottom: 5%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.info.onBannerEdit {\n\t\tpointer-events: none;\n\t\topacity: 0.5;\n\t}\n\n\t.face {\n\t\tdisplay: flex;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #efeeee;\n\t\tborder: #c5b894 calc(0.005 * var(--content-height)) solid;\n\t\tborder-radius: 5%;\n\t\twidth: calc(0.18 * var(--content-height));\n\t\tposition: relative;\n\t}\n\n\t.inputFile {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\topacity: 0;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t}\n\n\t.overlay {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tborder: #e7e4de 0.1rem dashed;\n\t\tposition: absolute;\n\t\tz-index: +2;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\ttext-align: center;\n\t\talign-items: center;\n\t\topacity: 0;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.overlay i {\n\t\tcolor: rgba(255, 255, 255, 0.5);\n\t\tline-height: 0;\n\t\tfont-size: calc(2.5 / 100 * var(--content-width));\n\t}\n\t.overlay span {\n\t\tcolor: #fff;\n\t\tfont-size: calc(1.3 / 100 * var(--content-width));\n\t\tmargin-top: 10%;\n\t}\n\n\t.face:hover .overlay {\n\t\topacity: 1;\n\t}\n\n\t.face img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t}\n\n\timg.placeholder {\n\t\topacity: 0.5;\n\t}\n\n\t.customize {\n\t\ttransform: translateX(calc(0.02 * var(--content-height)));\n\t}\n\n\t.customize button {\n\t\tbackground-color: #efeeee;\n\t\tcolor: rgba(0, 0, 0, 0.5);\n\t\tborder-radius: 20px;\n\t\tborder: #e2d7b6 0.1rem solid;\n\t\tfont-size: calc(1.5 / 100 * var(--content-width));\n\t\ttransition: background 0.25s, color 0.25s;\n\t\tpadding: calc(0.5 / 100 * var(--content-width)) calc(2.5 / 100 * var(--content-width));\n\t\ttransition: all 0.25s;\n\t}\n\n\t.customize button:hover {\n\t\tbackground-color: #e0ddd4;\n\t\tcolor: rgba(0, 0, 0, 1);\n\t}\n\n\t.customize button:active {\n\t\ttransform: scale(0.95);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_preview-generator.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { getContext } from 'svelte';\n\timport { toBlob } from 'html-to-image';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\n\texport let preview = '';\n\n\tconst changeThumbnail = getContext('changeThumbnail');\n\tconst filter = (node) => {\n\t\tconst exclude = ['vision-picker', 'hoverable', 'customize', 'outfit-toggle'];\n\t\tif (node.classList) return !exclude.some((cl) => node.classList.contains(cl));\n\t\treturn true;\n\t};\n\n\tconst generate = async () => {\n\t\tplaySfx();\n\t\tconst node = document.querySelector('#cardEditor');\n\t\tconst blob = await toBlob(node, { canvasHeight: 106.6, canvasWidth: 216, filter });\n\t\tchangeThumbnail(blob);\n\t};\n</script>\n\n<div class=\"row\">\n\t<label for=\"bannerdesign\">{$t('customBanner.preview')}</label>\n\t<ButtonGeneral on:click={generate}>{$t('customBanner.generateImage')}</ButtonGeneral>\n</div>\n<div class=\"row\">\n\t{#if preview}\n\t\t<img src={preview} alt=\"Preview Banner\" crossorigin=\"anonymous\" />\n\t{/if}\n</div>\n\n<style>\n\t.row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t\tmargin-bottom: 2%;\n\t}\n\n\timg {\n\t\tmax-width: 100%;\n\t\theight: auto;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_rateup-picker.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { fly } from 'svelte/transition';\n\timport { getContext } from 'svelte';\n\timport { viewportHeight } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getAllChars } from '$lib/helpers/gacha/wishBase';\n\timport InventoryItem from '../../_inventory/_inventory-item.svelte';\n\n\texport let exclude = [];\n\tconst chars = getAllChars(4).filter(({ name }) => !exclude.includes(name));\n\tconst selectChar = getContext('selectChar');\n\tconst pickChar = (char) => {\n\t\tselectChar(char);\n\t\tplaySfx('click2');\n\t};\n</script>\n\n<div class=\"picker\" transition:fly={{ y: $viewportHeight, duration: 250 }}>\n\t<div class=\"row\">\n\t\t{#each chars as char}\n\t\t\t<button class=\"item\" on:click={() => pickChar(char.name)}>\n\t\t\t\t<InventoryItem itemdata={{ ...char, localName: $t(`${char.name}.name`) }} />\n\t\t\t</button>\n\t\t{/each}\n\t</div>\n</div>\n\n<style>\n\t.picker {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #e2dbce;\n\t\tz-index: +1;\n\t\toverflow-y: auto;\n\t\tpadding: 1% 0 5%;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.item {\n\t\tmargin: calc(0.025 * var(--item-width));\n\t\taspect-ratio: 8.75 / 10;\n\t\twidth: 23.5%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_splashart-form.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { getContext } from 'svelte';\n\timport { isMobile } from '$lib/store/app-stores';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\texport let onBannerEdit = false;\n\tlet onDrag = false;\n\n\tconst allowedType = 'image/png, image/webp, image/jpeg';\n\tconst editBanner = getContext('editBanner');\n\tconst changeImage = getContext('changeArt');\n\n\tconst dragNdrop = (e) => {\n\t\ttry {\n\t\t\tconst file = e.target.files[0];\n\t\t\tconst isImage = allowedType.match(file.type);\n\t\t\tif (!isImage) {\n\t\t\t\tconst message = $t('customBanner.notAnImage');\n\t\t\t\tpushToast({ message });\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\n\t\t\tconst fileSize = file.size;\n\t\t\tconst maxSize = 1024 * 1024 * 2; // 2MB\n\t\t\tif (fileSize > maxSize) {\n\t\t\t\tconst message = $t('customBanner.imageTooLarge', { values: { maxSize: '2MB' } });\n\t\t\t\tpushToast({ message, timeout: 5000 });\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\n\t\t\tchangeImage(file);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\t};\n</script>\n\n<div\n\tclass=\"hoverable\"\n\tclass:isMobile={$isMobile}\n\tclass:onBannerEdit\n\tclass:onDrag\n\ton:dragenter={() => (onDrag = true)}\n>\n\t<div class=\"wrapper\">\n\t\t{#if !onDrag}\n\t\t\t<label class=\"mainart button\" for=\"uploadFile\" transition:fade|local>\n\t\t\t\t<i class=\"gi-picture\" />\n\t\t\t\t<span>{$t('customBanner.changeSplashArt')}</span>\n\t\t\t</label>\n\n\t\t\t<button class=\"button move\" on:click={editBanner} transition:fade|local>\n\t\t\t\t<i class=\"gi-move\" /> <span>{$t('customBanner.move')}</span>\n\t\t\t</button>\n\t\t{/if}\n\t</div>\n\t{#if onDrag}\n\t\t<div class=\"drophere\">\n\t\t\t<div class=\"drop button\">\n\t\t\t\t<i class=\"gi-picture\" />\n\t\t\t\t<span>{$t('customBanner.dropHere')}</span>\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n\n\t<input\n\t\tclass=\"inputFile\"\n\t\ttype=\"file\"\n\t\tid=\"uploadFile\"\n\t\taccept={allowedType}\n\t\ton:change={dragNdrop}\n\t\ton:dragleave={() => (onDrag = false)}\n\t\ton:drop={() => (onDrag = false)}\n\t/>\n</div>\n\n<style>\n\t.hoverable {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: +11;\n\t\ttransition: all 0.25s;\n\t\topacity: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n\n\t.hoverable.onBannerEdit {\n\t\tpointer-events: none;\n\t\topacity: 0;\n\t}\n\n\t.hoverable:hover:not(.onBannerEdit),\n\t.hoverable.onDrag,\n\t.hoverable.isMobile:not(.onBannerEdit),\n\t.wrapper:hover,\n\t.isMobile .wrapper {\n\t\topacity: 1;\n\t}\n\n\t.hoverable.onDrag {\n\t\tz-index: 20;\n\t}\n\n\t.wrapper {\n\t\twidth: 50%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\talign-items: flex-end;\n\t\tflex-direction: column;\n\t\tbackground-image: linear-gradient(45deg, transparent 50%, rgba(0, 0, 0, 0.5));\n\t\topacity: 0;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.button {\n\t\tcolor: rgba(255, 255, 255, 0.8);\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tborder: #e7e4de 0.1rem dashed;\n\t\tpadding: 2% 3%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tborder-radius: 2%;\n\t\tmargin: 1%;\n\t\tfont-size: calc(1.5 / 100 * var(--content-width));\n\t\ttransition: all 0.25s;\n\t}\n\n\t.button.move {\n\t\tborder-style: solid;\n\t\tpadding: 1%;\n\t}\n\n\t.button i {\n\t\tfont-size: calc(2.5 / 100 * var(--content-width));\n\t\tmargin-right: calc(1 / 100 * var(--content-width));\n\t}\n\n\t.button:active {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.inputFile {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\topacity: 0;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t}\n\n\t.onDrag .inputFile {\n\t\tpointer-events: unset;\n\t}\n\n\t.drophere {\n\t\tpointer-events: none;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/BannerEditor/_vision-picker.svelte",
    "content": "<script>\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getContext } from 'svelte';\n\n\texport let selected = '';\n\tconst visionList = ['pyro', 'hydro', 'anemo', 'electro', 'dendro', 'cryo', 'geo'];\n\tconst setVision = getContext('setVision');\n\tconst pickVision = (vision) => {\n\t\tif (selected === vision) return;\n\t\tsetVision(vision);\n\t\tplaySfx('click2');\n\t};\n</script>\n\n<div class=\"vision-picker\">\n\t{#each visionList as vision}\n\t\t{@const isActive = selected === vision}\n\t\t<button\n\t\t\tclass:active={isActive}\n\t\t\tclass={isActive ? `bg-${vision}` : ''}\n\t\t\ton:click={() => pickVision(vision)}\n\t\t>\n\t\t\t<i class=\"gi-{vision} {!isActive ? `${vision}-flat` : ''}\" />\n\t\t</button>\n\t{/each}\n</div>\n\n<style>\n\t.vision-picker {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateY(-100%);\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: flex-end;\n\t\tz-index: +10;\n\t}\n\n\tbutton {\n\t\tfont-size: 150%;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tpadding: 1%;\n\t\tborder: 1px solid #ccc;\n\t\ttransition: all 0.25s;\n\t}\n\n\tbutton.active {\n\t\tcolor: #fff;\n\t\tborder-color: transparent;\n\t}\n\tbutton:not(.active) {\n\t\tbackground-color: #fff;\n\t}\n\tbutton:hover:not(.active) {\n\t\tbackground-color: #ecedda;\n\t}\n\tbutton:active:not(.active) {\n\t\ttransform: scale(0.9);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/CustomEditor.svelte",
    "content": "<script>\n\timport { setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { activeVersion, assets, bannerList, editID } from '$lib/store/app-stores';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport FrameCustom from '../_wish/banner-card/_frame-custom.svelte';\n\timport InfoButton from './BannerEditor/_info-face-button.svelte';\n\timport SplashartForm from './BannerEditor/_splashart-form.svelte';\n\timport MainArt from './BannerEditor/BannerArt.svelte';\n\timport VisionPicker from './BannerEditor/_vision-picker.svelte';\n\timport DetailsEditor from './BannerEditor/_details-editor.svelte';\n\timport SplashArtEditor from './SplashArtEditor/SplashArt.svelte';\n\n\tlet clientHeight;\n\tlet clientWidth;\n\tlet onBannerEdit = false;\n\tlet isInfoEdit = false;\n\tlet isSplashArtEdit = false;\n\tlet isLoaded = false;\n\tlet isEdited = false;\n\n\t// Banner Info\n\tlet bannerID = $editID;\n\tlet dataToEdit = {};\n\tlet bannerName = '';\n\tlet character = '';\n\tlet charTitle = '';\n\tlet vision = '';\n\tlet watermark = '';\n\tlet rateup = [];\n\n\tlet imgChanged = { artURL: false, faceURL: false, thumbnail: false };\n\tlet artPosition = { banner: {}, splashArt: {}, wishCard: {} };\n\tlet images = {};\n\n\tconst idb = BannerManager;\n\tconst readIDB = async (id) => {\n\t\tif (isLoaded) return;\n\t\tisLoaded = true;\n\t\tdataToEdit = await idb.get(id);\n\t\t({\n\t\t\tbannerName = '',\n\t\t\tcharacter = '',\n\t\t\tcharTitle = '',\n\t\t\twatermark = '',\n\t\t\tvision = 'pyro',\n\t\t\trateup = [],\n\t\t\tartPosition = {},\n\t\t\timages = {},\n\t\t\timgChanged = {}\n\t\t} = dataToEdit);\n\t};\n\n\t// prettier-ignore\n\t$: bannerData = { bannerName, character, charTitle, watermark, vision, rateup, artPosition, images, imgChanged };\n\n\tconst autoSave = async (data) => {\n\t\tif (!isLoaded) return;\n\t\tif (!isEdited) return (isEdited = true);\n\t\tconst editedData = { ...dataToEdit, isChanged: true, itemID: $editID, ...data };\n\t\tdelete editedData.lastModified; //renew LastModified\n\t\tawait idb.put(editedData);\n\n\t\t// Update Store if banner is active\n\t\tconst { phase: activeID, patch } = $activeVersion;\n\t\tif (!(patch.match('local') && activeID === bannerID)) return;\n\t\t$bannerList[0] = { ...editedData, type: 'character-event' };\n\t\treturn;\n\t};\n\t$: autoSave(bannerData);\n\n\t// Splash Art\n\tconst editSplashArt = (val) => (isSplashArtEdit = val);\n\tsetContext('editSplashArt', editSplashArt);\n\n\t// Banner\n\tconst setPosition = (type, pos) => (artPosition[type] = pos);\n\tsetContext('setPosition', setPosition);\n\n\tconst editBanner = (val) => (onBannerEdit = val);\n\tsetContext('editBanner', editBanner);\n\n\tconst editInfo = (val) => (isInfoEdit = val);\n\tsetContext('editInfo', editInfo);\n\n\tconst setVision = (vi) => (vision = vi);\n\tsetContext('setVision', setVision);\n\n\tconst setRateup = (chars) => (rateup = chars);\n\tsetContext('setRateup', setRateup);\n\n\tconst setCharName = (name) => (character = name);\n\tsetContext('setCharName', setCharName);\n\n\tconst setCharTitle = (title) => (charTitle = title);\n\tsetContext('setCharTitle', setCharTitle);\n\n\tconst setBannerName = (name) => (bannerName = name);\n\tsetContext('setBannerName', setBannerName);\n\n\tconst setWatermark = (text) => (watermark = text);\n\tsetContext('setWatermark', setWatermark);\n\n\tconst changeArt = (file) => {\n\t\tif (!file) return;\n\t\tconst reader = new FileReader();\n\t\treader.readAsDataURL(file);\n\t\treader.addEventListener('load', () => {\n\t\t\timages.artURL = reader.result;\n\t\t\timgChanged.artURL = true;\n\t\t\tonBannerEdit = true;\n\t\t});\n\t};\n\tsetContext('changeArt', changeArt);\n\n\tconst changeFace = (file) => {\n\t\tif (!file) return;\n\t\tconst reader = new FileReader();\n\t\treader.readAsDataURL(file);\n\t\treader.addEventListener('load', () => {\n\t\t\timages.faceURL = reader.result;\n\t\t\timgChanged.faceURL = true;\n\t\t});\n\t};\n\tsetContext('changeFace', changeFace);\n\n\tconst changeThumbnail = (file) => {\n\t\tif (!file) return;\n\t\tconst reader = new FileReader();\n\t\treader.readAsDataURL(file);\n\t\treader.addEventListener('load', () => {\n\t\t\timages.thumbnail = reader.result;\n\t\t\timgChanged.thumbnail = true;\n\t\t});\n\t};\n\tsetContext('changeThumbnail', changeThumbnail);\n</script>\n\n{#await readIDB(bannerID)}\n\t<div class=\"loading\" out:fade>\n\t\t<div class=\"loader\">\n\t\t\t<Icon type=\"loader\" width=\"40px\" />\n\t\t</div>\n\t</div>\n{/await}\n\n<div\n\tclass=\"card\"\n\tid=\"cardEditor\"\n\tclass:isLoaded\n\tbind:clientWidth\n\tbind:clientHeight\n\tstyle=\"--content-width:{clientWidth}px; --content-height:{clientHeight}px\"\n>\n\t<img\n\t\tsrc={$assets[`blank/character-${vision}`]}\n\t\talt=\"Background Banner\"\n\t\tcrossorigin=\"anonymous\"\n\t\tclass=\"art-bg\"\n\t/>\n\n\t<VisionPicker selected={vision} />\n\t{#key artPosition && rateup}\n\t\t<MainArt {onBannerEdit} {rateup} artURL={images?.artURL} bannerPosition={artPosition?.banner} />\n\t{/key}\n\t<SplashartForm {onBannerEdit} />\n\t<FrameCustom\n\t\teditorMode\n\t\t{onBannerEdit}\n\t\t{vision}\n\t\t{bannerName}\n\t\t{character}\n\t\t{charTitle}\n\t\t{watermark}\n\t/>\n\t<InfoButton faceURL={images?.faceURL} {onBannerEdit} />\n</div>\n\n{#if isInfoEdit}\n\t<DetailsEditor\n\t\tpreview={images?.thumbnail}\n\t\t{rateup}\n\t\t{bannerName}\n\t\t{character}\n\t\t{charTitle}\n\t\t{watermark}\n\t/>\n{/if}\n\n{#if isSplashArtEdit}\n\t<SplashArtEditor\n\t\ton:close={() => editSplashArt(false)}\n\t\tartURL={images?.artURL}\n\t\tposition={artPosition}\n\t\t{character}\n\t\t{vision}\n\t/>\n{/if}\n\n<style>\n\t.card {\n\t\t/* background-image: linear-gradient(to top, #eee8e3 50%, #f7f5f4); */\n\t\tposition: relative;\n\t}\n\n\t.card {\n\t\twidth: 100%;\n\t\theight: fit-content;\n\t\taspect-ratio: 1080/533;\n\t}\n\t.card :global(h1 .block) {\n\t\tdisplay: block;\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: fill;\n\t\tobject-position: center;\n\t}\n\n\t.loading {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\ttransform: translate(-50%, -50%);\n\t\tz-index: +20;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackdrop-filter: blur(8px);\n\t\tbackground-color: rgba(0, 0, 0, 0.2);\n\t}\n\n\t.loader {\n\t\t--text-color: rgba(248, 184, 22, 0.7);\n\t\taspect-ratio: 1/1;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/ModalDelete.svelte",
    "content": "<script>\n\timport { createEventDispatcher, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\n\timport { wishPhase, version } from '$lib/data/wish-setup.json';\n\timport { imageCDN } from '$lib/helpers/assets';\n\timport { activeVersion, editID, editorMode, preloadVersion } from '$lib/store/app-stores';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { onlineBanner } from '$lib/helpers/banner-custom';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\n\texport let idToDelete = 0;\n\n\tlet thumbnail = '';\n\tlet isOwned = false;\n\tlet showDeleteLoader = false;\n\tconst dispatch = createEventDispatcher();\n\n\tconst removeBanner = async () => {\n\t\ttry {\n\t\t\tplaySfx();\n\t\t\tshowDeleteLoader = true;\n\t\t\tif (idToDelete === $editID) editorMode.set(false);\n\n\t\t\tconst { patch, phase } = $activeVersion;\n\t\t\tconst isActiveDeleted = patch.match(/custom/gi) && phase == idToDelete;\n\t\t\tconst { status } = await onlineBanner.deleteBanner(idToDelete);\n\t\t\tif (isActiveDeleted) preloadVersion.set({ patch: version, phase: wishPhase });\n\t\t\tif (status != 'ok') throw new Error();\n\n\t\t\tdispatch('done');\n\t\t\tshowDeleteLoader = false;\n\t\t} catch (e) {\n\t\t\tdispatch('error');\n\t\t\tshowDeleteLoader = false;\n\t\t}\n\t};\n\n\tonMount(async () => {\n\t\tconst { images = {}, hostedImages = {}, status } = await BannerManager.get(idToDelete);\n\t\tisOwned = status === 'owned';\n\t\tif (isOwned) return ({ thumbnail = '' } = images);\n\n\t\tconst { thumbnail: thumb = '' } = hostedImages;\n\t\tthumbnail = imageCDN(thumb);\n\t});\n</script>\n\n<ModalTpl\n\ttitle=\"Remove Banner\"\n\tdisabled={showDeleteLoader}\n\ton:confirm={removeBanner}\n\ton:cancel={() => dispatch('cancel')}\n>\n\t<div class=\"confirmation\">\n\t\t{#if showDeleteLoader}\n\t\t\t<div class=\"row loader\" in:fade>\n\t\t\t\t<Icon type=\"loader\" />\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<div class=\"wrapper\" in:fade>\n\t\t\t\t<span> {$t('customBanner.deletePrompt')} </span>\n\t\t\t\t{#if isOwned}\n\t\t\t\t\t<small> {$t('customBanner.ownerDeleteNote')} </small>\n\t\t\t\t{:else}\n\t\t\t\t\t<small> {$t('customBanner.userDeleteNote')} </small>\n\t\t\t\t{/if}\n\n\t\t\t\t{#if thumbnail}\n\t\t\t\t\t<img use:lazyLoad={thumbnail} alt=\"Delete this banner\" class=\"selectedToDelete\" />\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</ModalTpl>\n\n<style>\n\t.confirmation {\n\t\tpadding: 5%;\n\t\theight: 100%;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tdisplay: flex;\n\t}\n\t.confirmation small {\n\t\tdisplay: block;\n\t}\n\n\t.selectedToDelete {\n\t\twidth: 45%;\n\t\tmargin-top: 3%;\n\t}\n\n\t.row.loader {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/ModalInitBanner.svelte",
    "content": "<script>\n\timport { fade } from 'svelte/transition';\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\n\timport { imageCDN, initCDNURL } from '$lib/helpers/assets';\n\timport { preloadVersion } from '$lib/store/app-stores';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { onlineBanner } from '$lib/helpers/banner-custom';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { verifyKey } from '$lib/helpers/accessKey';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\n\texport let shareID = 0;\n\n\tlet loaded = false;\n\tlet isError = false;\n\tlet errorType = '';\n\n\tlet isOwned = false;\n\tlet itemID = 0;\n\tlet hostedImages = '';\n\tlet bannerName = '';\n\tlet vision = '';\n\n\tconst startApp = getContext('startApp');\n\n\tconst initBanner = () => {\n\t\tverifyKey();\n\t\tstartApp();\n\t\tif (!itemID) return;\n\t\tpreloadVersion.set({ patch: 'Custom', phase: itemID });\n\t};\n\n\tconst retry = () => {\n\t\tplaySfx();\n\t\tloaded = false;\n\t\tisError = false;\n\t\terrorType = '';\n\t\tfetchBannerData(shareID);\n\t};\n\n\tconst fetchBannerData = async (shareID) => {\n\t\tconst { data = {}, success, message } = await onlineBanner.getData(shareID);\n\t\tconst isBlocked = !!data.blocked;\n\t\tconst isDeleted = !!data.deleted;\n\n\t\tif (!success || isBlocked || isDeleted) {\n\t\t\tif (message === 'Not Found' || isDeleted) {\n\t\t\t\terrorType = 'bannerNotFound';\n\t\t\t} else if (message === 'Invalid ID' || isBlocked) {\n\t\t\t\terrorType = 'invalidBanner';\n\t\t\t} else {\n\t\t\t\terrorType = 'networkError';\n\t\t\t}\n\n\t\t\tisError = true;\n\t\t\tloaded = true;\n\t\t\treturn;\n\t\t}\n\n\t\t({ hostedImages = {}, vision = 'pyro', bannerName = 'Unknown Banner', itemID } = data);\n\t\tconst { status } = (await BannerManager.get(itemID)) || {};\n\n\t\t// Dont replace data if owned already\n\t\tisOwned = status === 'owned';\n\t\tif (isOwned) return (loaded = true);\n\n\t\tdelete data.imageHash;\n\t\tdelete data.id;\n\t\tdata.status = 'cloud';\n\t\tdata.shareID = parseInt(shareID);\n\t\tawait BannerManager.put(data);\n\t\tloaded = true;\n\t\treturn;\n\t};\n\n\tonMount(() => {\n\t\tinitCDNURL(); // CDN for customBanner Images\n\t\tif (!shareID) return;\n\t\treturn fetchBannerData(shareID);\n\t});\n</script>\n\n<ModalTpl\n\tconfirmOnly\n\ttitle={$t('customBanner.findBanner')}\n\ton:confirm={initBanner}\n\tdisabled={!loaded}\n>\n\t<div class=\"container\">\n\t\t{#if isError}\n\t\t\t<div class=\"content error\" in:fade>\n\t\t\t\t{#if errorType === 'networkError'}\n\t\t\t\t\t<div class=\"error\">\n\t\t\t\t\t\t<caption> {$t('customBanner.networkError')} </caption>\n\t\t\t\t\t\t<ButtonGeneral on:click={retry}>{$t('customBanner.retry')}</ButtonGeneral>\n\t\t\t\t\t</div>\n\t\t\t\t{:else}\n\t\t\t\t\t<caption>\n\t\t\t\t\t\t{@html $t(`customBanner.${errorType}`)}\n\t\t\t\t\t</caption>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{:else if !loaded}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t<caption class=\"load-text\">{$t('customBanner.identifying')}</caption>\n\t\t\t\t<div class=\"loader\">\n\t\t\t\t\t<Icon type=\"loader\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else}\n\t\t\t{@const { thumbnail } = imageCDN(hostedImages)}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t{#if isOwned}\n\t\t\t\t\t<caption>\n\t\t\t\t\t\t{@html $t('customBanner.loadOwnedBanner', {\n\t\t\t\t\t\t\tvalues: { ownedBanner: `<span class=\"${vision}-flat\">${bannerName}</span>` }\n\t\t\t\t\t\t})}\n\t\t\t\t\t</caption>\n\t\t\t\t{:else}\n\t\t\t\t\t<caption>\n\t\t\t\t\t\t{@html $t('customBanner.loadReady', {\n\t\t\t\t\t\t\tvalues: { banner: `<span class=\"${vision}-flat\">${bannerName}</span>` }\n\t\t\t\t\t\t})}\n\t\t\t\t\t</caption>\n\t\t\t\t{/if}\n\t\t\t\t{#if thumbnail}\n\t\t\t\t\t<img src={thumbnail} alt=\"Banner Thumbnail\" class=\"thumb\" />\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</ModalTpl>\n\n<style>\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.content {\n\t\tpadding: 1% 5%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.content .thumb {\n\t\tmargin-top: 1rem;\n\t\tmax-width: 50%;\n\t}\n\n\t.error caption {\n\t\tdisplay: block;\n\t\tmargin-bottom: 1rem;\n\t}\n\n\tcaption {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n\t.load-text::after {\n\t\tcontent: '.';\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttransform: translateX(100%);\n\t\tbottom: 0;\n\t\tanimation: dot 3s infinite;\n\t}\n\n\t.loader {\n\t\tmargin: 3% 0;\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.loader {\n\t\t\tmargin: 7% 0;\n\t\t}\n\t}\n\n\t@keyframes dot {\n\t\t0% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t25% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t50% {\n\t\t\tcontent: '...';\n\t\t}\n\t\t100% {\n\t\t\tcontent: '';\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/Publisher.svelte",
    "content": "<script>\n\timport { fade, fly } from 'svelte/transition';\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { HOST, IBB_KEY } from '$lib/env';\n\timport { editID, isMobile } from '$lib/store/app-stores';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { base64ToBlob } from '$lib/helpers/assets';\n\timport { localBanner, onlineBanner } from '$lib/helpers/banner-custom';\n\timport { copy } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\n\tlet percentage = 0;\n\tlet uploadProccess = true;\n\tlet cloudProccess = false;\n\tlet uploadError = false;\n\tlet itemInProccess = '';\n\tconst itemName = { artURL: 'SplashArt', faceURL: 'Face', thumbnail: 'Banner Preview' };\n\n\tlet showToast;\n\tlet shareID = '';\n\tlet character = '';\n\tlet thumbnail = '';\n\t$: shareLink = `${HOST}/?banner=${shareID}`;\n\t$: shareText = $t('customBanner.shareText');\n\n\tconst copyHandle = async () => {\n\t\tplaySfx();\n\t\tcopy(shareLink);\n\t\tshowToast = true;\n\t\tconst t = setTimeout(() => {\n\t\t\tshowToast = false;\n\t\t\tclearTimeout(t);\n\t\t}, 2000);\n\t};\n\n\tconst facebookHandle = () => {\n\t\tplaySfx();\n\t\tconst url = `https://web.facebook.com/sharer/sharer.php?u=${shareLink}&quote=${shareText}`;\n\t\twindow.open(url, '_blank');\n\t};\n\n\tconst twitterHandle = () => {\n\t\tplaySfx();\n\t\tconst url = `https://twitter.com/intent/tweet?text=${shareText}&url=${shareLink}`;\n\t\twindow.open(url, '_blank');\n\t};\n\n\tconst webShareHandle = async () => {\n\t\ttry {\n\t\t\tplaySfx();\n\t\t\tconst generalDataToShare = {\n\t\t\t\ttitle: `${character} Wish Simulator`,\n\t\t\t\ttext: shareText,\n\t\t\t\turl: shareLink\n\t\t\t};\n\n\t\t\tconst blob = base64ToBlob(thumbnail);\n\t\t\tconst files = new File([blob], `WishSimulator.App - ${new Date().toLocaleString()}.png`, {\n\t\t\t\ttype: blob.type,\n\t\t\t\tlastModified: new Date().getTime()\n\t\t\t});\n\n\t\t\tconst dataWithPic = { ...generalDataToShare, files: [files] };\n\t\t\tconst attachPic = navigator?.canShare(dataWithPic);\n\t\t\tconst dataToShare = attachPic && $isMobile ? dataWithPic : generalDataToShare;\n\t\t\tawait navigator.share(dataToShare);\n\t\t} catch (e) {\n\t\t\tconsole.error('Abort Sharing', e);\n\t\t}\n\t};\n\n\t// Publish\n\tconst chatToggle = getContext('chatToggle');\n\tconst publishError = getContext('publishError');\n\tconst publishDone = getContext('publishDone');\n\tconst closePublisher = getContext('closePublisher');\n\tconst closeModal = () => {\n\t\tplaySfx();\n\t\tpublishDone();\n\t};\n\n\tconst saveToCloud = async () => {\n\t\tuploadProccess = false;\n\t\tcloudProccess = true;\n\t\t({ shareID, character, thumbnail } = await onlineBanner.updateData($editID));\n\t\tcloudProccess = false;\n\t};\n\n\tconst upload = async ({ file, total = 0, number = 0, key }) => {\n\t\tconst result = new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst data = new FormData();\n\t\t\t\tdata.append('image', file);\n\n\t\t\t\tconst request = new XMLHttpRequest();\n\t\t\t\trequest.open('POST', `https://api.imgbb.com/1/upload?key=${IBB_KEY}`);\n\t\t\t\trequest.send(data);\n\t\t\t\trequest.addEventListener('error', () => reject({ success: false }));\n\n\t\t\t\t// Track Upload Proggress\n\t\t\t\trequest.upload.addEventListener('progress', (e) => {\n\t\t\t\t\tconst proggress = e.loaded / e.total;\n\t\t\t\t\tconst maxPrgPerItem = 1 / total;\n\t\t\t\t\tconst proggressPerItem = proggress * maxPrgPerItem;\n\t\t\t\t\tconst acumulatedProgress = (number - 1) * maxPrgPerItem + proggressPerItem;\n\t\t\t\t\tpercentage = Math.round(acumulatedProgress * 100);\n\t\t\t\t});\n\n\t\t\t\t// request finished event\n\t\t\t\trequest.addEventListener('load', async () => {\n\t\t\t\t\tconst newData = JSON.parse(request.responseText);\n\t\t\t\t\tif (request.status != 200) return reject({ success: false, ...newData });\n\t\t\t\t\tawait localBanner.renewImage({ id: $editID, newData, key });\n\t\t\t\t\tresolve({ ...newData, status_code: 200 });\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\treturn reject({ success: false });\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst doPublish = async () => {\n\t\tif (!window.navigator.onLine) return publishError();\n\n\t\tconst idb = BannerManager;\n\t\tconst data = await idb.get($editID);\n\t\tconst { imgChanged = {}, images = {} } = data;\n\t\tconst changedImgs = Object.keys(imgChanged).filter((key) => imgChanged[key]);\n\n\t\tif (changedImgs.length < 1) return saveToCloud();\n\n\t\tlet i = 0;\n\t\tfor await (const imgKey of changedImgs) {\n\t\t\ti++;\n\t\t\tif (!images[imgKey]) continue;\n\t\t\tconst file = images[imgKey].split(',')[1];\n\t\t\tif (!file) continue;\n\n\t\t\ttry {\n\t\t\t\titemInProccess = imgKey;\n\t\t\t\tawait upload({ file, number: i, total: changedImgs.length, key: imgKey });\n\t\t\t\tif (i < changedImgs.length) continue;\n\t\t\t\tsaveToCloud();\n\t\t\t} catch (e) {\n\t\t\t\tuploadProccess = false;\n\t\t\t\tcloudProccess = false;\n\t\t\t\tuploadError = true;\n\t\t\t}\n\t\t}\n\t};\n\n\tonMount(doPublish);\n</script>\n\n{#if showToast}\n\t<div class=\"toast\" in:fly={{ y: 10 }} out:fade>Copied to Clipboard</div>\n{/if}\n\n<div class=\"publisher\" transition:fade>\n\t<div class=\"container\">\n\t\t{#if uploadProccess}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t<caption class=\"load-text\" style=\"position: relative;\">\n\t\t\t\t\t{@html $t('customBanner.uploading', {\n\t\t\t\t\t\tvalues: { item: `<span>${itemName[itemInProccess]}</span>` }\n\t\t\t\t\t})}\n\t\t\t\t</caption>\n\t\t\t\t<div class=\"progress-bar\" style=\"--per:{percentage}%\">\n\t\t\t\t\t<span />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else if cloudProccess}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t<caption class=\"load-text\"> {$t('customBanner.almostDone')} </caption>\n\t\t\t\t<div class=\"loader\">\n\t\t\t\t\t<Icon type=\"loader\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else if uploadError}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t<caption class=\"load-text\"> {$t('customBanner.uploadFailed')} </caption>\n\t\t\t\t<div class=\"report\">\n\t\t\t\t\tPlease <button on:click={chatToggle}>Report</button> if you think this is a mistake!\n\t\t\t\t</div>\n\t\t\t\t<div style=\"margin-top: 1rem;\">\n\t\t\t\t\t<ButtonModal on:click={closePublisher}>{$t('customBanner.close')}</ButtonModal>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<div class=\"content\" in:fade>\n\t\t\t\t<div class=\"copy-text\">\n\t\t\t\t\t<label for=\"link\" class=\"link\">{shareLink}</label>\n\t\t\t\t\t<button id=\"link\" title=\"Copy link\" on:click={copyHandle}>\n\t\t\t\t\t\t<i class=\"gi-copy\" />\n\t\t\t\t\t\t<span> Copy </span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"shareable\">\n\t\t\t\t\t<button class=\"twitter\" title=\"Share to Twitter\" on:click={twitterHandle}>\n\t\t\t\t\t\t<i class=\"gi-twitter\" />\n\t\t\t\t\t</button>\n\t\t\t\t\t<button class=\"facebook\" title=\"Share to Facebook\" on:click={facebookHandle}>\n\t\t\t\t\t\t<i class=\"gi-facebook\" />\n\t\t\t\t\t</button>\n\t\t\t\t\t<button class=\"save\" title=\"More Options\" on:click={webShareHandle}>\n\t\t\t\t\t\t<i class=\"gi-dot-3\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t<ButtonModal on:click={closeModal} />\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.publisher {\n\t\tposition: fixed;\n\t\tz-index: +20;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: var(--screen-width);\n\t\theight: var(--screen-height);\n\t\tbackground-color: rgba(0, 0, 0, 0.2);\n\t\tbackdrop-filter: blur(8px);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\t.load-text :global(span) {\n\t\tcolor: #ff9615;\n\t}\n\n\t.container {\n\t\twidth: 600px;\n\t\tmax-width: 90%;\n\t\tbackground-color: #fbf6ee;\n\t\tborder: 2px solid #ddd5c8;\n\t\tborder-radius: 0.5rem;\n\t\tpadding: 3% 1.5%;\n\t}\n\n\t.load-text {\n\t\tdisplay: inline-block;\n\t}\n\t.load-text::after {\n\t\tcontent: '.';\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttransform: translateX(100%);\n\t\tbottom: 0;\n\t\tanimation: dot 3s infinite;\n\t}\n\n\t.progress-bar {\n\t\twidth: 100%;\n\t\theight: 0.2rem;\n\t\tbackground-color: #ccc;\n\t\tmargin: 3% 0;\n\t\tposition: relative;\n\t\tborder-radius: 1rem;\n\t}\n\n\t.progress-bar span {\n\t\tborder-radius: inherit;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: var(--per);\n\t\theight: 120%;\n\t\tbackground-image: linear-gradient(to left, #898e9d, #4a5265);\n\t\tbox-shadow: 0 0 0.1rem #fff;\n\t\ttransition: width 0.05s;\n\t}\n\n\t.content {\n\t\ttext-align: center;\n\t}\n\n\t.loader {\n\t\tmargin: 3% 0;\n\t}\n\n\t.report {\n\t\tpadding-top: 0.5rem;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-style: italic;\n\t}\n\n\t.report button {\n\t\tcolor: orange;\n\t\tfont-weight: bold;\n\t\tfont-style: inherit;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.report button:hover {\n\t\ttext-decoration: underline;\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.loader {\n\t\t\tmargin: 7% 0;\n\t\t}\n\t}\n\n\t.copy-text,\n\t.loader {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t.copy-text label {\n\t\tpadding: 2% 5%;\n\t\tbackground-color: #fff;\n\t\tborder: 1px solid #898e9d;\n\t\tborder-radius: 3rem;\n\t\twhite-space: nowrap;\n\t\twidth: 80%;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t.copy-text button {\n\t\tbackground-color: #898e9d;\n\t\tcolor: #fff;\n\t\tline-height: 0;\n\t\tpadding: 2% 2.5%;\n\t\tmargin: 1%;\n\t\tborder-radius: 3rem;\n\t\tfont-size: 80%;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\ttransition: all 0.25s;\n\t}\n\t.copy-text button:hover {\n\t\tbackground-color: #4a5265;\n\t}\n\n\t.shareable {\n\t\tpadding: 2%;\n\t}\n\t.shareable button {\n\t\tpadding: 0;\n\t\tborder-radius: 100%;\n\t\tz-index: 10;\n\t\taspect-ratio: 1 / 1;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tmargin: 0 0.2rem;\n\t\tfont-size: 100%;\n\t\topacity: 0.75;\n\t\twidth: 2.2rem;\n\t\ttransition: all 0.25s;\n\t\tcolor: #fff;\n\t}\n\n\t.shareable button:hover {\n\t\topacity: 1;\n\t}\n\tbutton:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\t.twitter {\n\t\tbackground-color: #1da1f2;\n\t}\n\t.facebook {\n\t\tbackground-color: #4267b2;\n\t}\n\t.save {\n\t\tbackground-color: #3f4349;\n\t}\n\n\t.toast {\n\t\tposition: fixed;\n\t\tz-index: +25;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tdisplay: inline-block;\n\t\tpadding: 0.5rem 1rem;\n\t\tborder-radius: 0.5rem;\n\t\tbackground-color: rgba(173, 128, 65, 0.8);\n\t\tcolor: #fff;\n\t\tfont-size: 0.75rem;\n\t}\n\n\t@keyframes dot {\n\t\t0% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t25% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t50% {\n\t\t\tcontent: '...';\n\t\t}\n\t\t100% {\n\t\t\tcontent: '';\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/SplashArtEditor/SplashArt.svelte",
    "content": "<script>\n\timport { dev } from '$app/environment';\n\timport { createEventDispatcher, getContext, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport Zoomist from 'zoomist';\n\n\timport { assets, viewportHeight, viewportWidth } from '$lib/store/app-stores';\n\timport { getPercentagePosition, getPxPosition } from '$lib/helpers/cssPosition';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport ItemInfo from '../../_wish/wish-result/_item-info.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport ResultCard from './_result-card.svelte';\n\n\texport let character;\n\texport let rarity = 5;\n\texport let vision;\n\texport let artURL = '';\n\texport let position = {};\n\n\texport let preview = false;\n\texport let onshot = false;\n\texport let isOwned = false;\n\texport let weaponType = '';\n\texport let localName = '';\n\texport let hideInfo = false;\n\texport let isCustom = false;\n\n\tlet mainArt;\n\tlet clientHeight = 0;\n\tlet clientWidth = 0;\n\tlet isChanged = false;\n\tlet wishCard = false;\n\n\tconst { splashArt: artPosition = { scale: 1.5, x: 0, y: 0 } } = position;\n\tconst bg = preview ? $assets['detailbg.webp'] : $assets['splash-background.webp'];\n\n\tconst calculateWrapperHeight = (vw, vh) => {\n\t\tif (vw < vh) return '85vw';\n\t\tif (vw < vh * 1.5) return '65vw';\n\t\treturn '100%';\n\t};\n\t$: wrapperHeight = calculateWrapperHeight($viewportWidth, $viewportHeight);\n\n\tconst dispatch = createEventDispatcher();\n\tconst closeHandle = () => {\n\t\tplaySfx('close');\n\t\tdispatch('close');\n\t\treturn;\n\t};\n\n\tconst toggleEye = getContext('toggleInfoHide');\n\tconst setPosition = getContext('setPosition');\n\tconst zoomOption = {\n\t\tinitScale: artPosition.scale || 1,\n\t\tmaxScale: 5,\n\t\tbounds: false,\n\t\tslider: {\n\t\t\tel: '.zoomSlider',\n\t\t\tdirection: 'vertical'\n\t\t},\n\t\tzoomer: {\n\t\t\tinEl: '.art-zoomin',\n\t\t\toutEl: '.art-zoomout',\n\t\t\tresetEl: null,\n\t\t\tdisabledClass: 'zoomer-disabled'\n\t\t}\n\t};\n\n\tconst setCoordinate = () => {\n\t\t// Get Image Position in Percentage\n\t\tconst zoomistImage = mainArt.querySelector('.zoomist-image');\n\t\tconst zoomPosition = getPercentagePosition(zoomistImage, clientHeight, clientWidth);\n\t\tsetPosition('splashArt', zoomPosition);\n\t\tisChanged = false;\n\t\tplaySfx('click2');\n\n\t\tif (!dev) return;\n\t\tconsole.log('SplashArt Position: ', JSON.stringify(zoomPosition));\n\t};\n\n\tlet zoomist;\n\tlet isLoaded = false;\n\tconst movePos = (artPosition) => {\n\t\tif (!isLoaded || !artPosition || typeof artPosition !== 'object') return;\n\t\tconst pos = getPxPosition(artPosition, clientHeight, clientWidth);\n\t\tzoomist.zoomTo(artPosition?.scale || 1.1);\n\t\tzoomist.moveTo(pos);\n\t};\n\n\tonMount(() => {\n\t\tzoomist = new Zoomist(mainArt, zoomOption);\n\t\tisLoaded = true;\n\t\tzoomist.on('dragEnd', () => (isChanged = true));\n\t\tzoomist.on('zoom', () => (isChanged = true));\n\t});\n\n\t// Wish Card\n\tconst nextArt = () => {\n\t\tplaySfx();\n\t\twishCard = true;\n\t};\n</script>\n\n<div\n\tclass=\"splash-art wish-result\"\n\tclass:preview\n\tclass:hideInfo\n\tstyle=\"--bg: url({bg});\"\n\ttransition:fade={{ duration: 250 }}\n>\n\t{#if onshot}\n\t\t<div class=\"uid\">WishSimulator.App</div>\n\t{/if}\n\n\t{#if preview && !isOwned}\n\t\t<div class=\"overlay\">\n\t\t\t<div class=\"not-owned\">\n\t\t\t\t<span>{$t('inventory.notOwned')}</span>\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n\n\t<button class=\"close\" on:click={closeHandle}>\n\t\t<i class=\"gi-close\" />\n\t</button>\n\n\t{#if wishCard}\n\t\t<ResultCard {artURL} {character} {vision} {position} />\n\t{:else}\n\t\t{#if !(preview && !isOwned)}\n\t\t\t<div class=\"zoomer\">\n\t\t\t\t<div class=\"slider\">\n\t\t\t\t\t<div class=\"zoomSlider\" />\n\t\t\t\t</div>\n\t\t\t\t<button class=\"art-zoomin\"><i class=\"gi-zoom-in\" /></button>\n\t\t\t\t<button class=\"art-zoomout\"><i class=\"gi-zoom-out\" /></button>\n\t\t\t\t{#if preview}\n\t\t\t\t\t<button on:click={toggleEye}> <i class=\"gi-eye{!hideInfo ? '' : '-slash'}\" /></button>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if !preview}\n\t\t\t<div class=\"confirm\">\n\t\t\t\t{#if isChanged}\n\t\t\t\t\t<ButtonModal light on:click={setCoordinate}>{$t('customBanner.setPosition')}</ButtonModal>\n\t\t\t\t{:else}\n\t\t\t\t\t<ButtonModal light on:click={nextArt}>{$t('customBanner.next')} &raquo;</ButtonModal>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\n\t\t<div\n\t\t\tclass=\"zoomist-container\"\n\t\t\tstyle=\"height: {wrapperHeight};\"\n\t\t\tbind:this={mainArt}\n\t\t\tbind:clientHeight\n\t\t\tbind:clientWidth\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"zoomist-wrapper {weaponType}\"\n\t\t\t\tstyle=\"overflow: visible;\"\n\t\t\t\tclass:notOwned={preview && !isOwned}\n\t\t\t\tclass:weapon={weaponType}\n\t\t\t>\n\t\t\t\t<div class=\"zoomist-image\">\n\t\t\t\t\t{#if weaponType}\n\t\t\t\t\t\t<img src={$assets[`bg-${weaponType}.webp`]} alt={weaponType} class=\"weaponbg\" />\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={artURL}\n\t\t\t\t\t\talt={localName || character}\n\t\t\t\t\t\t{...!isCustom ? { crossorigin: 'anonymous' } : {}}\n\t\t\t\t\t\ton:load={() => movePos(position?.splashArt || {})}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"dragable\" />\n\t\t\t</div>\n\n\t\t\t{#if !hideInfo}\n\t\t\t\t<ItemInfo\n\t\t\t\t\tcustom\n\t\t\t\t\tstaticMode\n\t\t\t\t\titemName={localName || character}\n\t\t\t\t\ttype=\"character\"\n\t\t\t\t\t{rarity}\n\t\t\t\t\t{vision}\n\t\t\t\t\t{weaponType}\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.splash-art {\n\t\t--zoomist-slider-bar-side: calc(0.003 * var(--screen-width));\n\t\t--zoomist-slider-bar-size: calc(0.35 * var(--screen-height));\n\t\t--zoomist-slider-button-size: calc(0.025 * var(--screen-height));\n\t\t--zoomist-slider-bar-color: #e9a540;\n\t\t--zoomist-slider-track-color: #999;\n\t\t--zoomist-slider-button-color: #fff;\n\t}\n\n\t.close {\n\t\tposition: fixed;\n\t\ttop: 30px;\n\t\tright: 2%;\n\t\tz-index: 10;\n\t}\n\n\tbutton:active:not(.zoomer-disabled) {\n\t\ttransform: scale(0.9);\n\t}\n\n\t:global(.mobile) .close {\n\t\ttop: 0.3rem;\n\t\tright: 6%;\n\t}\n\n\t.overlay {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t\tz-index: +10;\n\t\tfont-size: calc(0.1 * var(--screen-height));\n\t\tcolor: var(--tertiary-color);\n\t\topacity: 0.5;\n\t}\n\t.not-owned {\n\t\tmax-width: var(--screen-height);\n\t\ttransform: rotate(-30deg);\n\t\tline-height: 0.9;\n\t}\n\t.notOwned {\n\t\tfilter: brightness(40%);\n\t}\n\n\t.splash-art {\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: +15;\n\t}\n\n\t.zoomist-container {\n\t\taspect-ratio: 1/1;\n\t\topacity: 1;\n\t\ttransition: opacity 0.25s;\n\t}\n\n\t.splash-art,\n\t.zoomist-wrapper,\n\t.zoomist-image {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.zoomist-wrapper {\n\t\t--scale: 1.5;\n\t\t--translate-x: 0px;\n\t\t--translate-y: 0px;\n\t\tcursor: move;\n\t\tbackground-color: unset;\n\t\tposition: relative;\n\t}\n\n\t.zoomist-wrapper.weapon {\n\t\t--scale: 1.1;\n\t}\n\n\t.dragable {\n\t\tposition: absolute;\n\t\twidth: var(--screen-width);\n\t\theight: var(--screen-height);\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\n\t.zoomist-wrapper::after {\n\t\tposition: absolute;\n\t\tcontent: 'Best Visible Area';\n\t\ttext-align: right;\n\t\tfont-size: 100%;\n\t\tcolor: #fff;\n\t\tfilter: drop-shadow(0 0 0.1rem #000);\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: calc(100% - 4px);\n\t\theight: calc(100% - 4px);\n\t\tborder: 2px dashed #fff;\n\t\topacity: 0;\n\t\ttransition: opacity 0.25s;\n\t}\n\n\t.splash-art:not(.preview) .zoomist-wrapper:hover::after {\n\t\topacity: 1;\n\t}\n\n\t.zoomist-image {\n\t\ttransform: translate(var(--translate-x, 0px), var(--translate-y, 0px)) scale(var(--scale, 0));\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tobject-position: center;\n\t}\n\n\t.weapon img {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\t.weapon img:not(.weaponbg) {\n\t\tfilter: drop-shadow(0.6rem 0.6rem 0.05rem rgba(0, 0, 0, 0.9));\n\t}\n\n\t.weapon img.weaponbg {\n\t\theight: 80%;\n\t}\n\n\t.catalyst img:not(.weaponbg) {\n\t\theight: 40%;\n\t}\n\n\t.polearm img:not(.weaponbg) {\n\t\ttransform: translate(-53%, -35%) scale(1.2) !important;\n\t}\n\n\t.slider {\n\t\tdisplay: grid;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\tpadding: 1rem 0;\n\t\ttransition: background 0.25s, opacity 0.25s;\n\t}\n\n\t.slider:hover {\n\t\tbackground-color: #fff;\n\t}\n\n\t.zoomSlider {\n\t\tpadding: 2%;\n\t\tdisplay: flex;\n\t\tjustify-self: center;\n\t}\n\n\t.zoomer {\n\t\tposition: absolute;\n\t\tz-index: +20;\n\t\tbottom: 50%;\n\t\tright: 2%;\n\t\ttransform: translateY(50%);\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.zoomer button {\n\t\tfont-size: calc(0.035 * var(--screen-height));\n\t\twidth: calc(0.075 * var(--screen-height));\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #fff;\n\t\tcolor: #000;\n\t\topacity: 0.75;\n\t\ttransition: all 0.25s;\n\t\tline-height: 0;\n\t}\n\n\t.zoomer button:hover:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t}\n\t.zoomer button:active:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t\ttransform: scale(0.9);\n\t}\n\n\t.zoomer :global(button.zoomer-disabled) {\n\t\topacity: 0.6;\n\t\tcolor: rgba(0, 0, 0, 0.5);\n\t}\n\n\t.confirm {\n\t\tposition: absolute;\n\t\tz-index: +5;\n\t\tbottom: 7.5%;\n\t\tright: 5%;\n\t}\n\n\t:global(.mobile) .confirm {\n\t\ttransform: scale(0.8);\n\t}\n\n\t.uid {\n\t\tleft: unset;\n\t\tright: 5%;\n\t\twidth: fit-content;\n\t\tfont-size: x-large;\n\t\tfont-family: var(--gi-font);\n\t}\n\n\t.hideInfo .slider,\n\t.hideInfo .art-zoomin,\n\t.hideInfo .art-zoomout {\n\t\topacity: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_custom-banner/SplashArtEditor/_result-card.svelte",
    "content": "<script>\n\timport { dev } from '$app/environment';\n\timport { getContext, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport Zoomist from 'zoomist';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getPercentagePosition, getPxPosition } from '$lib/helpers/cssPosition';\n\timport SvgIcon from '$lib/components/SVGIcon.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\n\texport let artURL = '';\n\texport let character = '';\n\texport let vision = '';\n\texport let position = {};\n\n\tlet mainArt;\n\tlet isChanged = false;\n\tlet clientHeight = 1;\n\tlet clientWidth = 0;\n\tconst { wishCard: artPosition = { scale: 5, x: 40, y: 40 } } = position;\n\n\tconst zoomOption = {\n\t\tinitScale: artPosition.scale || 1,\n\t\tmaxScale: 20,\n\t\tbounds: false,\n\t\tslider: {\n\t\t\tel: '.zoomSlider',\n\t\t\tdirection: 'vertical'\n\t\t},\n\t\tzoomer: {\n\t\t\tinEl: '.art-zoomin',\n\t\t\toutEl: '.art-zoomout',\n\t\t\tresetEl: null,\n\t\t\tdisabledClass: 'zoomer-disabled'\n\t\t}\n\t};\n\n\tconst editSplashArt = getContext('editSplashArt');\n\tconst setPosition = getContext('setPosition');\n\n\tconst setCoordinate = () => {\n\t\tplaySfx();\n\t\teditSplashArt(false);\n\t\tif (!isChanged) return;\n\n\t\t// Get Image Position in Percentage\n\t\tconst zoomistImage = mainArt.querySelector('.zoomist-image');\n\t\tconst zoomPosition = getPercentagePosition(zoomistImage, clientHeight, clientWidth);\n\t\tsetPosition('wishCard', zoomPosition);\n\t\tisChanged = false;\n\n\t\tif (!dev) return;\n\t\tconsole.log('WishCard Position', JSON.stringify(zoomPosition));\n\t};\n\n\tonMount(() => {\n\t\tclientWidth = (clientHeight * 7) / 30;\n\n\t\tconst zoomist = new Zoomist(mainArt, zoomOption);\n\t\tconst pos = getPxPosition(artPosition, clientHeight, clientWidth);\n\t\tzoomist.moveTo(pos);\n\t\tzoomist.on('dragEnd', () => (isChanged = true));\n\t\tzoomist.on('zoom', () => (isChanged = true));\n\t});\n</script>\n\n<svg viewBox=\"0 0 151.000000 656.000000\" height=\"0\" width=\"0\" style=\"position: absolute;\">\n\t<clipPath\n\t\tid=\"wishframe\"\n\t\ttransform=\"scale(0.00066225165562914 0.00015455950540958)\"\n\t\tclipPathUnits=\"objectBoundingBox\"\n\t>\n\t\t<path\n\t\t\td=\"M734 6419 c-25 -29 -100 -76 -199 -127 -125 -64 -165 -117 -165 -217\n\t\t\t0 -22 -3 -50 -6 -63 -9 -33 -83 -72 -155 -82 -68 -10 -79 -19 -79 -67 0 -24\n\t\t\t-7 -37 -32 -54 -18 -12 -43 -34 -55 -48 l-22 -26 -1 -2502 c0 -1542 4 -2503 9\n\t\t\t-2503 5 0 13 -9 16 -20 4 -11 23 -28 43 -38 32 -15 37 -22 40 -57 4 -49 23\n\t\t\t-65 76 -65 47 0 113 -28 140 -58 12 -14 21 -45 26 -90 13 -117 54 -164 215\n\t\t\t-250 55 -28 114 -66 132 -82 18 -17 35 -30 39 -30 4 0 23 15 44 34 21 19 80\n\t\t\t56 131 82 153 79 197 131 210 252 4 39 13 70 25 84 27 30 93 58 140 58 53 0\n\t\t\t72 16 76 65 3 35 8 42 40 57 20 10 39 27 43 38 3 11 11 20 16 20 5 0 9 961 9\n\t\t\t2503 l-1 2502 -22 26 c-12 14 -37 36 -54 48 -26 17 -33 30 -33 54 0 48 -11 57\n\t\t\t-79 67 -72 10 -146 49 -155 82 -3 13 -6 41 -6 63 0 100 -40 153 -165 217 -106\n\t\t\t54 -153 84 -191 119 l-30 29 -20 -21z\"\n\t\t/>\n\t</clipPath>\n</svg>\n\n<div class=\"zoomer\">\n\t<div class=\"slider\">\n\t\t<div class=\"zoomSlider\" />\n\t</div>\n\t<button class=\"art-zoomin\"><i class=\"gi-zoom-in\" /></button>\n\t<button class=\"art-zoomout\"><i class=\"gi-zoom-out\" /></button>\n</div>\n\n<div class=\"confirm\">\n\t<ButtonModal light on:click={setCoordinate}>\n\t\t{isChanged ? 'Set Position' : 'OK'}\n\t</ButtonModal>\n</div>\n\n<div class=\"container\" in:fade>\n\t<div\n\t\tbind:clientHeight\n\t\tclass=\"wishlist\"\n\t\tstyle=\"--card-height:{clientHeight}px;--card-width:{clientWidth}px\"\n\t>\n\t\t<div class=\"item-box\" style=\"--bg:url({$assets['resultcard-bg.webp']})\">\n\t\t\t<!--  -->\n\t\t\t<div id=\"wish1\" class=\"item star5 character\">\n\t\t\t\t<div class=\"new\">{$t('wish.result.new')}</div>\n\t\t\t\t<div class=\"zoomist-container item-body\" bind:this={mainArt}>\n\t\t\t\t\t<div class=\"zoomist-wrapper item-content\">\n\t\t\t\t\t\t<div class=\"zoomist-image\">\n\t\t\t\t\t\t\t<img src={artURL} alt={character} class=\"wishpic\" crossorigin=\"anonymous\" />\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"info\">\n\t\t\t\t\t\t\t<div class=\"icon\" style=\"width: 100%;\">\n\t\t\t\t\t\t\t\t<SvgIcon name={vision} />\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"star\">\n\t\t\t\t\t\t\t\t{#each Array(5) as _}\n\t\t\t\t\t\t\t\t\t<div class=\"i gi-star\" />\n\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!--  -->\n\t\t</div>\n\t</div>\n\t<div class=\"shadows\" style=\"--card-height: {clientHeight}px\">\n\t\t<div class=\"shadow shadow5\" />\n\t</div>\n</div>\n\n<style>\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t/* Wish List */\n\t.wishlist,\n\t.shadows {\n\t\tdisplay: block;\n\t\theight: 40vw;\n\t\tmax-height: 60vh;\n\t\tmin-height: 40vh;\n\t\twidth: 100%;\n\t\tpadding: 0 20px;\n\t\twhite-space: nowrap;\n\t\ttext-align: center;\n\t}\n\n\t:global(.mobile) .wishlist,\n\t:global(.mobile) .shadows {\n\t\tmin-height: 70vh;\n\t}\n\n\t:global(.mobile) .wishlist,\n\t:global(.mobile) .shadows {\n\t\tmax-height: 72.5vh;\n\t}\n\n\t.item-box :global(.item),\n\t.shadow {\n\t\theight: 100%;\n\t\taspect-ratio: 7/30;\n\t\tborder-radius: 100%;\n\t\tposition: relative;\n\t}\n\n\t.item-box {\n\t\theight: 100%;\n\t\tdisplay: inline-block;\n\t}\n\n\t.shadows {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tz-index: -1;\n\t}\n\n\t.shadow {\n\t\tdisplay: inline-block;\n\t\theight: 100%;\n\t\tborder-radius: 100%;\n\t}\n\n\t.shadow.shadow5 {\n\t\tbox-shadow: 0 0 4rem rgba(255, 255, 255, 0.5), 0 0 1rem rgb(249, 170, 2),\n\t\t\t0 0 1.4rem rgb(249, 170, 2), 0 0 2rem rgb(249, 121, 2);\n\t\tbackground-color: rgb(249, 170, 2);\n\t\tfilter: unset;\n\t}\n\n\t/* Result List */\n\t.item-body {\n\t\theight: 100%;\n\t\tclip-path: url(#wishframe);\n\t\tmargin: 0 0.5px;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.star5 .item-body {\n\t\tbackground-image: linear-gradient(\n\t\t\tto bottom,\n\t\t\trgb(249, 170, 2),\n\t\t\trgb(255, 255, 255),\n\t\t\trgb(249, 170, 2)\n\t\t);\n\t}\n\n\t.new {\n\t\tposition: absolute;\n\t\tz-index: 10;\n\t\tdisplay: block;\n\t\ttop: 3%;\n\t\tleft: 80%;\n\t\ttransform: translateX(-50%);\n\t\tpadding: 0 0.4rem;\n\t\tborder-radius: calc(2 / 100 * var(--card-height)) 0;\n\t\tcolor: #fffa66;\n\t\tbackground-color: #c3882a;\n\t\tborder: 1px solid #fffa66;\n\t\tfont-size: calc(3 / 100 * var(--card-height));\n\t}\n\n\t.item-content {\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\tposition: relative;\n\t\tcursor: move;\n\t}\n\n\t.item-content::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 50%;\n\t\tbackground-image: linear-gradient(to top, rgba(0, 0, 0, 0.4) 60%, rgba(0, 0, 0, 0));\n\t}\n\n\t.zoomist-image {\n\t\ttransform: translate(var(--translate-x, 0px), var(--translate-y, 0px)) scale(var(--scale, 0));\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tobject-position: center;\n\t}\n\n\t.info {\n\t\tposition: absolute;\n\t\tbottom: 10%;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tz-index: 10;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t}\n\n\t.info .gi-star {\n\t\tcolor: #f7cf33;\n\t\tdisplay: inline-block;\n\t\tfont-size: calc(3.5 / 100 * var(--card-height));\n\t}\n\t.icon :global(svg) {\n\t\twidth: 80%;\n\t\taspect-ratio: 1/1;\n\t}\n\n\t/* Zoomist */\n\t.slider {\n\t\tdisplay: grid;\n\t\tbackground-color: rgba(255, 255, 255, 0.75);\n\t\tpadding: 1rem 0;\n\t\ttransition: background 0.25s;\n\t}\n\n\t.slider:hover {\n\t\tbackground-color: #fff;\n\t}\n\n\t.zoomSlider {\n\t\tpadding: 2%;\n\t\tdisplay: flex;\n\t\tjustify-self: center;\n\t}\n\n\t.zoomer {\n\t\tposition: absolute;\n\t\tz-index: +20;\n\t\tbottom: 50%;\n\t\tright: 2%;\n\t\ttransform: translateY(50%);\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.zoomer button {\n\t\tfont-size: calc(0.035 * var(--screen-height));\n\t\twidth: calc(0.075 * var(--screen-height));\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #fff;\n\t\tcolor: #000;\n\t\topacity: 0.75;\n\t\ttransition: all 0.25s;\n\t\tline-height: 0;\n\t}\n\n\t.zoomer button:hover:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t}\n\t.zoomer button:active:not(.zoomer-disabled) {\n\t\topacity: 1;\n\t\ttransform: scale(0.9);\n\t}\n\n\t.zoomer :global(button.zoomer-disabled) {\n\t\topacity: 0.6;\n\t\tcolor: rgba(0, 0, 0, 0.5);\n\t}\n\n\t.confirm {\n\t\tposition: absolute;\n\t\tz-index: +5;\n\t\tbottom: 7.5%;\n\t\tright: 5%;\n\t}\n\n\t:global(.mobile) .confirm {\n\t\ttransform: scale(0.8);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_feedback/_sidebar.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\n\tconst close = getContext('chatToggle');\n</script>\n\n<div class=\"sidebar\" on:click|stopPropagation transition:fly={{ x: -50, duration: 100 }}>\n\t<div class=\"top\">\n\t\t<button class=\"close\" on:click={close}>\n\t\t\t<i class=\"gi-reply\" />\n\t\t</button>\n\t</div>\n\t<div class=\"nav-item\">\n\t\t<a href=\"#chat\" class=\"link active\" on:click|preventDefault>\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-team\" />\n\t\t\t\tWishSimulator.App\n\t\t\t</span>\n\t\t</a>\n\t</div>\n</div>\n\n<style>\n\t.sidebar {\n\t\tmax-width: 220px;\n\t\twidth: 15%;\n\t\tmin-width: 170px;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tbackground-color: rgba(32, 36, 49, 0.6);\n\t\tborder-right: 1px solid rgba(210, 198, 156, 0.6);\n\t\tborder-left: 1px solid rgba(210, 198, 156, 0.6);\n\t\tcolor: #d2c69c;\n\t\tposition: relative;\n\t\tz-index: +22;\n\t}\n\n\t@media screen and (max-width: 454px) {\n\t\t.sidebar {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t.top {\n\t\twidth: 100%;\n\t\theight: 60px;\n\t\tbackground-color: #3b4255;\n\t\tpadding: 0 20px 10px;\n\t\tdisplay: flex;\n\t\talign-items: flex-end;\n\t}\n\t:global(.mobile) .top {\n\t\theight: 40px;\n\t\tpadding: 0 20px 0px;\n\t\tmargin-bottom: -10px;\n\t}\n\n\t.gi-reply {\n\t\tfont-size: x-large;\n\t}\n\n\t:global(.mobile) .gi-reply {\n\t\tfont-size: large;\n\t}\n\n\t.nav-item {\n\t\tmargin-top: 20px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tcolor: #f0e4d4;\n\t}\n\n\t.link {\n\t\tposition: relative;\n\t\ttransition: all 0.2s;\n\t\ttext-decoration: none;\n\t\tcolor: #f0e4d4;\n\t\taspect-ratio: 70/17.5;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding-left: 5%;\n\t\tz-index: 1;\n\t}\n\n\t@media screen and (min-width: 900px) {\n\t\t.link {\n\t\t\tfont-size: 80%;\n\t\t}\n\t}\n\n\t.link i {\n\t\tfont-size: 1.3rem;\n\t\tdisplay: inline-block;\n\t\tmargin-right: 10px;\n\t\topacity: 0.8;\n\t}\n\t:global(.mobile) .link i {\n\t\tfont-size: 1.4rem;\n\t}\n\n\t.link.active,\n\t.link:hover {\n\t\tbackground-color: #414856;\n\t\tborder-radius: 0.25rem;\n\t}\n\n\t.link::after,\n\t.link::before,\n\tspan::after,\n\tspan::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tbackground-size: contain;\n\t\tdisplay: block;\n\t}\n\n\t.link.active::before {\n\t\ttop: 50%;\n\t\tright: -3%;\n\t\theight: 100%;\n\t\taspect-ratio: 1/1;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tz-index: -1;\n\t\tline-height: 120%;\n\t\tbackground-color: #414856;\n\t\tborder-radius: 100%;\n\t}\n\n\t.link.active::after {\n\t\ttop: 50%;\n\t\tright: -1%;\n\t\twidth: 100%;\n\t\taspect-ratio: 708/156;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAACcCAMAAABPyU0CAAAAOVBMVEUAAADTu4vUvI7Uuo3TvI7TvI7UvI7TvozTu43TvI7Su47Pv4/fv43TvI7Tu43SvIzVuo3UvI/TvI7Io+VzAAAAEnRSTlMAQL9goL/eIHDvsBAQkIBQML8hIpUyAAADO0lEQVR42uzd22oCMRSG0dixM2oVZb//wzaOhzoWerjzh7VAxfuPkExibD9ZF7yg97YgYvKImHj/jHho8FJWIiadiIknYuKJmHgiJp6IiSdi4omYeL9G/FYLIublrOqZiAkjYuL9JeJVgxwiJp6IiSdi4omYeCImnoiJJ2LiiZh4IiaeiIknYuKJmHgiJp6IiSdi4omYeCImnoiJJ2LiiZh4Iibet4inrYjJ8hzxfqwaPxrkeI74ULWdGgR5injo3zcNkiwjnsaqdYMoy4jXVaPJBGEWEQ+uDyTQImKTCRI9RrwxmSDRQ8TTaDJBoh7x46quQZyviCerOjL1cg3EZLtHPG0NxGS6RzwYiAl1j9ijCVLdIj4aiEl1i3hns45U14in/mmzjkzXiIeq9waRrhG/WdYRq0dsNkG2Xq/ZBNkuEe/8so5cl4jHqlODTHPEJzsdBJsjHqp2DULNEa9NiQk2Rzy6fo1gPeL5bd8gVO/Xuo5s54iPtjpIdo54U3VokOoc8cHDCZKdI95VHRuk6hH7lw6y9YidnCDbHLHDxCTrEc8viCVi4omYeCImnoiJJ2LiecRGPBETz7Yz8eYDQO6wIpmjmMT7bO8OU1oHwgCKpiCtIdDHy/4XKxOjOFUQ//XCOWu4hJkk34yf4sk7xpMcO0HZiPhmUJQyI/vkOTyFPMdYkXdE/GpnR9gR8W3f1wWijoiX1agoXSNii2LSXDxD3nvEmzfFdJ1THf+tJ8g6I361niDrjHhzpShZI+JzPXFfoOgj4su+r7Z2JI2ID6sZJaI+I77b2hH1GfG2+h+TphGxRzFpI2KPYtJGxKe7UTuSvkS8rb49UzQi/nD3rpii6VjX676/LBAzRXzZ7e3omSIeRwteLSiImSPeVgsKcuaIl3+7NxTUPEQ8jnld/VhMymPE29WymJgR8eTm6zMx3yJ2gwc1IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8n6KeOJSJZ7OZZ+ImB4Rk/drxLMXEfN0Lt9u+hIxMSImT8TkiZg8EZMnYvJETJ6IyftzxPCEREyeiMl7iPgNPx9ffAKGWGIAAAAASUVORK5CYII=');\n\t\tbackground-repeat: no-repeat;\n\t\topacity: 0.5;\n\t}\n\n\tspan {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 95%;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\tspan :global(i) {\n\t\tline-height: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_feedback/index.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { mobileMode, viewportWidth } from '$lib/store/app-stores';\n\timport { HOST } from '$lib/env';\n\timport Sidebar from './_sidebar.svelte';\n\n\texport let show = false;\n\tlet clientHeight;\n\tconst close = getContext('chatToggle');\n\n\twindow.disqus_config = function () {\n\t\tthis.page.url = HOST;\n\t};\n</script>\n\n<svelte:head>\n\t<script src=\"https://gisim.disqus.com/embed.js\" data-timestamp={+new Date()} async>\n\t</script>\n</svelte:head>\n\n<section class:show>\n\t<div class=\"container transition\" class:show>\n\t\t{#if $viewportWidth > 640 || $mobileMode}\n\t\t\t<Sidebar />\n\t\t{/if}\n\t\t<div\n\t\t\tclass=\"room transition\"\n\t\t\tclass:full={$viewportWidth <= 640}\n\t\t\tclass:show\n\t\t\tstyle=\"--height:{clientHeight}px\"\n\t\t>\n\t\t\t<div class=\"top\" bind:clientHeight>\n\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<button class=\"close dimiss\" on:click={close}>\n\t\t\t\t\t\t<i class=\"gi-reply\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<span> Has Anything in Mind? </span>\n\t\t\t</div>\n\n\t\t\t<div class=\"chats\">\n\t\t\t\t<div id=\"disqus_thread\" />\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"close-div\" on:click={close} />\n\t</div>\n</section>\n\n<style>\n\t.container.transition {\n\t\ttransform: translateX(-200px);\n\t\ttransition: all 0.2s;\n\t}\n\t.room.transition {\n\t\ttransform: translateX(-300px);\n\t\ttransition: all 0.3s;\n\t}\n\n\t.transition {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t}\n\n\t.transition.show {\n\t\topacity: 1;\n\t\tpointer-events: unset;\n\t\ttransform: translateX(0);\n\t}\n\n\tsection {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 100;\n\t\tpointer-events: none;\n\t\tcolor: #fff !important;\n\t}\n\n\tsection.show {\n\t\tpointer-events: unset;\n\t}\n\n\t.container {\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(32, 36, 49, 0.9) 50%,\n\t\t\trgba(32, 36, 49, 0.3) 80%,\n\t\t\trgba(32, 36, 49, 0)\n\t\t);\n\t\tbackground-position: left;\n\t\tbackground-repeat: no-repeat;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t}\n\n\t.close-div {\n\t\twidth: 25%;\n\t\tmargin-left: auto;\n\t}\n\n\t.top {\n\t\twidth: 100%;\n\t\theight: 60px;\n\t\tcolor: rgba(210, 198, 156, 0.8);\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid rgba(210, 198, 156, 0.5);\n\t}\n\n\t:global(.mobile) .top {\n\t\theight: 40px;\n\t\tmargin-bottom: -10px;\n\t}\n\t.top .close {\n\t\ttransform: scale(0.8);\n\t}\n\n\t.top .dimiss {\n\t\tdisplay: none;\n\t}\n\t.room {\n\t\theight: 100%;\n\t\twidth: 50%;\n\t\tmin-width: 300px;\n\t\tmax-width: 500px;\n\t}\n\t.room.full,\n\t.top span {\n\t\twidth: 100%;\n\t}\n\n\t.chats {\n\t\tpadding: 5%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: calc(100% - var(--height));\n\t\tposition: relative;\n\t\toverflow-y: auto;\n\t}\n\t.chats::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t@media screen and (min-width: 1200px) {\n\t\t.container {\n\t\t\tbackground-size: 1400px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 1200px) {\n\t\t.container {\n\t\t\tbackground-size: 120%;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 850px) {\n\t\t.container {\n\t\t\tbackground-size: 140%;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.container {\n\t\t\tbackground-size: 180%;\n\t\t}\n\t\t.close-div {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.top {\n\t\t\theight: unset;\n\t\t\tpadding: 3%;\n\t\t\tfont-size: 120%;\n\t\t}\n\t\t.top .dimiss {\n\t\t\tdisplay: unset;\n\t\t}\n\t\t.gi-reply {\n\t\t\tfont-size: large;\n\t\t}\n\n\t\t.room {\n\t\t\twidth: 100%;\n\t\t\tmin-width: unset;\n\t\t\tmax-width: unset;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/_book-bg.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let tplVersion;\n\n\tlet contentWidth;\n\tconst close = getContext('close-detail');\n\tconst setTpl = getContext('detail-tpl');\n\n\tconst customFLy = (node, args) => {\n\t\tif (args.tpl !== 'v2') return;\n\t\treturn fly(node, args);\n\t};\n</script>\n\n{#if tplVersion !== 'v2'}\n\t<slot />\n{:else}\n\t<div class=\"content-container\" transition:customFLy={{ y: 25, tpl: tplVersion }}>\n\t\t<button class=\"old\" on:click={() => setTpl('v1')}> {$t('history.olderLayout')}</button>\n\t\t<div class=\"wrapper\">\n\t\t\t<div\n\t\t\t\tclass=\"book\"\n\t\t\t\tbind:clientWidth={contentWidth}\n\t\t\t\tstyle=\"--content-width:{contentWidth}px; --bg:url({$assets['book.webp']})\"\n\t\t\t>\n\t\t\t\t<button class=\"tutup\" on:click={close} />\n\t\t\t\t<div class=\"book-content\">\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.content-container {\n\t\tmin-width: 90%;\n\t\theight: 50vh;\n\t\tposition: relative;\n\t}\n\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow-x: auto;\n\t}\n\t.wrapper::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.tutup {\n\t\twidth: calc(0.035 * var(--content-width));\n\t\taspect-ratio: 1/1;\n\t\tposition: absolute;\n\t\ttop: 6%;\n\t\tright: 2%;\n\t}\n\n\t.old {\n\t\tposition: absolute;\n\t\tz-index: +2;\n\t\tbottom: 5%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%) translateY(200%);\n\t\ttext-decoration: underline;\n\t\ttransition: all 0.2s;\n\t}\n\t.old:hover {\n\t\tcolor: goldenrod;\n\t}\n\n\t.book {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tmargin: auto;\n\t\theight: 50vh;\n\t\tmax-height: 900px;\n\t\taspect-ratio: 487/257;\n\t\tbackground-size: cover;\n\t\tbackground-image: var(--bg);\n\t\tpadding: calc(0.015 * var(--content-width)) calc(0.09 * var(--content-width));\n\t}\n\n\t@media screen and (min-width: 700px) {\n\t\t.content-container,\n\t\t.book {\n\t\t\theight: unset !important;\n\t\t\twidth: 95%;\n\t\t}\n\t}\n\n\t:global(.mobile) .content-container,\n\t:global(.mobile) .book {\n\t\theight: 85vh !important;\n\t\twidth: auto;\n\t}\n\n\t.book-content {\n\t\twidth: 100%;\n\t\theight: 93%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/_title.svelte",
    "content": "<script>\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\timport { assets } from '$lib/store/app-stores';\n\timport { t } from 'svelte-i18n';\n\n\texport let bannerName = '';\n\texport let type = '';\n\texport let vision = '';\n\texport let tplVersion = '';\n</script>\n\n{#if type === 'history'}\n\t<h1 class=\"v2\">\n\t\t<img src={$assets['brand.png']} alt=\"Icon\" crossorigin=\"anonymous\" />\n\t\t<span> {$t('history.title')}</span>\n\t</h1>\n\n\t<!-- Details Page -->\n{:else}\n\t{@const divclass = type === 'standard' ? 'wanderlust' : vision}\n\t<h1 class={type} class:v2={tplVersion === 'v2'}>\n\t\t{#if tplVersion === 'v2'}\n\t\t\t<img src={$assets['brand.png']} alt=\"Icon\" crossorigin=\"anonymous\" />\n\t\t{/if}\n\t\t<span>\n\t\t\t{#if type !== 'beginner'}\n\t\t\t\t{$t(`wish.banner.${type}`)}\n\t\t\t{/if}\n\n\t\t\t\"{@html highlightBannerName(bannerName, divclass || 'epitome')}\"\n\t\t</span>\n\t</h1>\n{/if}\n\n<style>\n\th1 {\n\t\tfont-size: 1.7rem;\n\t\ttext-align: left;\n\t\tbackground-color: #dadada;\n\t\tpadding: 0.5rem 5%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\t:global(.mobile) h1 {\n\t\tfont-size: 1.3rem;\n\t}\n\n\th1.v2 {\n\t\tbackground-color: transparent;\n\t\tfont-size: calc(0.022 * var(--content-width));\n\t\tvertical-align: middle;\n\t\tpadding: calc(0.01 * var(--content-width)) 0;\n\t}\n\n\th1 img {\n\t\twidth: calc(0.03 * var(--content-width));\n\t\tmargin-right: calc(0.01 * var(--content-width));\n\t}\n\n\th1:not(.v2)::before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\twidth: 0.8rem;\n\t\theight: 80%;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tbackground-color: var(--text-color);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/details/Details.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { afterUpdate } from 'svelte';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport {\n\t\tactiveBanner,\n\t\tbannerList,\n\t\tassets,\n\t\tactiveVersion,\n\t\tisCustomBanner,\n\t\tcustomData\n\t} from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getBannerName } from '$lib/helpers/nameText';\n\timport {\n\t\tget3StarItem,\n\t\tget4StarItem,\n\t\tget5StarItem,\n\t\tgetCharDetails,\n\t\tgetDetails,\n\t\tgetWpDetails,\n\t\tregionElement\n\t} from '$lib/helpers/gacha/itemdrop-base';\n\n\timport List from './_list.svelte';\n\timport Description from './_description.svelte';\n\timport PromotionalV1 from './_promotional-v1.svelte';\n\timport PromotionalV2 from './_promotional-v2.svelte';\n\timport Title from '../_title.svelte';\n\n\texport let tplVersion = 'v2';\n\n\tlet {\n\t\tbannerName,\n\t\tstdver,\n\t\tregion,\n\t\ttype: banner,\n\t\tcharacter = '',\n\t\tcharacters: ch = {},\n\t\tweapons: wp = {},\n\t\tfeatured = [],\n\t\trateup = []\n\t} = $bannerList[$activeBanner];\n\tconst isChronicled = banner === 'chronicled';\n\tconst isWp = banner.match('weapon');\n\tconst { vision } = $isCustomBanner ? $customData : getCharDetails(character);\n\n\t// Get Droplist\n\tconst { patch: version, phase } = $activeVersion;\n\tconst drop3star = get3StarItem();\n\n\t// Drop4star\n\tconst list4star = get4StarItem({\n\t\tphase,\n\t\tversion,\n\t\tregion,\n\t\tbanner,\n\t\ttype: 'all',\n\t\trateupNamelist: !isChronicled ? rateup : [...ch['4star'], ...wp['4star']]\n\t});\n\trateup = rateup\n\t\t.filter((name) => name)\n\t\t.map((name) => getDetails(name))\n\t\t.map((val) => ({ ...val, rateup: true }));\n\tconst drop4star = [...rateup, ...list4star];\n\n\t// drop 5star\n\tconst rateup5Star = isWp ? featured.map(({ name }) => name) : [character];\n\tconst list5star = get5StarItem({\n\t\tphase,\n\t\tversion,\n\t\tstdver,\n\t\tbanner,\n\t\tregion,\n\t\ttype: banner.match(/standard|chronicled/) ? 'all' : banner.split('-')[0],\n\t\trateupItem: !isChronicled ? rateup5Star : [...ch['5star'], ...wp['5star']]\n\t});\n\n\tcharacter = { ...($isCustomBanner ? $customData : getCharDetails(character)), rateup: true };\n\tconst weapons = featured\n\t\t.map(({ name }) => getWpDetails(name))\n\t\t.map((val) => ({ ...val, rateup: true, type: 'weapon' }));\n\n\tconst rateup5 = banner.match('character') ? [character] : weapons;\n\tconst drop5star = [...(rateup5 || []), ...list5star];\n\n\t// BannerName\n\tconst bannerSlug = getBannerName(bannerName).name;\n\tconst isStd = banner === 'standard';\n\tconst defaultName = $t(`banner.${isStd ? 'wanderlust' : bannerSlug || 'beginner'}`);\n\tbannerName = $isCustomBanner ? $customData.bannerName : defaultName;\n\n\tconst noPromo = banner.match(/(standard|beginner)/);\n\tlet activeContent = noPromo ? 2 : 1;\n\n\t// Click Handler\n\tconst select = (selected) => {\n\t\tif (activeContent === selected) return;\n\t\tactiveContent = selected;\n\t\tplaySfx();\n\t};\n\n\tlet scrollable;\n\tafterUpdate(() => {\n\t\tOverlayScrollbars(scrollable, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n<svelte:head>\n\t<title>\n\t\t{bannerName.replaceAll(/(#)/gi, '')} | {$t('title')}\n\t</title>\n</svelte:head>\n\n<Title type={banner} vision={regionElement(region) || vision} {bannerName} {tplVersion} />\n\n{#if tplVersion === 'v2'}\n\t<nav style=\"background-image: url({$assets['book-select-bg.webp']});\">\n\t\t{#if !noPromo}\n\t\t\t<div class=\"nav-item\" class:active={activeContent === 1}>\n\t\t\t\t<button on:click={() => select(1)}>\n\t\t\t\t\t{#if banner.match('chronicled')}\n\t\t\t\t\t\t{$t('details.designatable')}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{$t('details.promotional')}\n\t\t\t\t\t{/if}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t{/if}\n\t\t<div class=\"nav-item\" class:active={activeContent === 2}>\n\t\t\t<button on:click={() => select(2)}> {$t('details.text')} </button>\n\t\t</div>\n\t\t<div class=\"nav-item\" class:active={activeContent === 3}>\n\t\t\t<button on:click={() => select(3)}> {$t('details.itemlist')} </button>\n\t\t</div>\n\t</nav>\n\n\t<div class=\"content\" bind:this={scrollable}>\n\t\t<div class=\"wrapper\">\n\t\t\t{#if activeContent === 1}\n\t\t\t\t<PromotionalV2\n\t\t\t\t\tchronicledList={isChronicled ? drop5star : []}\n\t\t\t\t\tdata={{ weapons, character, bannerType: banner, rateup }}\n\t\t\t\t/>\n\t\t\t{:else if activeContent === 2}\n\t\t\t\t<Description\n\t\t\t\t\tbannerType={banner}\n\t\t\t\t\t{bannerName}\n\t\t\t\t\t{weapons}\n\t\t\t\t\t{character}\n\t\t\t\t\t{rateup}\n\t\t\t\t\t{region}\n\t\t\t\t\t{drop5star}\n\t\t\t\t\ttplVersion=\"v2\"\n\t\t\t\t/>\n\t\t\t{:else if activeContent === 3}\n\t\t\t\t<List {drop5star} {drop4star} {drop3star} bannerType={banner} tplVersion=\"v2\" />\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{:else}\n\t<PromotionalV1\n\t\tchronicledList={isChronicled ? drop5star : []}\n\t\tdata={{ weapons, character, bannerType: banner, rateup }}\n\t/>\n\t<Description\n\t\tbannerType={banner}\n\t\t{bannerName}\n\t\t{weapons}\n\t\t{character}\n\t\t{rateup}\n\t\t{region}\n\t\t{drop5star}\n\t/>\n\t<br />\n\t<List {drop5star} {drop4star} {drop3star} bannerType={banner} />\n{/if}\n\n<style>\n\tnav {\n\t\twidth: 100%;\n\t\tline-height: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-evenly;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t}\n\n\t.nav-item {\n\t\twidth: 33.33333%;\n\t\tpadding: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t}\n\t.nav-item button {\n\t\tfont-size: calc(0.017 * var(--content-width));\n\t\twidth: 100%;\n\t\taspect-ratio: 557/86;\n\t\topacity: 0.8;\n\t\tbackground-size: contain;\n\t\tbackground-position: center center;\n\t\tbackground-repeat: no-repeat;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.nav-item.active button,\n\t.nav-item button:hover {\n\t\tbackground-image: url('data:image/webp;base64,UklGRuwEAABXRUJQVlA4WAoAAAAQAAAAKwEAMAAAQUxQSH0BAAABgEJt27LmxeauzSsanUymO0T63H0N6lgmcmhzadT5xtzd/T//j8MXnxgRE0A5ipSB2B8Hxt9YQCkippplLg5IblnDpDQYB2WwlIV8GxXbchb6c1Sc61loz1BxpmVhvUfFnTW/EvuGgAphw16SR1XvYxyYj71VOVWNvceh+T5WlUPZwEccnJ+DZVmkvpc4PF980kzGWBygMWOGxnAcouHGNM8nRj49RNS0HgfpehOR+xsl326qicRhGqkxHeHkyNTxjZPvjhCPEz60GQfq5iNSHn+R8schhftAyscpUk4XBZwIi34eJ7zf/oSTJ0drFCfRtsJpASXCdCGZr1ByZSYqnUFJsIyIDCcYOTEQERWM8wjhxwvSqH0OIXPtlFm/jY9tPWUV267QcWUTZ6MC7xU2rrwFlGuBax8Z+64Cyl1qXORRwS8apZS35RYVtxZiqDtDxZmOhf4cFed6FvJtVGzLWZQGUTFbyoI0yxwiuGUNMRUpA7E/Dox/sYBSlAsAVlA4IEgDAABwFgCdASosATEAPlEmj0WjoiEiopgMUHAKCWcDyE4D3GgalpKNufSrTlG6/4HRwJ8fjMWOtzhg+/VupDXbutNKQ127r8B56ZwFQ0KiDO8f0bRALDyOFanPFD4UOCQPNucJgeVzmh7Eh4LW6YT48bBMV2Es6oWg3d2YoQ6gIIRBFYaFdZWyQeYHIohg0eTISZK7lrVPFXMm2OrTYBjpg9tTtGrF9Zpzg9Fz4RBo+TAtMNiXrDT+xCkRtAK9oAD++yyqMfJtYdJKgf2vrcNlZHq/DVUvFH6ZJK7IOrgZ93A5P1phmNx49/vcI1iLQR9fGhKNUXTL0BqDOaHlBCl+VeBjr5Zggy4F8iMxYUff5SqgwW7UGC3OsK1jAYPYAqsJZv+1VVCYIUm2D37147bJNVKgvZBTq2chCN1Q7ZymeKwhMqwPaLP9Bs/8Trz57hxOj9pWfEwugAuH63BuUK/uCQS0YebG3AgduCPvf8/1bX3mfizRuMODha1URGbCF2vE7tF/53tI8Nnw+lyx1RkqXhdrYn3PtomSCdgaRN8cvcR8Jk1J4dZppG0OuT1ikz2KPR1aFxONss8Ad/2W3WsZmVYOMV7LKM0uWE9deCoJfspH6el+zVaVfZoAoJgp7a8GTl0AiloTgFbahcJ93vIuQ26q68eP2Uy6kfDLbTLOH/VpMm3PnlLJid+keLuErU5yXjN0qFQu83BL58NQoaeO8CYWuhtPbaSTcmEsg3Cc4eurv3LEhLLj6MC1z8mQ0BrsXYp/SHIuU3LfAmf0rtMi5fXrBDFYB9Cqqgl/Dx3GqXlykoqZ7JN4O9P8E4VkZzUbpndg1ileL9220RAgFWZOwDNnoaj86MTL/lJltaA+0CuOfTWj5ir10bx/JG+Kt/xa78WiNULXV9LbCKhOIDJze8+lKVY2OrCV6rbDCfcyz60+srrneBxx1sL4HwowjVYf0ZRr/Le9qcLeqHv71USrK5Ih7iKYdwDC/RHvM0/VVOFCjU1mpAfJU9z5Ob6TnCMSDQ5EuXAOWkQxyxAqn8UhVw5xm/9ZpWEBfMfhcbI3W2k6z4fuh/SEiAAAABtCZhqluII+AYbJsmRLyfzH6eMYZVEUkAgH4EaAAAA=');\n\t\tcolor: #fff;\n\t}\n\n\t.nav-item.active button {\n\t\topacity: 1;\n\t}\n\n\t.content {\n\t\theight: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/details/_description.svelte",
    "content": "<script>\n\timport { t, json, locale } from 'svelte-i18n';\n\timport { customData, isCustomBanner } from '$lib/store/app-stores';\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\timport { regionElement } from '$lib/helpers/gacha/itemdrop-base';\n\n\texport let tplVersion = 'v1';\n\texport let bannerType;\n\texport let bannerName = '';\n\texport let rateup;\n\texport let weapons;\n\texport let character;\n\texport let drop5star = [];\n\texport let region = null;\n\n\t$: isSpecial = $locale.toLocaleLowerCase().match(/ja|cn|ko/);\n\n\tconst charNameAndTitle = (name, vision) => {\n\t\tconst element = `(${$t(vision)})`;\n\t\tif (isSpecial) return `「${$t(`${name}.title`)}·${$t(`${name}.name`)} ${element}」`;\n\t\treturn `\"${$t(`${name}.title`)}\" ${$t(`${name}.name`)} ${element}`;\n\t};\n\n\tconst getFeaturedChars = ({ name, vision }) => {\n\t\tconst isCustom = $isCustomBanner;\n\t\tconst charTitle = !isCustom ? $t(`${name}.title`) : $customData.charTitle;\n\t\tconst charName = !isCustom ? $t(`${name}.name`) : name;\n\t\tconst nameTitle = isSpecial ? `${charTitle}·${charName}` : `\"${charTitle}\" ${charName} `;\n\t\treturn `<span class=\"custom ${vision}-flat\"> ${nameTitle}(${$t(vision)}) </span>`;\n\t};\n\n\tconst getFeaturedWeapon = ({ name, weaponType }) => {\n\t\tconst nameTitle = isSpecial\n\t\t\t? `${$t(weaponType)}·${$t(name)}`\n\t\t\t: `${$t(name)} (${$t(weaponType)})`;\n\t\treturn `<span class=\"weapon\">${nameTitle}</span>`;\n\t};\n\n\tconst getDelimiter = (arr, i) => {\n\t\tif (i > arr.length - 2) return '';\n\t\tif (i > arr.length - 3) return isSpecial ? '、' : '&';\n\t\treturn isSpecial ? '、' : ',';\n\t};\n\n\tconst getRateupChars = (items) => {\n\t\tconst translated = items.map(({ name, vision }, i) => {\n\t\t\treturn `<span class=\"custom ${vision}-flat\"> ${charNameAndTitle(name, vision)}</span>\n\t\t\t${getDelimiter(rateup, i)}`;\n\t\t});\n\t\treturn translated.join('');\n\t};\n\n\tconst getRateupWeapons = (items) => {\n\t\tconst translated = items.map(({ name, weaponType }, i) => {\n\t\t\tconst nameTitle = isSpecial\n\t\t\t\t? `「${$t(weaponType)}·${$t(name)}」`\n\t\t\t\t: `${$t(name)} (${$t(weaponType)})`;\n\t\t\treturn `<span class=\"stardust\">${nameTitle}</span>${getDelimiter(rateup, i)} `;\n\t\t});\n\t\treturn translated.join('');\n\t};\n\n\tconst getRateupChron = (itemType) => {\n\t\tconst list = drop5star.filter(({ type }) => type === itemType);\n\t\tconst getItem = itemType === 'weapon' ? getFeaturedWeapon : getFeaturedChars;\n\t\tconst arrayString = list.map(({ name, weaponType: type, vision }) => {\n\t\t\treturn getItem({ name, type, vision });\n\t\t});\n\t\tconst str = arrayString.join(',');\n\t\treturn str;\n\t};\n\n\tconst valuesToToChange = {\n\t\tstarglitter: `<span class=\"starglitter\"> ${$t('shop.item.starglitter')}</span>`,\n\t\tstardust: `<span class=\"stardust\"> ${$t('shop.item.stardust')}</span>`,\n\t\tstellaFortuna: `<span class=\"stardust\"> ${$t('wish.stellaFortuna')}</span>`\n\t};\n\n\tconst duplicateDetails = (star) => {\n\t\treturn $t(`details.duplicate.text`, {\n\t\t\tvalues: {\n\t\t\t\trarity: star,\n\t\t\t\tconstBonus: star === 5 ? '×10' : '×2',\n\t\t\t\tfullConstBonus: star === 5 ? '×25' : '×5',\n\t\t\t\t...valuesToToChange\n\t\t\t}\n\t\t});\n\t};\n\n\tconst convertion = (star) => {\n\t\treturn $t(`details.convertion.${star}`, {\n\t\t\tvalues: valuesToToChange\n\t\t});\n\t};\n</script>\n\n<div class=\"description\" class:v2={tplVersion === 'v2'}>\n\t{#if tplVersion === 'v2'}\n\t\t<h2>\n\t\t\t<span>{$t('details.wishDetails')} </span> <span class=\"line\" />\n\t\t</h2>\n\t{/if}\n\n\t{#if bannerType === 'beginner'}\n\t\t<h3>{$t('details.beginnerInfo')}</h3>\n\t{:else if bannerType.match(/event|chronicled/)}\n\t\t<h3>{$t('details.limited')}</h3>\n\t{:else}\n\t\t<h3>{$t('details.permanent')}</h3>\n\t{/if}\n\n\t<!-- Beginner Wish Description -->\n\t{#if bannerType === 'beginner'}\n\t\t{@const { name, vision } = character}\n\t\t{#each $json('details.beginner') as text}\n\t\t\t<p>\n\t\t\t\t{@html $t(text, {\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tcharacter: `<span class=\"custom ${vision}-flat\">\n              ${charNameAndTitle(name, vision)}\n            </span> `,\n\t\t\t\t\t\t...valuesToToChange\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t</p>\n\t\t{/each}\n\n\t\t<!-- Standard Wish Description -->\n\t{:else if bannerType === 'standard'}\n\t\t{#each $json('details.standard') as text}\n\t\t\t<p>\n\t\t\t\t{@html $t(text, {\n\t\t\t\t\tvalues: { bannerName: highlightBannerName(bannerName, 'standard') }\n\t\t\t\t})}\n\t\t\t</p>\n\t\t{/each}\n\n\t\t<!-- Character Wish Description -->\n\t{:else if bannerType === 'character-event'}\n\t\t{#each $json('details.events') as text}\n\t\t\t<p>\n\t\t\t\t{@html $t(text, {\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tbannerName: highlightBannerName(bannerName, character.vision),\n\t\t\t\t\t\tfeaturedCharacter: getFeaturedChars(character),\n\t\t\t\t\t\trateupCharacters: getRateupChars(rateup)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t</p>\n\t\t{/each}\n\n\t\t<!-- Weapon Wish Description -->\n\t{:else if bannerType === 'weapon-event'}\n\t\t{#each $json('details.weapons') as text}\n\t\t\t<p>\n\t\t\t\t{@html $t(text, {\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tbannerName: highlightBannerName(bannerName, 'epitome'),\n\t\t\t\t\t\tfeaturedWeapon1: getFeaturedWeapon(weapons[0]),\n\t\t\t\t\t\tfeaturedWeapon2: getFeaturedWeapon(weapons[1]),\n\t\t\t\t\t\trateupWeapons: getRateupWeapons(rateup)\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t</p>\n\t\t{/each}\n\n\t\t<!-- Chronicled Wish Description -->\n\t{:else if bannerType === 'chronicled'}\n\t\t{#each $json('details.chronicled') as text}\n\t\t\t<p>\n\t\t\t\t{@html $t(text, {\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\tbannerName: highlightBannerName(bannerName, regionElement(region)),\n\t\t\t\t\t\tfeaturedCharacter: getRateupChron('character'),\n\t\t\t\t\t\tfeaturedWeapon: getRateupChron('weapon')\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t</p>\n\t\t{/each}\n\t{/if}\n\n\t<p>\n\t\t{#if bannerType.match(/(weapon|standard|chronicled)/)}\n\t\t\t{@html convertion('fiveStar')}\n\t\t{/if}\n\t\t{@html convertion('fourStar')}\n\t\t{@html convertion('threeStar')}\n\t</p>\n\n\t<p>{@html $t('details.duplicate.heading')}</p>\n\t{#if bannerType !== 'weapon-event'} <p>{@html duplicateDetails(5)}</p> {/if}\n\t<p>{@html duplicateDetails(4)}</p>\n\n\t{#if bannerType.match('event')}\n\t\t<p>{$t('details.alert', { values: { wishName: $t(`wish.banner.${bannerType}`) } })}</p>\n\t{/if}\n</div>\n\n<style>\n\tp :global(span):not([class*='-flat']) {\n\t\tcolor: #cf5e47;\n\t}\n\n\tp :global(span.invocation) {\n\t\tcolor: #ef7c1aff;\n\t}\n\n\tp :global(span.starglitter) {\n\t\tcolor: #c37b4d;\n\t}\n\tp :global(span.stardust) {\n\t\tcolor: #a256e1;\n\t}\n\tp :global(span.wish) {\n\t\tcolor: #debd6c;\n\t}\n\tp :global(span.electro-flat) {\n\t\tcolor: #ca82fc;\n\t}\n\tp :global(span.std-flat) {\n\t\tcolor: #757acdff;\n\t}\n\n\tp :global(span .weapon) {\n\t\tcolor: #bd6932;\n\t}\n\n\tp {\n\t\tfont-size: 150%;\n\t\tline-height: 170%;\n\t\tmargin: 1rem 0;\n\t}\n\n\t.v2 p {\n\t\tfont-size: calc(0.017 * var(--content-width));\n\t}\n\n\th2 {\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\tpadding: calc(0.007 * var(--content-width)) 0;\n\t\tdisplay: flex;\n\t}\n\n\th3 {\n\t\tpadding: 0.2rem 0.7rem;\n\t\tfont-weight: 400;\n\t\tcolor: #fff;\n\t\tbackground-color: #a28052;\n\t\tvertical-align: middle;\n\t}\n\n\t.v2 h3 {\n\t\tbackground-color: #6f778a;\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/details/_list.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { isCustomBanner } from '$lib/store/app-stores';\n\n\texport let drop5star;\n\texport let drop4star;\n\texport let drop3star;\n\texport let bannerType = '';\n\texport let tplVersion = 'v1';\n\n\tlet value5star;\n\tlet value4star;\n\tlet value3star;\n\tconst isChronicled = bannerType === 'chronicled';\n\n\tconst grouped5Star = {};\n\tdrop5star.forEach((d) => {\n\t\tconst { type = 'character' } = d;\n\t\tgrouped5Star[type] = grouped5Star[type] || [];\n\t\tgrouped5Star[type].push(d);\n\t});\n\n\tif (bannerType === 'weapon-event') {\n\t\tvalue5star = { singlePercentage: '0.700%', avgPercentage: '1.850%', rarity: 5 };\n\t\tvalue4star = { singlePercentage: '6.000%', avgPercentage: '14.500%', rarity: 4 };\n\t\tvalue3star = { singlePercentage: '93.300%', avgPercentage: '83.650%', rarity: 4 };\n\t} else {\n\t\tvalue5star = { singlePercentage: '0.600%', avgPercentage: '1.600%', rarity: 5 };\n\t\tvalue4star = { singlePercentage: '5.100%', avgPercentage: '13.000%', rarity: 4 };\n\t\tvalue3star = { singlePercentage: '94.300%', avgPercentage: '85.400%', rarity: 4 };\n\t}\n</script>\n\n<div class=\"list\" class:v2={tplVersion === 'v2'}>\n\t<h4>{$t('details.itemWishFor')}</h4>\n\n\t{#each Object.keys(grouped5Star) as key}\n\t\t{#if isChronicled}\n\t\t\t<h5>\n\t\t\t\t<i class=\"gi-primo-star\" />\n\t\t\t\t<span>\n\t\t\t\t\t{@html $t('details.targetList', {\n\t\t\t\t\t\tvalues: { itemType: `<b style=\"color:#bd6932\">${$t(key)}</b>` }\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t</h5>\n\t\t{/if}\n\n\t\t<h3 class=\"star5\">\n\t\t\t<div class=\"star\">\n\t\t\t\t{#each Array(5) as i} <i class=\"gi-star\" /> {/each}\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{$t('details.probInfo', { values: value5star })}\n\t\t\t</span>\n\t\t</h3>\n\n\t\t<div class=\"table\">\n\t\t\t<div>\n\t\t\t\t<div class=\"row head\">\n\t\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"body\">\n\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t{#each grouped5Star[key] as { name, type, rateup }}\n\t\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t\t{$t(type || 'character')}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{#if $isCustomBanner && rateup}\n\t\t\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t\t\t{name} <i class=\"gi-arrow-up\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t\t\t\t\t\t{#if rateup} <i class=\"gi-arrow-up\" />{/if}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{#if isChronicled}\n\t\t\t\t<h5>{$t('details.chronicledRate')}</h5>\n\t\t\t{/if}\n\t\t</div>\n\t{/each}\n\n\t<h3 class=\"star4\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as z, i}\n\t\t\t\t<i class=\"gi-star\" style={i > 3 ? 'color: transparent' : ''} />\n\t\t\t{/each}\n\t\t</div>\n\t\t<span>\n\t\t\t{$t('details.probInfo', { values: value4star })}\n\t\t</span>\n\t</h3>\n\t<div class=\"table\">\n\t\t<div>\n\t\t\t<div class=\"row head\">\n\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"body\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t{#each drop4star as { name, type, rateup }}\n\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t{$t(type)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t\t\t\t{#if rateup} <i class=\"gi-arrow-up\" />{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t{#if isChronicled}\n\t\t\t<h5>{$t('details.chronicledRate')}</h5>\n\t\t{/if}\n\t</div>\n\n\t<h3 class=\"star3\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as x, i}\n\t\t\t\t<i class=\"gi-star\" style={i > 2 ? 'color: transparent' : ''} />\n\t\t\t{/each}\n\t\t</div>\n\t\t<span>\n\t\t\t{$t('details.probInfo', { values: value3star })}\n\t\t</span>\n\t</h3>\n\t<div class=\"table\">\n\t\t<div>\n\t\t\t<div class=\"row head\">\n\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemType')}</div>\n\t\t\t\t<div class=\"cell\">{$t('details.itemName')}</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"body\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t{#each drop3star as { name, type }}\n\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t{$t(type)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"cell\">\n\t\t\t\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t{#if isChronicled}\n\t\t\t<h5>{$t('details.chronicledRate')}</h5>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.gi-arrow-up {\n\t\tfont-size: 1.2rem;\n\t\tvertical-align: middle;\n\t\tline-height: 0;\n\t\tcolor: #51be51;\n\t}\n\n\t.gi-star {\n\t\tcolor: #feca33;\n\t}\n\n\t:not(.v2) h3,\n\t:not(.v2) .table .body .row {\n\t\tvertical-align: middle;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\th3 {\n\t\tpadding: 0 0.7rem;\n\t\tfont-weight: 400;\n\t\tbackground-color: #a28052;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmargin-bottom: 1%;\n\t}\n\n\t.v2 h3 {\n\t\tcolor: #fff;\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\tpadding: 0.5% 2%;\n\t\tmargin: 0;\n\t}\n\n\th3 span {\n\t\tpadding-left: 2rem;\n\t}\n\n\th3.star5 {\n\t\tbackground-color: #dbbba4;\n\t}\n\t.v2 h3.star5 {\n\t\tbackground-color: #cfb383;\n\t}\n\n\th3.star4 {\n\t\tbackground-color: #b7abbf;\n\t}\n\t.v2 h3.star4 {\n\t\tbackground-color: #b5a8c9;\n\t}\n\n\th3.star3 {\n\t\tbackground-color: #a5bacc;\n\t}\n\t.v2 h3.star3 {\n\t\tbackground-color: #aabdc9;\n\t}\n\n\th4,\n\th5 {\n\t\tcolor: #a28052;\n\t\tfont-weight: 500;\n\t\tfont-size: larger;\n\t\tmargin-top: 1%;\n\t\tmargin-bottom: 2%;\n\t}\n\n\t.v2 h4,\n\t.v2 h5 {\n\t\tcolor: var(--text-color);\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t}\n\n\th5 {\n\t\tmargin: 1%;\n\t}\n\th5 i {\n\t\tcolor: #a28052;\n\t}\n\n\t.table {\n\t\tpadding: 0 0 2rem;\n\t\twidth: 100%;\n\t\tfont-size: 0.9rem;\n\t}\n\t.v2 .table {\n\t\tpadding: 0 0 calc(0.02 * var(--content-width));\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: flex-start;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tborder: 0.2px solid #b5b2ae;\n\t}\n\t.row.head {\n\t\tbackground-color: #dbd7d3;\n\t\tfont-family: var(--genshin-font);\n\t}\n\t.v2 .row.head {\n\t\tbackground-color: #ede1ca;\n\t}\n\t.body .row {\n\t\tborder-top: 0;\n\t}\n\n\t.cell:nth-child(odd) {\n\t\twidth: calc(3 / 14 * 100%);\n\t}\n\t.cell:nth-child(even) {\n\t\twidth: calc(4 / 14 * 100%);\n\t}\n\n\t.cell {\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tpadding: 1rem 0.5rem;\n\t\theight: 100%;\n\t\ttext-align: center;\n\t\tline-height: 1.2rem;\n\t\theight: 3.2rem;\n\t}\n\n\t.v2 .cell {\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\theight: calc(0.05 * var(--content-width));\n\t}\n\n\t.head .cell {\n\t\tborder: solid #b5b2ae;\n\t\tborder-width: 0 0.07rem;\n\t}\n\t.body .cell {\n\t\tborder: solid #b5b2ae;\n\t\tborder-width: 0 0.07rem 0.07rem 0;\n\t\tcolor: #a7865a;\n\t}\n\t.v2 .head .cell {\n\t\tborder-color: #d3bc8e;\n\t}\n\t.v2 .body .cell {\n\t\tborder-color: #d3bc8e;\n\t\tcolor: #5b5453;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/details/_promotional-v1.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { getName } from '$lib/helpers/nameText';\n\timport { assets, customData, isCustomBanner } from '$lib/store/app-stores';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\n\texport let chronicledList = [];\n\texport let data = {};\n\tlet { weapons = [], character = {}, bannerType = null, rateup = [] } = data;\n\tconst isWP = bannerType === 'weapon-event';\n</script>\n\n{#if bannerType.match('event')}\n\t<h2><span> {$t('details.increasedRate')} </span> <span class=\"line\" /></h2>\n\n\t<h3 class=\"star5\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<span>\n\t\t\t{$t('details.percentageDrop', {\n\t\t\t\tvalues: { rarity: 5, percentage: isWP ? '75.000%' : '50.000%' }\n\t\t\t})}\n\t\t</span>\n\t</h3>\n\n\t{#if bannerType === 'character-event'}\n\t\t<div class=\"character-card star5\">\n\t\t\t<picture style=\"background-image:url('{$assets['5star-bg.webp']}')\">\n\t\t\t\t<i class=\"gi-{character.vision} {character.vision} icon-gradient filter-drop\" />\n\t\t\t\t{#if $isCustomBanner}\n\t\t\t\t\t{@const { images = {}, character = '' } = $customData || {}}\n\t\t\t\t\t<img use:lazyLoad={images?.faceURL} alt={character} />\n\t\t\t\t{:else}\n\t\t\t\t\t<img\n\t\t\t\t\t\tuse:lazyLoad={$assets[`face/${character.name}`]}\n\t\t\t\t\t\talt={getName(character.name)}\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t/>\n\t\t\t\t{/if}\n\t\t\t</picture>\n\t\t\t<caption class=\"name\">{$t(`${character.name}.name`)}</caption>\n\t\t\t<i class=\"gi-{character.vision} element\" />\n\t\t</div>\n\t{:else}\n\t\t{#each weapons as { name, type }}\n\t\t\t<div class=\"character-card star5 weapons\">\n\t\t\t\t<picture style=\"background-image:url('{$assets['5star-bg.webp']}')\">\n\t\t\t\t\t<img src={$assets[name]} alt={getName(name)} class={type} crossorigin=\"anonymous\" />\n\t\t\t\t</picture>\n\t\t\t\t<caption class=\"name\">{$t(name)}</caption>\n\t\t\t</div>\n\t\t{/each}\n\t{/if}\n\n\t<div style=\"margin-top: 1rem;\" />\n\t<h3 class=\"star4\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(4) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<i class=\"gi-star\" style=\"color: transparent;\" />\n\t\t<span>\n\t\t\t{$t('details.percentageDrop', {\n\t\t\t\tvalues: { rarity: 4, percentage: isWP ? '75.000%' : '50.000%' }\n\t\t\t})}\n\t\t</span>\n\t</h3>\n\n\t{#if bannerType === 'character-event'}\n\t\t{#each rateup as { name, vision }}\n\t\t\t<div class=\"character-card star4\">\n\t\t\t\t<picture style=\"background-image:url('{$assets['4star-bg.webp']}')\">\n\t\t\t\t\t<i class=\"gi-{vision} {vision} icon-gradient filter-drop\" />\n\t\t\t\t\t<img src={$assets[`face/${name}`]} alt={getName(name)} crossorigin=\"anonymous\" />\n\t\t\t\t</picture>\n\t\t\t\t<caption class=\"name\">{$t(`${name}.name`)}</caption>\n\t\t\t\t<i class=\"gi-{vision} element\" />\n\t\t\t</div>\n\t\t{/each}\n\t{:else}\n\t\t{#each rateup as { name, type }}\n\t\t\t<div class=\"character-card star4\">\n\t\t\t\t<picture style=\"background-image:url('{$assets['4star-bg.webp']}')\">\n\t\t\t\t\t<img src={$assets[name]} alt={getName(name)} class={type} crossorigin=\"anonymous\" />\n\t\t\t\t</picture>\n\t\t\t\t<caption class=\"name\">{$t(name)}</caption>\n\t\t\t</div>\n\t\t{/each}\n\t{/if}\n\n\t<!-- Chronicled Banner -->\n{:else if bannerType.match('chronicled')}\n\t<h2 class=\"chartcourse\">\n\t\t<span style=\"white-space: wrap;\">\n\t\t\t{$t('details.chronicledCourse')} <strong class=\"weapon-flat\">50.000%</strong>\n\t\t</span> <span class=\"line\" />\n\t</h2>\n\n\t<h3 class=\"star5\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<span> {$t('details.chronicledPeriod')} </span>\n\t</h3>\n\n\t{#each chronicledList as { name, type }}\n\t\t<div class=\"character-card star5 weapons\">\n\t\t\t<picture style=\"background-image:url('{$assets['5star-bg.webp']}')\">\n\t\t\t\t{#if type === 'weapon'}\n\t\t\t\t\t<img src={$assets[name]} alt={$t(name)} class={type} crossorigin=\"anonymous\" />\n\t\t\t\t{:else}\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={$assets[`face/${name}`]}\n\t\t\t\t\t\talt={$t(`${name}.name`)}\n\t\t\t\t\t\tclass={type}\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t/>\n\t\t\t\t{/if}\n\t\t\t</picture>\n\t\t\t<caption class=\"name\">\n\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t</caption>\n\t\t</div>\n\t{/each}\n{/if}\n\n<h2><span>{$t('details.wishDetails')} </span> <span class=\"line\" /></h2>\n\n<style>\n\t.beginner :global(span) {\n\t\tcolor: #cba885;\n\t}\n\n\t.gi-star {\n\t\tcolor: #feca33;\n\t}\n\n\th2,\n\th3 {\n\t\tvertical-align: middle;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\th2 {\n\t\tfont-size: 1.5rem;\n\t\tfont-weight: 500;\n\t\tpadding: 1rem 0;\n\t\tmargin: 1.5rem 0 0.5rem;\n\t}\n\th2:not(.chartcourse) {\n\t\tdisplay: flex;\n\t}\n\t:global(.mobile) h2 {\n\t\tfont-size: 1.2rem;\n\t\tmargin: 0.5rem 0;\n\t}\n\n\th2 span:not(.line) {\n\t\tcolor: var(--text-color);\n\t\twidth: fit-content;\n\t\twhite-space: nowrap;\n\t\tpadding-right: 1rem;\n\t}\n\n\th2 span.line {\n\t\twidth: 100%;\n\t\tposition: relative;\n\t}\n\n\th2 span.line::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 100%;\n\t\theight: 0.1rem;\n\t\tbackground-color: #d1cfcc;\n\t}\n\n\th3 {\n\t\tpadding: 0.2rem 0.7rem;\n\t\tfont-weight: 400;\n\t\tcolor: #fff;\n\t\tbackground-color: #a28052;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\th3 span {\n\t\tpadding-left: 2rem;\n\t\tcolor: var(--text-color);\n\t}\n\th3.star5 {\n\t\tbackground-color: #dbbba4;\n\t}\n\th3.star4 {\n\t\tbackground-color: #b7abbf;\n\t}\n\n\t.character-card {\n\t\tbackground-color: #4d4d4d;\n\t\twidth: 30%;\n\t\tmin-width: 250px;\n\t\tmax-width: 320px;\n\t\taspect-ratio: 320/120;\n\t\tmargin: 1rem 0.5rem 0 0.5rem;\n\t\tposition: relative;\n\t\tpadding: 1rem;\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t}\n\t.character-card::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tborder: 0.1rem solid #6d6a63;\n\t\twidth: calc(100% - 0.8rem);\n\t\theight: calc(100% - 0.8rem);\n\t}\n\n\t:global(.mobile) .character-card {\n\t\tmin-width: unset;\n\t}\n\n\tpicture {\n\t\theight: 100%;\n\t\tdisplay: inline-block;\n\t\taspect-ratio: 1/1;\n\t\tbackground-size: cover;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\tobject-fit: cover;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\timg.claymore {\n\t\ttransform: rotate(18deg) scale(1.15) translateX(-0.7em);\n\t}\n\n\timg.bow {\n\t\ttransform: rotate(10deg) scale(1.25) translate(-0.5em, 0em);\n\t}\n\n\timg.polearm {\n\t\ttransform: rotate(10deg) scale(1.5) translate(-12%, 12%);\n\t\theight: 200%;\n\t}\n\n\timg.sword {\n\t\ttransform: rotate(10deg) scale(1.2) translateY(-1em) translate(-0.2em, 0.5em);\n\t}\n\n\tpicture i {\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tfont-size: 1.3rem;\n\t}\n\n\tcaption {\n\t\tcolor: #fff;\n\t\tpadding: 0.5rem 1rem;\n\t\tposition: relative;\n\t\tdisplay: inline-flex;\n\t\talign-items: flex-start;\n\t\tjustify-content: stretch;\n\t\ttext-align: left;\n\t}\n\n\tcaption::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tright: 0;\n\t\twidth: calc(100% - 1rem);\n\t\theight: 0.1rem;\n\t\ttop: 70%;\n\t\tposition: absolute;\n\t\tbackground-color: #fff;\n\t}\n\n\t@media screen and (max-width: 600px) {\n\t\t.character-card {\n\t\t\tmin-width: calc(50% - 1rem);\n\t\t}\n\t}\n\n\t.element {\n\t\tcolor: #fff;\n\t\topacity: 0.08;\n\t\tfont-size: 7em;\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\ttransform: translate(25%, 35%);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/details/_promotional-v2.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { assets, customData, isCustomBanner } from '$lib/store/app-stores';\n\timport { getName } from '$lib/helpers/nameText';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport Iklan from '$lib/components/Iklan.svelte';\n\n\texport let chronicledList = [];\n\texport let data = {};\n\tlet { weapons = [], character = {}, bannerType = null, rateup = [] } = data;\n\tconst isWP = bannerType === 'weapon-event';\n\tconst bg = $isCustomBanner ? $assets['5star-special.webp'] : $assets['5star-bg.webp'];\n</script>\n\n{#if bannerType.match('event')}\n\t<h2><span> {$t('details.increasedRate')} </span></h2>\n\n\t<h3 class=\"star5\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<span>\n\t\t\t{$t('details.percentageDrop', {\n\t\t\t\tvalues: { rarity: 5, percentage: isWP ? '75.000%' : '50.000%' }\n\t\t\t})}\n\t\t</span>\n\t</h3>\n\n\t<div class=\"row\">\n\t\t{#if !isWP}\n\t\t\t<div class=\"name\">\n\t\t\t\t<span class=\"{character.vision}-flat\">\n\t\t\t\t\t{$isCustomBanner ? character.name : $t(`${character.name}.name`)}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<div class=\"pic\">\n\t\t\t\t<div class=\"pic-item\">\n\t\t\t\t\t<picture class=\"star5\" style=\"background-image:url('{bg}');\">\n\t\t\t\t\t\t<i class=\"gi-{character.vision} {character.vision} icon-gradient filter-drop\" />\n\n\t\t\t\t\t\t{#if $isCustomBanner}\n\t\t\t\t\t\t\t{@const { images = {}, name = '' } = $customData || {}}\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tuse:lazyLoad={images?.faceURL}\n\t\t\t\t\t\t\t\tdata-placeholder={$assets['face-placeholder.webp']}\n\t\t\t\t\t\t\t\talt={name}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tuse:lazyLoad={$assets[`face/${character.name}`]}\n\t\t\t\t\t\t\t\talt={getName(character.name)}\n\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</picture>\n\t\t\t\t\t<span class=\"stars\">\n\t\t\t\t\t\t{#each Array(5) as i}\n\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</span>\n\t\t\t\t\t<caption>Lv.1</caption>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Weapon -->\n\t\t{:else}\n\t\t\t<div class=\"name\">\n\t\t\t\t{#each weapons as { name }}\n\t\t\t\t\t<span class=\"weapon-flat\">{$t(name)}</span>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t\t<div class=\"pic\">\n\t\t\t\t{#each weapons as { name, type }}\n\t\t\t\t\t<div class=\"pic-item\">\n\t\t\t\t\t\t<picture class=\"star5\" style=\"background-image:url('{$assets['5star-bg.webp']}')\">\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tuse:lazyLoad={$assets[name]}\n\t\t\t\t\t\t\t\talt={getName(name)}\n\t\t\t\t\t\t\t\tclass={type}\n\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t<span class=\"stars\">\n\t\t\t\t\t\t\t{#each Array(5) as i}\n\t\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<caption>Lv.1</caption>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n\n\t<Iklan type=\"banner\" />\n\n\t<!-- 4 Star Item -->\n\t<h3 class=\"star4\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(4) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<i class=\"gi-star\" style=\"color: transparent;\" />\n\t\t<span>\n\t\t\t{$t('details.percentageDrop', {\n\t\t\t\tvalues: { rarity: 4, percentage: isWP ? '75.000%' : '50.000%' }\n\t\t\t})}\n\t\t</span>\n\t</h3>\n\n\t<div class=\"row\">\n\t\t<div class=\"name\">\n\t\t\t{#each rateup as { name, vision }}\n\t\t\t\t<span class=\"{vision || 'wanderlust'}-flat\">{$t(`${name}${!isWP ? '.name' : ''}`)}</span>\n\t\t\t{/each}\n\t\t</div>\n\n\t\t<div class=\"pic\">\n\t\t\t{#if !isWP}\n\t\t\t\t{#each rateup as { name, vision }}\n\t\t\t\t\t<div class=\"pic-item\">\n\t\t\t\t\t\t<picture class=\"star4\" style=\"background-image:url('{$assets['4star-bg.webp']}')\">\n\t\t\t\t\t\t\t<i class=\"gi-{vision} {vision} icon-gradient filter-drop\" />\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tuse:lazyLoad={$assets[`face/${name}`]}\n\t\t\t\t\t\t\t\talt={getName(name)}\n\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t<span class=\"stars\">\n\t\t\t\t\t\t\t{#each Array(4) as i}\n\t\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<caption>Lv.1</caption>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{:else}\n\t\t\t\t{#each rateup as { name, type }}\n\t\t\t\t\t<div class=\"pic-item\">\n\t\t\t\t\t\t<picture class=\"star4\" style=\"background-image:url('{$assets['4star-bg.webp']}')\">\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tuse:lazyLoad={$assets[name]}\n\t\t\t\t\t\t\t\talt={getName(name)}\n\t\t\t\t\t\t\t\tclass={type}\n\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t<span class=\"stars\">\n\t\t\t\t\t\t\t{#each Array(4) as i}\n\t\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<caption>Lv.1</caption>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n\n\t<!-- Chronicled banner -->\n{:else if bannerType.match('chronicled')}\n\t<h2>\n\t\t{$t('details.chronicledCourse')} <strong class=\"weapon-flat\">50.000%</strong>\n\t</h2>\n\n\t<h3 class=\"star5\">\n\t\t<div class=\"star\">\n\t\t\t{#each Array(5) as i} <i class=\"gi-star\" /> {/each}\n\t\t</div>\n\t\t<span> {$t('details.chronicledPeriod')} </span>\n\t</h3>\n\n\t<div class=\"row\">\n\t\t<div class=\"name\">\n\t\t\t{#each chronicledList as { name, vision, type }}\n\t\t\t\t<span class=\"{vision || 'weapon'}-flat\">\n\t\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t</span>\n\t\t\t{/each}\n\t\t</div>\n\n\t\t<div class=\"pic\">\n\t\t\t{#each chronicledList as { name, vision, type }}\n\t\t\t\t<div class=\"pic-item\">\n\t\t\t\t\t<picture class=\"star5\" style=\"background-image:url('{bg}');\">\n\t\t\t\t\t\t<i class=\"gi-{vision} {vision} icon-gradient filter-drop\" />\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tuse:lazyLoad={type === 'weapon' ? $assets[name] : $assets[`face/${name}`]}\n\t\t\t\t\t\t\talt={$t(`${name}.name`)}\n\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</picture>\n\t\t\t\t\t<span class=\"stars\">\n\t\t\t\t\t\t{#each Array(5) as i}\n\t\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</span>\n\t\t\t\t\t<caption>Lv.1</caption>\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.beginner :global(span) {\n\t\tcolor: #cba885;\n\t}\n\n\t.gi-star {\n\t\tcolor: #feca33;\n\t}\n\n\th2 {\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\tpadding: calc(0.007 * var(--content-width)) 0;\n\t}\n\n\th3 {\n\t\tpadding: 0.2rem 0.7rem;\n\t\tfont-weight: 400;\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t\tcolor: #fff;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tpadding: 0.5% 1%;\n\t}\n\th3 span {\n\t\tpadding-left: 2rem;\n\t\tcolor: #fff;\n\t}\n\th3.star5 {\n\t\tbackground-color: #cfb383;\n\t}\n\th3.star4 {\n\t\tbackground-color: #b5a8c9;\n\t}\n\t.weapon-flat {\n\t\tcolor: #bd6932;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\t.name {\n\t\tflex-basis: 35%;\n\t\tpadding: 1.5%;\n\t}\n\t.name span {\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t\tdisplay: block;\n\t\tpadding: 2% 0;\n\t}\n\t.pic {\n\t\tflex-basis: 65%;\n\t\tpadding-bottom: 1%;\n\t}\n\n\t.pic-item {\n\t\tmargin: 2% 1.5% 0 0;\n\t\tpadding-bottom: 4%;\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\tbackground-color: #fff;\n\t\tborder-radius: 4%;\n\t\toverflow: hidden;\n\t}\n\n\tpicture {\n\t\theight: calc(0.095 * var(--content-width));\n\t\tdisplay: block;\n\t\taspect-ratio: 1/1;\n\t\tbackground-size: cover;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tborder-bottom-right-radius: 20%;\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\tobject-fit: cover;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\timg.claymore {\n\t\ttransform: rotate(18deg) scale(1.15) translateX(-0.7em);\n\t}\n\n\timg.bow {\n\t\ttransform: rotate(10deg) scale(1.25) translate(-0.5em, 0em);\n\t}\n\n\timg.polearm {\n\t\ttransform: rotate(10deg) scale(1.5) translate(-12%, 12%);\n\t\theight: 200%;\n\t}\n\n\timg.sword {\n\t\ttransform: rotate(10deg) scale(1.2) translateY(-1em) translate(-0.2em, 0.5em);\n\t}\n\n\t.stars {\n\t\tposition: absolute;\n\t\tbottom: 10%;\n\t\tleft: 50%;\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\ttransform: translateX(-50%);\n\t}\n\n\tpicture i {\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tfont-size: 1.3rem;\n\t}\n\n\tcaption {\n\t\tfont-size: calc(0.013 * var(--content-width));\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tposition: absolute;\n\t\tpadding: 3%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/History.svelte",
    "content": "<script>\n\t// Library\n\timport { onMount, setContext } from 'svelte';\n\timport { writable } from 'svelte/store';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport { APP_TITLE } from '$lib/env';\n\timport { activeBanner, bannerList } from '$lib/store/app-stores';\n\timport { localPity } from '$lib/helpers/dataAPI/api-localstore';\n\n\t// Components\n\timport Iklan from '$lib/components/Iklan.svelte';\n\timport SelectBanner from './_select-banner.svelte';\n\timport Reset from './_reset.svelte';\n\timport Report from './_report.svelte';\n\timport Filter from './_filter.svelte';\n\timport Legends from './_legends.svelte';\n\timport Pagination from './_pagination.svelte';\n\timport List from './_list.svelte';\n\timport Title from '../_title.svelte';\n\n\texport let tplVersion;\n\n\tlet dataLength = 0;\n\tlet filteredDataLength = 0;\n\tlet activepage = 1;\n\tlet itemPerPage = tplVersion === 'v2' ? 5 : 6;\n\tlet filterBy = 'All';\n\n\tconst pity5 = writable(0);\n\tconst pity4 = writable(0);\n\tsetContext('pity5', pity5);\n\tsetContext('pity4', pity4);\n\n\t$: banner = $bannerList.find((v, i) => i === $activeBanner).type;\n\t$: pity5.set(localPity.get(`pity5-${banner}`));\n\t$: pity4.set(localPity.get(`pity4-${banner}`));\n\n\tconst selectBanner = (path) => {\n\t\tactivepage = 1;\n\t\tbanner = path;\n\t\tfilterBy = 'All';\n\t};\n\tsetContext('selectBanner', selectBanner);\n\n\tconst clearHistory = () => {\n\t\tfilterBy = 'clear';\n\t\tactivepage = 1;\n\t};\n\tsetContext('clearHistory', clearHistory);\n\n\tconst filter = (selected) => {\n\t\tfilterBy = selected;\n\t\tactivepage = 1;\n\t};\n\tsetContext('tableFilter', filter);\n\n\tconst setDataLength = (allData, dataToShow) => {\n\t\tdataLength = allData;\n\t\tfilteredDataLength = dataToShow;\n\t};\n\tsetContext('setDataLength', setDataLength);\n\n\tconst navigation = (page) => (activepage = page);\n\tsetContext('navigation', navigation);\n\n\tlet container;\n\tonMount(() => {\n\t\tOverlayScrollbars(container, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n<svelte:head>\n\t<title>\n\t\t{$t(`history.title`)} | {$t('title', { default: APP_TITLE })}\n\t</title>\n</svelte:head>\n\n{#if tplVersion === 'v2'}\n\t<Title type=\"history\" />\n\t<SelectBanner v2 {banner} />\n\t<div class=\"container\" bind:this={container}>\n\t\t<div class=\"wrapper\">\n\t\t\t<p class=\"v2\">{$t('history.disclaimer')}</p>\n\t\t\t<div class=\"row\">\n\t\t\t\t<Report {dataLength} v2 />\n\t\t\t\t<Filter {filterBy} v2 />\n\t\t\t</div>\n\t\t\t<List v2 {banner} filter={filterBy} page={{ activepage, itemPerPage }} />\n\t\t\t<Iklan type=\"banner\" />\n\t\t</div>\n\t</div>\n\t<Legends {banner} v2 />\n\t<Pagination v2 dataLength={filteredDataLength} {itemPerPage} {activepage} />\n\n\t<!-- Old Layout -->\n{:else}\n\t<SelectBanner {banner} />\n\t<p>{$t('history.disclaimer')}</p>\n\n\t<div class=\"info\">\n\t\t<div class=\"left\">\n\t\t\t<Report {dataLength} />\n\t\t</div>\n\t\t<div class=\"right\">\n\t\t\t<Reset {banner} />\n\t\t\t<Filter {filterBy} />\n\t\t</div>\n\t</div>\n\n\t<List {banner} filter={filterBy} page={{ activepage, itemPerPage }} />\n\t<Legends {banner} />\n\t<Pagination dataLength={filteredDataLength} {itemPerPage} {activepage} />\n{/if}\n\n<style>\n\tp {\n\t\tpadding: 1rem 0;\n\t}\n\n\t.info {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-end;\n\t\tmargin-bottom: 0.5rem;\n\t}\n\n\t.info > .right {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t}\n\n\t@media screen and (max-width: 450px) {\n\t\t.info {\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t}\n\t\t.left {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t/* V2 */\n\t.row {\n\t\tdisplay: flex;\n\t}\n\n\t.container {\n\t\theight: 100%;\n\t}\n\n\tp.v2 {\n\t\tcolor: #8e8e8e;\n\t\tline-height: 120%;\n\t\tpadding: calc(0.008 * var(--content-width)) 0;\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_filter.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\n\texport let filterBy;\n\texport let v2 = false;\n\n\tlet showTableFilterOption = false;\n\t$: filterTxt = isNaN(filterBy)\n\t\t? $t('history.filterAll')\n\t\t: $t('history.filter', { values: { rarity: filterBy } });\n\n\tconst filterFunc = getContext('tableFilter');\n\tconst filter = (selected) => {\n\t\tshowTableFilterOption = !showTableFilterOption;\n\t\tfilterFunc(selected);\n\t};\n</script>\n\n<div class=\"table-filter\" class:v2>\n\t<span class=\"filter-selected\" on:click={() => (showTableFilterOption = !showTableFilterOption)}>\n\t\t{$t('history.filterTxt')} / {filterTxt}\n\t\t<i class=\"gi-caret-{showTableFilterOption ? 'up' : 'down'}\" />\n\t</span>\n\t{#if showTableFilterOption}\n\t\t<div class=\"options\" transition:fade={{ duration: 200 }}>\n\t\t\t<span on:click={() => filter('All')} class:active={isNaN(filterBy)}>\n\t\t\t\t{$t('history.filterAll')}\n\t\t\t</span>\n\t\t\t<span on:click={() => filter(5)} class:active={filterBy === 5}>\n\t\t\t\t{$t('history.filter', { values: { rarity: 5 } })}\n\t\t\t</span>\n\t\t\t<span on:click={() => filter(4)} class:active={filterBy === 4}>\n\t\t\t\t{$t('history.filter', { values: { rarity: 4 } })}\n\t\t\t</span>\n\t\t\t<span on:click={() => filter(3)} class:active={filterBy === 3}>\n\t\t\t\t{$t('history.filter', { values: { rarity: 3 } })}\n\t\t\t</span>\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.table-filter {\n\t\tposition: relative;\n\t}\n\n\t.filter-selected {\n\t\tdisplay: inline-block;\n\t\tborder: 1px solid #c3a280;\n\t\tborder-radius: 0.2rem;\n\t\tpadding: 0.3rem 1rem;\n\t\ttext-align: center;\n\t}\n\n\t.table-filter .options {\n\t\tposition: absolute;\n\t\ttop: 110%;\n\t\tright: 0;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tz-index: +1;\n\t\tbackground: #e8e6e5;\n\t\tborder: 1px solid #c3a280;\n\t\tborder-radius: 0.3rem;\n\t\tpadding: 0 0.2rem;\n\t}\n\n\t.table-filter .options span {\n\t\tpadding: 0.3rem 1rem;\n\t\ttransition: all 0.2s;\n\t\tborder-bottom: 0.5px solid #c8c8c8;\n\t}\n\t.table-filter .options span:hover {\n\t\tbackground-color: #d6d1cb;\n\t}\n\n\t/*  V2  */\n\t.table-filter.v2 {\n\t\tfont-size: calc(0.012 * var(--content-width));\n\t\tmargin-left: auto;\n\t\tmargin-top: auto;\n\t\tmargin-bottom: 0.5%;\n\t}\n\n\t.table-filter.v2 .options {\n\t\tbackground-color: #646975;\n\t\tborder: 0;\n\t\tpadding: 0;\n\t\tcolor: #fff;\n\t\toverflow: hidden;\n\t}\n\t.v2 .options span {\n\t\tborder: 0;\n\t\tpadding: calc(0.015 * var(--content-width)) calc(0.02 * var(--content-width));\n\t\tposition: relative;\n\t\tmargin: 1%;\n\t}\n\t.v2 .options span:hover {\n\t\tbackground-color: #717887;\n\t}\n\n\t.v2 .options span.active,\n\t.v2 .options span:hover {\n\t\tbackground-color: #717887;\n\t\tborder-radius: 3rem;\n\t}\n\n\t.v2 .options span.active::after {\n\t\tcontent: '✔';\n\t\tcolor: #eee;\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 50%;\n\t\tright: 10%;\n\t\tfont-size: 170%;\n\t\tline-height: 0;\n\t\ttransform: translateY(-50%);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_legends.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\n\texport let banner;\n\texport let v2;\n\n\t$: wpLegends = ['win', 'lose', 'guaranteed', 'selected'];\n\t$: chLegends = ['win', 'lose', 'guaranteed', 'captured'];\n\t$: legends = banner === 'character-event' ? chLegends : wpLegends;\n</script>\n\n{#if !['beginner', 'standard'].includes(banner)}\n\t<div class=\"legend\" class:v2>\n\t\t{#each legends as v}\n\t\t\t<div class=\"item\">\n\t\t\t\t<span class=\"star5\">\n\t\t\t\t\t<i class=\"gi-{v}\" style=\"font-size: larger;\" />\n\t\t\t\t</span>\n\t\t\t\t&nbsp; : &nbsp; {$t(`history.${v}`)}\n\t\t\t</div>\n\t\t{/each}\n\t</div>\n{/if}\n\n<style>\n\t.star5 {\n\t\tcolor: #bd6932;\n\t}\n\n\t.legend.v2 {\n\t\tfont-size: calc(0.013 * var(--content-width));\n\t}\n\n\t.legend {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmargin: 1% auto 0;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-weight: 600;\n\t}\n\n\t.legend .item {\n\t\tpadding-left: 1.5rem;\n\t\ttext-transform: capitalize;\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.legend:not(.v2) .item {\n\t\t\tmin-width: 40%;\n\t\t\tmax-width: 50%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_list.svelte",
    "content": "<script>\n\timport { browser } from '$app/environment';\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { HistoryManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { getBannerName, getName } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\texport let v2 = false;\n\texport let banner = 'beginner';\n\texport let filter = '';\n\texport let page = { itemPerPage: 0, activepage: 0 };\n\n\tlet data = [];\n\tlet dataToShow = [];\n\n\tconst { getListByBanner } = HistoryManager;\n\tconst setDataLength = getContext('setDataLength');\n\n\tconst getItemPage = (data, { itemPerPage = 0, activepage = 0 } = {}) => {\n\t\tconst result = data.filter((d, i) => {\n\t\t\tconst begining = i > (activepage - 1) * itemPerPage - 1;\n\t\t\tconst end = i < itemPerPage * activepage;\n\t\t\treturn begining && end;\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst filterData = (filterBy) => data.filter(({ rarity }) => rarity === filterBy);\n\tconst readData = async (banner, filter) => {\n\t\tif (!browser) return [];\n\t\tconst bannerList = await getListByBanner(banner);\n\t\tdata = bannerList.map((d) => d).reverse();\n\t\tdataToShow = filter && filter !== 'All' ? filterData(filter) : data;\n\t\tsetDataLength(data.length, dataToShow.length);\n\t\treturn data;\n\t};\n\n\t$: readData(banner, filter);\n\n\tconst query = getContext('query');\n\tconst navigate = getContext('navigate');\n\tconst search = (bannerName) => {\n\t\tquery.set(getName(bannerName));\n\t\tnavigate('allbanners', false);\n\t\tplaySfx();\n\t};\n</script>\n\n<div class=\"table\" class:v2>\n\t<div style=\"min-width: max-content;\">\n\t\t<div class=\"row head\">\n\t\t\t<div class=\"cell cell0\">{$t('history.pity')}</div>\n\t\t\t<div class=\"cell cell1\">{$t('details.itemType')}</div>\n\t\t\t<div class=\"cell cell2\">{$t('details.itemName')}</div>\n\t\t\t<div class=\"cell cell3\">{$t('history.timeReceived')}</div>\n\t\t\t<div class=\"cell cell4\">{$t('wish.banner.text')}</div>\n\t\t</div>\n\n\t\t<div class=\"body\">\n\t\t\t{#if dataToShow.length < 1}\n\t\t\t\t<div class=\"row\" style=\"justify-content: center\">\n\t\t\t\t\t<div class=\"cell\">{$t('history.noData')}</div>\n\t\t\t\t</div>\n\t\t\t{:else}\n\t\t\t\t{#each getItemPage(dataToShow, page) as { name, type, rarity, time, pity, bannerName, status, custom }}\n\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t<div class=\"cell cell0 star{rarity}\">\n\t\t\t\t\t\t\t{pity}\n\t\t\t\t\t\t\t{#if status}\n\t\t\t\t\t\t\t\t<span class=\"status\"> <i class=\"gi-{status}\" /> </span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"cell cell1\">{$t(type)}</div>\n\t\t\t\t\t\t{#if custom}\n\t\t\t\t\t\t\t<div class=\"cell cell2 star{rarity}\">\n\t\t\t\t\t\t\t\t{name} ( 5★ )\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<div class=\"cell cell2 star{rarity}\">\n\t\t\t\t\t\t\t\t{type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t\t\t\t\t{#if rarity > 3} ( {rarity}★ ) {/if}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t<div class=\"cell cell3\">{time}</div>\n\t\t\t\t\t\t<div class=\"cell cell4\">\n\t\t\t\t\t\t\t{#if bannerName}\n\t\t\t\t\t\t\t\t{@const { name } = getBannerName(bannerName)}\n\t\t\t\t\t\t\t\t{#if banner.match('beginner')}\n\t\t\t\t\t\t\t\t\t{$t('banner.beginner')}\n\t\t\t\t\t\t\t\t{:else if custom || !name}\n\t\t\t\t\t\t\t\t\t<span> {bannerName} </span>\n\t\t\t\t\t\t\t\t{:else if banner.match(/event|chronicled/)}\n\t\t\t\t\t\t\t\t\t<a href=\"/\" on:click|preventDefault={() => search(bannerName)}>\n\t\t\t\t\t\t\t\t\t\t{@html $t(`banner.${name}`).replaceAll(/(#)/gi, '')}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t{$t(`banner.wanderlust`)}\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t{$t('history.untracked')}\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\ta {\n\t\tmargin: 5px;\n\t}\n\n\tspan.status {\n\t\tfont-size: 80%;\n\t\tmargin-left: 5%;\n\t}\n\t.table {\n\t\twidth: 100%;\n\t\theight: 21.5rem;\n\t}\n\t.row {\n\t\tdisplay: flex;\n\t\tjustify-content: stretch;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tborder: 0.2px solid #b5b2ae;\n\t\theight: 3rem;\n\t}\n\t.row.head {\n\t\tbackground-color: #dbd7d3;\n\t\tfont-weight: bold;\n\t}\n\t.body .row {\n\t\tborder-top: 0;\n\t}\n\n\t.cell0 {\n\t\twidth: calc(1 / 12 * 100%);\n\t\tborder-right: 0.2px solid #b5b2ae;\n\t}\n\t.cell1 {\n\t\tmin-width: 80px;\n\t\twidth: calc(2 / 12 * 100%);\n\t\tborder-right: 0.2px solid #b5b2ae;\n\t}\n\t.cell2 {\n\t\twidth: calc(4 / 12 * 100%);\n\t\tborder-right: 0.2px solid #b5b2ae;\n\t\tmin-width: 15rem;\n\t}\n\t.cell3 {\n\t\twidth: calc(2.5 / 12 * 100%);\n\t\tborder-right: 0.2px solid #b5b2ae;\n\t\tmin-width: 12rem;\n\t}\n\t.cell4 {\n\t\twidth: calc(2.5 / 12 * 100%);\n\t\tmin-width: 12rem;\n\t}\n\t.cell {\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tpadding: 1rem 0.5rem;\n\t\theight: 100%;\n\t\ttext-align: center;\n\t\tline-height: 1rem;\n\t}\n\t.cell a,\n\t.cell span {\n\t\tcolor: #dda04f;\n\t}\n\n\t.gi-star {\n\t\tfont-size: 0.8em;\n\t}\n\n\t.star4 {\n\t\tcolor: #a256e1;\n\t}\n\t.star5 {\n\t\tcolor: #bd6932;\n\t}\n\n\t/* V2 */\n\t.table.v2 {\n\t\tfont-size: calc(0.015 * var(--content-width));\n\t\tcolor: #8e8e8e;\n\t\theight: unset;\n\t}\n\n\t.table.v2 .row.head {\n\t\tcolor: var(--text-color);\n\t\tbackground-color: #ede1ca;\n\t}\n\t.table.v2 .row:not(.head) {\n\t\tbackground-color: #f6f1e7;\n\t}\n\n\t.table.v2 .row {\n\t\theight: calc(0.045 * var(--content-width));\n\t}\n\t.table.v2 .cell,\n\t.table .row {\n\t\tborder-color: #d5bf94;\n\t\tline-height: 120%;\n\t}\n\t.table.v2 .row:not(.head) .cell1,\n\t.table.v2 .row:not(.head) .cell3,\n\t.table.v2 .row:not(.head) .cell4 {\n\t\tfont-size: calc(0.013 * var(--content-width));\n\t}\n\n\t.v2 .cell0,\n\t.v2 .cell1,\n\t.v2 .cell2,\n\t.v2 .cell3,\n\t.v2 .cell4 {\n\t\tmin-width: unset;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_pagination.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\n\texport let dataLength;\n\texport let activepage;\n\texport let itemPerPage;\n\texport let v2 = false;\n\n\tconst navigate = getContext('navigation');\n\tconst previous = () => {\n\t\tif (activepage > 1) navigate(activepage - 1);\n\t};\n\n\tconst next = () => {\n\t\tif (dataLength > activepage * itemPerPage) navigate(activepage + 1);\n\t};\n</script>\n\n<div class=\"pagination\" class:v2>\n\t<button class=\"prev\" disabled={activepage === 1} on:click={previous}>\n\t\t{#if v2}\n\t\t\t<span class=\"left arrow\" />\n\t\t{:else}\n\t\t\t<i class=\"gi-angle-left\" />\n\t\t{/if}\n\t</button>\n\t<span class=\"active\">{activepage}</span>\n\t<button class=\"next\" disabled={!(dataLength > activepage * itemPerPage)} on:click={next}>\n\t\t{#if v2}\n\t\t\t<span class=\"right arrow\" />\n\t\t{:else}\n\t\t\t<i class=\"gi-angle-right\" />\n\t\t{/if}\n\t</button>\n</div>\n\n<style>\n\t.pagination {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin: 10px;\n\t\ttext-align: center;\n\t\tjustify-content: center;\n\t}\n\n\t.pagination button,\n\t.pagination span {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 2.5rem;\n\t\taspect-ratio: 1/1;\n\t\tborder-radius: 2px;\n\t\tmargin: 5px;\n\t}\n\t.pagination button {\n\t\tbackground-color: #c3a280;\n\t\tcolor: #d7cbbd;\n\t}\n\t.pagination span {\n\t\tbackground-color: #918981;\n\t\tcolor: #fff;\n\t}\n\n\t/* V2 */\n\t.pagination.v2 {\n\t\tmargin: 1% 0 0;\n\t\tfont-size: calc(0.02 * var(--content-width));\n\t\tcolor: #8e8e8e;\n\t}\n\n\t.pagination.v2 > button,\n\t.pagination.v2 span {\n\t\twidth: calc(0.028 * var(--content-width));\n\t\tmargin: 0 2%;\n\t\tbackground-color: transparent;\n\t}\n\n\t.pagination.v2 span {\n\t\tcolor: var(--text-color);\n\t}\n\t.pagination.v2 button {\n\t\tborder-radius: 100%;\n\t\tborder: 2px solid #d7cbbd;\n\t}\n\n\tspan.arrow {\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAASCAMAAAAJ4/xdAAAAY1BMVEVHcExZUlJZUVFVTU1YUVFYUVFZUVFZUlJZUlJYTU1ZUFBZUVFYUVFYT09ZRUVXTk5YUVFZUlJZQ0NYUVFZUVFZUlJZUVFZUlJYTk5ZUVFZUlJYT09ZUVFYUlJOTk5OTk5ZUlKPb9bhAAAAIHRSTlMAz+kiZfbk8foSSKpVNAgqsokLxqTbcsAbhNc6j5YGDUB/3r0AAACpSURBVBgZfcEFEoMwAATAC0Rxrcv9/5UFmjBAobtYKytj0hJ/JIYDk+CQtJxYiQM1Z1fsKVIudAV+uJYrZ4eNuOfGLcbKPaKnFL0ox0Km6EX5PaKnMsxODG4xEPf07Anek8HZYeBaBg+MmopB98KkSBlUDeAEgytmNYPWIaVnJRakpddB8cskWEkMvww0J7rERq456SE5Ehf8uAiOJJAJq+sGO94PbUWGD0o8IC9WAY0jAAAAAElFTkSuQmCC');\n\t\tbackground-size: contain;\n\t\tbackground-repeat: no-repeat;\n\t\twidth: calc(0.01 * var(--content-width));\n\t\taspect-ratio: 2.5/1;\n\t\ttransform-origin: 40%;\n\t}\n\t.arrow.left {\n\t\ttransform: rotate(-90deg) translateY(10%);\n\t}\n\t.arrow.right {\n\t\ttransform: rotate(90deg) translateY(-40%);\n\t}\n\n\tbutton:disabled span {\n\t\topacity: 0.3;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_report.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { userCurrencies } from '$lib/helpers/currencies';\n\timport Icon from '$lib/components/Icon.svelte';\n\n\texport let v2 = false;\n\texport let dataLength = 0;\n\n\tconst pity5 = getContext('pity5');\n\tconst pity4 = getContext('pity4');\n\n\t$: totalSpend = userCurrencies.getTotalSpend(dataLength);\n</script>\n\n{#if v2}\n\t<div class=\"cell v2\">\n\t\t{$t('history.currentPity')} &nbsp; <strong class=\"star5\"> {$pity5} </strong> &nbsp; - &nbsp;\n\t\t<strong class=\"star4\"> {$pity4} </strong>\n\t\t<br />\n\t\t{$t('history.totalPull')} <span class=\"lighted\"> <strong> {dataLength} </strong> </span>\n\t</div>\n\t<div class=\"cell v2\">\n\t\t{$t('history.totalSpend')}\n\t\t<span class=\"lighted\">\n\t\t\t<strong style=\"position:relative\">\n\t\t\t\t{dataLength * 160}\n\t\t\t\t<Icon type=\"primogem\" />\n\t\t\t</strong>\n\t\t</span>\n\t\t<br />\n\t\tEst. <span class=\"lighted\"> <strong> {totalSpend} </strong> </span>\n\t</div>\n{:else}\n\t{$t('history.currentPity')} &nbsp; <strong class=\"star5\"> {$pity5} </strong> &nbsp; - &nbsp;\n\t<strong class=\"star4\"> {$pity4} </strong>\n\t<br />\n\t{$t('history.totalPull')} <span class=\"lighted\"> <strong> {dataLength} </strong> </span>\n\t<br />\n\t{$t('history.totalSpend')}\n\t<span class=\"lighted\">\n\t\t<strong style=\"position:relative\">\n\t\t\t{dataLength * 160}\n\t\t\t<Icon type=\"primogem\" />\n\t\t</strong>\n\t</span>\n\t~\n\t<span class=\"lighted\"> <strong> {totalSpend} </strong> </span>\n{/if}\n\n<style>\n\t.star4,\n\t.lighted {\n\t\tcolor: #a256e1;\n\t}\n\t.star5 {\n\t\tcolor: #bd6932;\n\t}\n\n\t.cell {\n\t\twidth: 33.33333333333%;\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t}\n\n\t.lighted :global(img) {\n\t\twidth: 20px;\n\t\tborder-radius: 100%;\n\t\taspect-ratio: 1/1;\n\t\tborder: 1px solid orange;\n\t}\n\n\t.v2 .lighted :global(img) {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\ttransform: translate(125%, -20%);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_reset.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { getContext } from 'svelte';\n\timport {\n\t\trollCounter,\n\t\tlocalPity,\n\t\tguaranteedStatus,\n\t\towneditem\n\t} from '$lib/helpers/dataAPI/api-localstore';\n\timport { showBeginner, beginnerRemaining } from '$lib/store/app-stores';\n\timport { HistoryManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport CheckBox from '$lib/components/CheckBox.svelte';\n\n\texport let banner;\n\texport let v2 = false;\n\n\tlet showModal = false;\n\tlet keepPity = false;\n\tconst pity5 = getContext('pity5');\n\tconst pity4 = getContext('pity4');\n\n\tconst { clearHistory, getListByBanner } = HistoryManager;\n\n\tconst renewItemQty = async (banner) => {\n\t\tconst tmp = {};\n\t\tconst listFromBanner = await getListByBanner(banner);\n\t\tlistFromBanner.forEach(({ itemID }) => {\n\t\t\ttmp[itemID] = (tmp[itemID] || 0) + 1;\n\t\t});\n\t\tObject.keys(tmp).forEach((key) => owneditem.put({ itemID: key, qty: -1 * tmp[key] }));\n\t};\n\n\tconst clear = getContext('clearHistory');\n\tconst confirmReset = async () => {\n\t\tawait renewItemQty(banner);\n\t\tawait clearHistory(banner);\n\n\t\t// Keep Pity\n\t\tif (!keepPity) {\n\t\t\tlocalPity.set(`pity5-${banner}`, 0);\n\t\t\tlocalPity.set(`pity4-${banner}`, 0);\n\t\t\tpity5.set(0);\n\t\t\tpity4.set(0);\n\n\t\t\t// GuaranteedStatus\n\t\t\tif (banner.match('event')) {\n\t\t\t\tguaranteedStatus.set(`${banner}-4star`, false);\n\t\t\t\tguaranteedStatus.set(`${banner}-5star`, false);\n\t\t\t} else guaranteedStatus.set(banner, false);\n\t\t}\n\n\t\t// Show Back Beginner Banner\n\t\tif (banner === 'beginner') {\n\t\t\trollCounter.set('beginner', 0);\n\t\t\tshowBeginner.set(true);\n\t\t\tbeginnerRemaining.set(20);\n\t\t}\n\n\t\tclear();\n\t\tplaySfx();\n\n\t\tshowModal = false;\n\t\tconst message = $t('history.resetSuccess');\n\t\tpushToast({ message, type: 'success' });\n\t};\n\n\tconst handleModal = () => {\n\t\tplaySfx(showModal ? 'close' : 'modal');\n\t\tshowModal = !showModal;\n\t};\n</script>\n\n{#if showModal}\n\t<Modal title={$t('history.resetPromptTitle')} on:cancel={handleModal} on:confirm={confirmReset}>\n\t\t<div class=\"confirmation\">\n\t\t\t<div style=\"padding: 0 1rem\">\n\t\t\t\t<p>\n\t\t\t\t\t{@html $t('history.resetPrompt', {\n\t\t\t\t\t\tvalues: { bannerName: `<b>${$t(`wish.banner.${banner}`)}</b>` }\n\t\t\t\t\t})}\n\t\t\t\t</p>\n\n\t\t\t\t<div class=\"keep-setting\" style=\"margin-top: 5%;\">\n\t\t\t\t\t<CheckBox checked={keepPity} on:change={({ detail }) => (keepPity = !!detail.checked)}>\n\t\t\t\t\t\t<small> {@html $t('history.keepPity')}</small>\n\t\t\t\t\t</CheckBox>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</Modal>\n{/if}\n\n<button class=\"reset\" class:v2 on:click={handleModal}>\n\t<i class=\"gi-delete\" />\n\t{$t('history.resetButton')}\n</button>\n\n<style>\n\t.confirmation {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tfont-family: var(--genshin-font);\n\t\tpadding: 3%;\n\t}\n\n\t.reset {\n\t\tcolor: #bd6932;\n\t\tfont-size: 1em;\n\t}\n\n\t.v2.reset {\n\t\tfont-size: calc(0.016 * var(--content-width));\n\t}\n\t.reset:hover {\n\t\ttext-decoration: underline;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/history/_select-banner.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Reset from './_reset.svelte';\n\n\texport let v2 = false;\n\texport let banner;\n\tlet showSelectList = false;\n\n\tconst list = ['beginner', 'character-event', 'weapon-event', 'chronicled', 'standard'];\n\t$: nowOpenIndex = list.findIndex((type) => type === banner.toLocaleLowerCase());\n\t$: selected = nowOpenIndex < 0 ? 2 : nowOpenIndex;\n\n\tconst selectBanner = getContext('selectBanner');\n\tconst select = (bn) => {\n\t\tshowSelectList = !showSelectList;\n\t\tselectBanner(bn);\n\t\tplaySfx();\n\t};\n</script>\n\n<div class=\"selectType\" class:v2>\n\t<div style=\"--bg:url({$assets['history-select-bg.webp']})\" class=\"wish-type\" class:v2>\n\t\t<span> {$t('history.selectWish')} </span>\n\t\t<div class=\"select-box\">\n\t\t\t<button class=\"selected\" on:click={() => (showSelectList = !showSelectList)}>\n\t\t\t\t<span>{@html $t(`wish.banner.${banner}`)}</span>\n\n\t\t\t\t{#if v2}\n\t\t\t\t\t<span class=\"arrow icon {showSelectList ? 'up' : 'down'}\" />\n\t\t\t\t{:else}\n\t\t\t\t\t<i class=\"arrow gi-caret-{showSelectList ? 'up' : 'down'}\" />\n\t\t\t\t{/if}\n\t\t\t</button>\n\n\t\t\t{#if showSelectList}\n\t\t\t\t<div class=\"select-list\" transition:fade={{ duration: 200 }}>\n\t\t\t\t\t{#each list as type, i}\n\t\t\t\t\t\t<button class=\"item\" class:active={selected === i} on:click={() => select(type)}>\n\t\t\t\t\t\t\t{@html $t(`wish.banner.${type}`)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n\n\t{#if v2}\n\t\t<div class=\"reset\">\n\t\t\t<Reset {banner} v2 />\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.selectType {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.reset {\n\t\ttext-align: right;\n\t}\n\n\t.wish-type {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t.wish-type span {\n\t\tpadding: 5px;\n\t}\n\n\t.select-box {\n\t\twidth: 270px;\n\t\tmax-width: 100%;\n\t\tposition: relative;\n\t\tmargin: 0 15px;\n\t}\n\n\t.selected .arrow {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tright: 1rem;\n\t\tfont-size: 2rem;\n\t\ttransform: translateY(-50%);\n\t}\n\n\t.selected,\n\t.select-list {\n\t\twidth: 100%;\n\t\tborder: 0.15rem solid #b5b2ae;\n\t\tbackground-color: #dbd7d3;\n\t\tborder-radius: 0.25rem;\n\t}\n\t.selected,\n\t.item {\n\t\ttext-align: left;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tcolor: #757575;\n\t\ttext-decoration: none;\n\t\tpadding: 6px 15px;\n\t\ttransition: background 0.2s;\n\t}\n\t.item.active,\n\t.item:hover {\n\t\tbackground-color: #efebe7;\n\t}\n\n\t.select-list {\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\ttop: 130%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\t@media screen and (max-width: 495px) {\n\t\t.wish-type:not(.v2) {\n\t\t\tflex-direction: column;\n\t\t}\n\t}\n\n\t:global(.mobile) .wish-type {\n\t\tfont-size: 0.9em;\n\t}\n\n\t/* V2 */\n\t.wish-type.v2 {\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: contain;\n\t\tbackground-repeat: no-repeat;\n\t\taspect-ratio: 201/11;\n\t\tjustify-content: flex-start;\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t\tmargin-bottom: calc(0.005 * var(--content-width));\n\t}\n\n\t.wish-type.v2 > span {\n\t\twidth: calc(0.23 * var(--content-width));\n\t\ttext-align: right;\n\t\tline-height: 90%;\n\t}\n\n\t.v2 .select-box {\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t}\n\n\t.v2 .selected {\n\t\tpadding-left: calc(0.035 * var(--content-width));\n\t\tfont-size: calc(0.014 * var(--content-width));\n\t\tcolor: var(--text-color);\n\t\tbackground-color: transparent;\n\t\tborder: transparent;\n\t}\n\n\t.v2 .select-list {\n\t\tbackground-color: #646975;\n\t\tborder: 0;\n\t\tborder-radius: 1rem;\n\t\toverflow: hidden;\n\t}\n\t.v2 .item {\n\t\tcolor: #eee;\n\t\tpadding: calc(0.02 * var(--content-width)) calc(0.03 * var(--content-width));\n\t\tposition: relative;\n\t\tmargin: 0.5% 1%;\n\t\twidth: 98%;\n\t}\n\n\t.v2 .item.active,\n\t.v2 .item:hover {\n\t\tbackground-color: #717887;\n\t\tborder-radius: 3rem;\n\t}\n\n\t.v2 .item.active::after {\n\t\tcontent: '✔';\n\t\tcolor: #eee;\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 50%;\n\t\tright: 5%;\n\t\tfont-size: 170%;\n\t\tline-height: 0;\n\t\ttransform: translateY(-50%);\n\t}\n\n\t.selectType.v2 .reset {\n\t\twidth: calc(0.13 * var(--content-width));\n\t\ttext-align: center;\n\t}\n\n\t.arrow.icon {\n\t\twidth: calc(0.02 * var(--content-width));\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAASCAMAAAAJ4/xdAAAAY1BMVEVHcExZUlJZUVFVTU1YUVFYUVFZUVFZUlJZUlJYTU1ZUFBZUVFYUVFYT09ZRUVXTk5YUVFZUlJZQ0NYUVFZUVFZUlJZUVFZUlJYTk5ZUVFZUlJYT09ZUVFYUlJOTk5OTk5ZUlKPb9bhAAAAIHRSTlMAz+kiZfbk8foSSKpVNAgqsokLxqTbcsAbhNc6j5YGDUB/3r0AAACpSURBVBgZfcEFEoMwAATAC0Rxrcv9/5UFmjBAobtYKytj0hJ/JIYDk+CQtJxYiQM1Z1fsKVIudAV+uJYrZ4eNuOfGLcbKPaKnFL0ox0Km6EX5PaKnMsxODG4xEPf07Anek8HZYeBaBg+MmopB98KkSBlUDeAEgytmNYPWIaVnJRakpddB8cskWEkMvww0J7rERq456SE5Ehf8uAiOJJAJq+sGO94PbUWGD0o8IC9WAY0jAAAAAElFTkSuQmCC');\n\t\tbackground-size: contain;\n\t\tbackground-repeat: no-repeat;\n\t}\n\t.v2 .arrow.icon.up {\n\t\ttransform: translateY(-50%) rotate(0);\n\t}\n\n\t.v2 .arrow.icon.down {\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_gachainfo/index.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { assets } from '$lib/store/app-stores';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Book from './_book-bg.svelte';\n\timport Details from './details/Details.svelte';\n\timport History from './history/History.svelte';\n\n\texport let page = '';\n\n\tconst animatedBG = localConfig.get('animatedBG');\n\n\tconst navigate = getContext('navigate');\n\tconst handleCLose = () => {\n\t\tnavigate('index');\n\t\tplaySfx('close');\n\t};\n\tsetContext('close-detail', handleCLose);\n\n\tlet tplVersion = cookie.get('detail-tpl') || 'v2';\n\tconst setTpl = (v) => {\n\t\tcookie.set('detail-tpl', v);\n\t\ttplVersion = v;\n\t};\n\tsetContext('detail-tpl', setTpl);\n\n\t// shortcut\n\thotkeys('esc', page, (e) => {\n\t\te.preventDefault();\n\t\thandleCLose();\n\t});\n</script>\n\n<section\n\ttransition:fade={{ duration: 200 }}\n\tclass:v2={tplVersion === 'v2'}\n\tclass:animatedBG\n\tstyle=\"--bg:url({$assets['wish-background.webp']})\"\n>\n\t{#if tplVersion !== 'v2'}\n\t\t<div class=\"header\" in:fly={{ y: -25 }}>\n\t\t\t<button on:click={handleCLose}>\n\t\t\t\t<i class=\"gi-reply\" />\n\t\t\t</button>\n\n\t\t\t<button class=\"switchNewTpl\" on:click={() => setTpl('v2')}> {$t('history.switchv2')} </button>\n\t\t</div>\n\t{/if}\n\n\t<div class=\"content-details {page}\" class:v2={tplVersion === 'v2'}>\n\t\t<Book {tplVersion}>\n\t\t\t{#if page === 'details'}\n\t\t\t\t<Details {tplVersion} />\n\t\t\t{:else if page === 'history'}\n\t\t\t\t<History {tplVersion} />\n\t\t\t{/if}\n\t\t</Book>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\tbackground-color: #ebebeb;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tcolor: var(--text-color);\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\n\tsection.v2 {\n\t\tbackground-color: transparent;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\t.content-details:not(.v2) {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.content-details :global(h1),\n\t.content-details :global(.pop-footer button) {\n\t\tfont-family: var(--genshin-font);\n\t}\n\n\t.header {\n\t\tdisplay: flex;\n\t\tpadding: 0 2%;\n\t\tjustify-content: space-between;\n\t\tbackground-color: rgb(20, 18, 15);\n\t\twidth: 100%;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: +10;\n\t}\n\n\t.gi-reply {\n\t\tcolor: #dbd7d3;\n\t\tfont-size: 2.2rem;\n\t\tline-height: 0;\n\t\tpadding: 0.3rem 1rem;\n\t\tdisplay: inline-block;\n\t}\n\t.switchNewTpl {\n\t\tcolor: darkgoldenrod;\n\t\ttext-decoration: underline;\n\t\ttransition: all 0.3s;\n\t}\n\t.switchNewTpl:hover {\n\t\tcolor: rgb(255, 238, 213);\n\t}\n\n\t.content-details {\n\t\tpadding: 4rem 10% 1rem;\n\t\twidth: 100%;\n\t\toverflow-x: hidden;\n\t}\n\n\t.content-details.v2 {\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tpadding: 0 10%;\n\t\toverflow-x: auto;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-position: 20%;\n\t\tbackground-image: var(--bg);\n\t}\n\t.animatedBG .content-details.v2 {\n\t\tbackground-image: unset;\n\t}\n\n\t.content-details.v2::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t:global(.mobile) .content-details.v2 {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\t}\n\n\t@media screen and (max-width: 780px) {\n\t\t:global(main):not(.mobile) .content-details {\n\t\t\tpadding: 3.5rem 5% 0;\n\t\t}\n\n\t\t:global(main):not(.mobile) .content-details.v2 {\n\t\t\tpadding: 0 5% !important;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/InitialLoader.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { mobileMode, isMobile, assets } from '$lib/store/app-stores';\n\timport { itemList, listingAssets, blobAssets } from '$lib/helpers/assets';\n\n\texport let isBannerLoaded = false;\n\texport let directLoad = false;\n\n\tlet anyError = false;\n\tlet isLoaded = false;\n\tlet current = -1;\n\n\tconst loaded = getContext('loaded');\n\tconst handleLoaded = () => {\n\t\tloaded();\n\t\tisLoaded = true;\n\t};\n\n\tconst assetInit = async (param) => {\n\t\tconst ispreview = param === 'preview';\n\t\tconst arr = [];\n\t\tlet i = 0;\n\t\tconst raw = ispreview ? listingAssets('preview') : listingAssets();\n\t\tfor await (const assetData of raw) {\n\t\t\ti++;\n\t\t\tconst { path, asset } = assetData;\n\t\t\tconst blob = await blobAssets(path);\n\t\t\tif (blob === 'error') anyError = true;\n\t\t\tarr.push({ url: blob, name: asset });\n\t\t\tcurrent = (i / raw.length) * 100;\n\t\t}\n\n\t\tconst loadedAssets = await Promise.all(arr);\n\t\tconst list = await itemList();\n\t\tassets.update((pv) => {\n\t\t\tpv = {};\n\t\t\tloadedAssets.forEach(({ url, name }) => (pv[name] = url));\n\t\t\treturn { ...pv, ...list };\n\t\t});\n\n\t\tif (anyError === false) handleLoaded();\n\t};\n\n\tonMount(() => {\n\t\tassetInit(directLoad ? 'preview' : '');\n\t});\n</script>\n\n{#if anyError && !isLoaded}\n\t<div class=\"modal\">\n\t\t<div class=\"modal-content\">\n\t\t\t<div class=\"msg\">\n\t\t\t\tAn error occurred while trying to load some assets, this may affect your wish experience.\n\t\t\t\t<br />\n\t\t\t\t<small>\n\t\t\t\t\t<small>\n\t\t\t\t\t\tIf you think this is a mistake, please contact me on\n\t\t\t\t\t\t<a href=\"https://discord.com/users/523179264116523018\" style=\"color: #7289da\">\n\t\t\t\t\t\t\tDiscord\n\t\t\t\t\t\t</a>!\n\t\t\t\t\t</small>\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div class=\"btn\">\n\t\t\t\t<button class=\"reload\" on:click={() => window.location.reload()}>Reload</button>\n\t\t\t\t<button class=\"open\" on:click={handleLoaded}>Open Anyway</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n{/if}\n\n{#if !((isBannerLoaded || directLoad) && isLoaded && current >= 100)}\n\t<div class=\"loader\" out:fade={{ duration: 500, delay: 1000 }}>\n\t\t<div class=\"content\">\n\t\t\t<div class=\"progress\">\n\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t<i class=\"gi-pyro\" />\n\t\t\t\t\t<i class=\"gi-hydro\" />\n\t\t\t\t\t<i class=\"gi-anemo\" />\n\t\t\t\t\t<i class=\"gi-electro\" />\n\t\t\t\t\t<i class=\"gi-dendro\" />\n\t\t\t\t\t<i class=\"gi-cryo\" />\n\t\t\t\t\t<i class=\"gi-geo\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"blend\">\n\t\t\t\t\t<div class=\"unfilled\" />\n\t\t\t\t\t<div class=\"filled animate\" style=\"width:{current.toFixed(2)}%\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{#if current < 0}\n\t\t\t\t<div class=\"text connecting\" transition:fade>Connecting</div>\n\t\t\t{:else}\n\t\t\t\t<div class=\"text\" in:fade>{current > 99 ? 100 : current.toFixed()}%</div>\n\t\t\t{/if}\n\n\t\t\t{#if $isMobile && !$mobileMode}\n\t\t\t\t<div class=\"rotate\">\n\t\t\t\t\t<i class=\"gi-rotate-phone\" />\n\t\t\t\t\t<span>Rotate for better experience </span>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.modal {\n\t\tposition: fixed;\n\t\tz-index: 9999;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100vw;\n\t\theight: 100vh;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tbackdrop-filter: blur(8px);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n\n\t.modal-content {\n\t\tbackground-color: #fff;\n\t\tborder-radius: 0.4rem;\n\t\twidth: 500px;\n\t\tmax-width: 80%;\n\t\tpadding: 2%;\n\t}\n\n\t.btn {\n\t\tpadding-top: 5%;\n\t\twidth: 100%;\n\t}\n\tbutton {\n\t\tcolor: #fff;\n\t\tpadding: 2% 6%;\n\t}\n\n\t.reload {\n\t\tbackground-color: #94866e;\n\t}\n\n\t.open {\n\t\tbackground-color: #353533;\n\t}\n\n\t.loader {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 3.2vw;\n\t\tcolor: #666666;\n\t\twidth: 100%;\n\t\theight: 100vh;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #fff;\n\t\tz-index: 9998;\n\t}\n\n\t@media screen and (max-width: 600px) {\n\t\t.loader {\n\t\t\tfont-size: 4vh;\n\t\t}\n\t}\n\n\t.content {\n\t\tdisplay: block;\n\t\ttext-align: center;\n\t}\n\n\t.text {\n\t\tfont-size: 1rem;\n\t\theight: 1.5rem;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.text.connecting::after {\n\t\tcontent: '..';\n\t\tdisplay: inline-block;\n\t\tanimation: dot 4s linear infinite;\n\t}\n\n\t.progress {\n\t\twidth: max-content;\n\t\tposition: relative;\n\t}\n\t.blend {\n\t\tmix-blend-mode: lighten;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.rotate {\n\t\tposition: fixed;\n\t\twidth: 100%;\n\t\tleft: 50%;\n\t\tbottom: 20%;\n\t\ttransform: translateX(-50%);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\tcolor: #000;\n\t}\n\t.rotate span {\n\t\tfont-size: 0.8rem;\n\t\tmargin-top: 1rem;\n\t}\n\n\t.rotate i {\n\t\tanimation: rotatePhone 1s infinite alternate;\n\t\ttransform-origin: center;\n\t\tline-height: 1rem;\n\t}\n\n\t.unfilled,\n\t.filled {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\theight: 100%;\n\t}\n\n\t.unfilled {\n\t\twidth: 100%;\n\t\tbackground-color: #f7f7f7;\n\t}\n\t.filled {\n\t\tbackground-color: #666666;\n\t}\n\n\t@keyframes dot {\n\t\t0% {\n\t\t\tcontent: '';\n\t\t}\n\t\t33% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t66% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t100% {\n\t\t\tcontent: '...';\n\t\t}\n\t}\n\n\t@keyframes rotatePhone {\n\t\t0% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t100% {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/ModalConvert.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { genesis, primogem } from '$lib/store/app-stores';\n\timport { localBalance } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport Range from '$lib/components/Range.svelte';\n\timport ModalBalance from '../_shop/_modal-balance.svelte';\n\n\tlet value = 1;\n\t$: value = value > $genesis ? $genesis : parseInt(value);\n\tsetContext('setValue', (val) => (value = val));\n\n\tconst openObtained = getContext('openObtained');\n\tconst closeConvertModal = getContext('closeConvertModal');\n\tconst cancelModal = () => {\n\t\tcloseConvertModal();\n\t\tplaySfx('close');\n\t};\n\tsetContext('closeModal', cancelModal);\n\n\tconst confirmConvert = () => {\n\t\tprimogem.update((v) => {\n\t\t\tconst newVal = v + value;\n\t\t\tlocalBalance.set('primogem', newVal);\n\t\t\treturn newVal;\n\t\t});\n\n\t\tgenesis.update((v) => {\n\t\t\tconst newVal = v - value;\n\t\t\tlocalBalance.set('genesis', newVal);\n\t\t\treturn newVal;\n\t\t});\n\n\t\tplaySfx();\n\t\tcloseConvertModal();\n\t\topenObtained([{ item: 'primogem', qty: value }]);\n\t};\n</script>\n\n<ModalBalance />\n<Modal\n\ttitle={$t('shop.exchangeHeading')}\n\ton:cancel={cancelModal}\n\ton:confirm={confirmConvert}\n\tdisabled={$genesis < 1}\n>\n\t<div slot=\"confirmtext\">{$t('shop.purchaseButton')}</div>\n\t<div class=\"content\">\n\t\t<div class=\"row genesis-exchange\">\n\t\t\t<div class=\"col genesis\">\n\t\t\t\t<picture>\n\t\t\t\t\t<Icon type=\"genesis\" width=\"50%\" />\n\t\t\t\t\t<span>{$t('shop.item.genesis')}</span>\n\t\t\t\t</picture>\n\t\t\t</div>\n\n\t\t\t<div class=\"col primo-exchange\">\n\t\t\t\t<picture>\n\t\t\t\t\t<Icon type=\"primogem\" width=\"50%\" />\n\t\t\t\t\t<span>{$t('shop.item.primogem')}</span>\n\t\t\t\t</picture>\n\t\t\t</div>\n\n\t\t\t<div class=\"divider\">\n\t\t\t\t<i class=\"gi-arrow-right\" />\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"slider\">\n\t\t\t<div class=\"rangeNumber\">\n\t\t\t\t<span>{$t('shop.qty')} :</span>\n\t\t\t\t<span style=\"font-size: larger\">{$genesis < 1 ? 1 : value}</span>\n\t\t\t</div>\n\t\t\t<div class=\"rangeInput\">\n\t\t\t\t<Range\n\t\t\t\t\tvalue={$genesis < 1 ? 1 : value}\n\t\t\t\t\tmin={$genesis <= 1 ? 0 : 1}\n\t\t\t\t\tmax={$genesis || 1}\n\t\t\t\t\tdisabled={$genesis < 1}\n\t\t\t\t/>\n\t\t\t\t<div class=\"consume\" style=\"display: inline-flex; align-items:center\">\n\t\t\t\t\t{$t('shop.consume')}\n\t\t\t\t\t<Icon type=\"genesis\" />\n\t\t\t\t\t<span class:red={$genesis < 1}> {value}</span>\n\t\t\t\t</div>\n\n\t\t\t\t{#if $genesis < 1}\n\t\t\t\t\t<div class=\"error red\">{$t('shop.insufficient')}</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</Modal>\n\n<style>\n\t.red {\n\t\tcolor: #de2f22 !important;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 90%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\tpicture {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.genesis-exchange {\n\t\tdisplay: flex;\n\t\twidth: 80%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tmargin: 0 auto;\n\t}\n\n\t.col {\n\t\twidth: 100%;\n\t\tflex-basis: 50%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t\tpadding: 0.1em 0 0.7em;\n\t}\n\n\t.col span {\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\tbottom: 0.3rem;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tfont-size: 0.7rem;\n\t}\n\n\t.divider {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tfont-size: xX-large;\n\t\tcolor: #fff;\n\t}\n\t.genesis-exchange .genesis {\n\t\tbackground-color: #d1c8bb;\n\t}\n\t.genesis-exchange .primo-exchange {\n\t\tbackground-color: #ecd7a5;\n\t}\n\n\t.slider,\n\t.rangeNumber,\n\t.rangeInput {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tfont-size: 1rem;\n\t}\n\n\t:global(.mobile) .rangeInput {\n\t\tfont-size: 0.8rem;\n\t}\n\t.rangeNumber {\n\t\tfont-size: 0.8rem;\n\t\tmargin-bottom: -0.5rem;\n\t}\n\t.slider {\n\t\tpadding: 1% 0;\n\t}\n\t.error {\n\t\tfont-size: 80%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/ModalWelcome.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\n\timport { data } from '$lib/data/updates.json';\n\timport { isPWA } from '$lib/store/app-stores';\n\timport { adKey, verifyKey } from '$lib/helpers/accessKey';\n\timport { browserDetect } from '$lib/helpers/mobileDetect';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\n\tlet content;\n\tlet contentHeight;\n\tlet savedKey = '';\n\tlet dateExpired = '';\n\n\tconst startApp = getContext('startApp');\n\tconst updates = data.filter(({ featured }) => !!featured);\n\n\tonMount(async () => {\n\t\tOverlayScrollbars(content, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t\tconst { expiryDate, storedKey } = await adKey.initialLoad();\n\t\tdateExpired = expiryDate;\n\t\tsavedKey = storedKey;\n\t});\n\n\tconst handleConfirm = () => {\n\t\tplaySfx();\n\t\tstartApp();\n\t\tverifyKey();\n\t};\n</script>\n\n<Modal confirmOnly title={$t('title')} on:confirm={handleConfirm}>\n\t<section bind:clientHeight={contentHeight} style=\"--modalHeight:{contentHeight}px\">\n\t\t<p class=\"sp\">\n\t\t\t{$t('fanmade')} <br />\n\t\t\t{#if !$isPWA}\n\t\t\t\t<a href=\"/install\">{$t('installInstruction')}</a>\n\t\t\t{/if}\n\t\t</p>\n\t\t{#if !browserDetect().isSupported && isPWA}\n\t\t\t<div class=\"updates adExpired\">\n\t\t\t\t<strong>\n\t\t\t\t\tWe highly recommend installing <span style=\"display: inline; color:#5ab3ff\">\n\t\t\t\t\t\tGoogle Chrome\n\t\t\t\t\t</span>\n\t\t\t\t\tfor optimal performance as some features may not be fully supported on.\n\t\t\t\t</strong>\n\t\t\t</div>\n\t\t{:else if dateExpired && dateExpired !== 'none'}\n\t\t\t<div class=\"updates adExpired\">\n\t\t\t\t<div>\n\t\t\t\t\t{@html $t('menu.keyExpired2', {\n\t\t\t\t\t\tvalues: { key: `<b>${savedKey}</b>`, date: `<u>${dateExpired}</u>` }\n\t\t\t\t\t})}\n\t\t\t\t\t<a\n\t\t\t\t\t\thref=\"https://ko-fi.com/post/AdFree-Wish-Simulator-Enjoy-Simulator-Without-Ads-G2G2DQ57O\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{$t('menu.getNewKey')}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<div class=\"updates\" bind:this={content}>\n\t\t\t\t{#each updates.reverse() as { description, date }, i (i)}\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"tgl\"> {date} </i>\n\t\t\t\t\t\t{#if i === 0} ( Latest Update ) {/if}\n\t\t\t\t\t</span>\n\t\t\t\t\t{#each description as txt} <p>{@html txt}</p> {/each}\n\t\t\t\t{/each}\n\t\t\t\t<div style=\"height: .5rem\" />\n\t\t\t</div>\n\t\t{/if}\n\t\t<p class=\"credit\">{$t('disclaimer')}</p>\n\t</section>\n</Modal>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tpadding: 0 1.5rem;\n\t}\n\t.credit {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-size: 0.9rem;\n\t}\n\n\t.updates {\n\t\ttext-align: left;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tbackground-color: #fff;\n\t\tfont-size: 0.97rem;\n\t\theight: calc(0.7 * var(--modalHeight));\n\t\tpadding: 0 1rem;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n\n\t:global(.mobile) .updates {\n\t\theight: calc(0.6 * var(--modalHeight));\n\t}\n\n\t.adExpired {\n\t\ttext-align: center;\n\t\tfont-size: 125%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.adExpired a {\n\t\tdisplay: block;\n\t\tmargin-top: 1rem;\n\t}\n\n\t.updates span {\n\t\tfont-weight: bold;\n\t\tcolor: #f7cf33;\n\t\tdisplay: block;\n\t\tpadding-top: 0.5rem;\n\t}\n\t.updates .tgl {\n\t\tcolor: #bd6932;\n\t}\n\n\t.updates :global(a) {\n\t\tcolor: #f29f0f;\n\t}\n\t.updates :global(a:hover) {\n\t\ttext-decoration: underline;\n\t}\n\n\t.updates p {\n\t\tpadding-left: 1rem;\n\t\tposition: relative;\n\t\tline-height: 1rem;\n\t\tmargin: 0.5rem 0;\n\t}\n\t.updates p::before {\n\t\tcontent: '*';\n\t\tdisplay: inline-block;\n\t\twidth: 10px;\n\t\tline-height: 0;\n\t\tfont-size: 1.3rem;\n\t\tpadding-top: 0.5rem;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t}\n\n\t.sp {\n\t\tfont-size: 0.9rem;\n\t\tpadding: 0rem 0 0.5rem;\n\t}\n\n\ta {\n\t\ttransition: all 0.2s;\n\t}\n\t.sp a {\n\t\tfont-weight: bold;\n\t\tcolor: #e3a023;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\ta:active {\n\t\ttransform: scale(0.9);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/PreloadMeteor.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { check, loadAnimation, loadProggress } from '$lib/helpers/meteor-loader';\n\timport { assets, autoskip } from '$lib/store/app-stores';\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\n\tlet onProgress = false;\n\tlet rarity = 3;\n\tlet progress = 0;\n\tlet totalItem;\n\tlet itemIndex;\n\t$: ({ rarity, progress, itemIndex, totalItem } = $loadProggress);\n\t$: percentage = ((itemIndex * 100 + progress) / (totalItem * 100)) * 100;\n\n\tconst readyToPull = getContext('readyToPull');\n\t$: ready = $readyToPull;\n\n\tonMount(async () => {\n\t\tconst isReady = localConfig.get('autoskip') || (await check());\n\t\treadyToPull.set(isReady);\n\t});\n\n\tconst skipMeteor = () => {\n\t\tplaySfx();\n\t\tautoskip.set(true);\n\t\treadyToPull.set(true);\n\t\tlocalConfig.set('autoskip', true);\n\t};\n\n\tconst preloadMeteor = async () => {\n\t\tplaySfx();\n\t\tonProgress = true;\n\t\tconst data = await loadAnimation();\n\t\tassets.update((v) => {\n\t\t\tdata.forEach(({ asset, url }) => (v[asset] = url));\n\t\t\treturn v;\n\t\t});\n\t\treadyToPull.set(true);\n\t\tonProgress = false;\n\t};\n</script>\n\n{#if !ready}\n\t<div class=\"tooltip\" transition:fade={{ duration: 250 }}>\n\t\t{#if onProgress}\n\t\t\t<div class=\"loader\">\n\t\t\t\t<caption class=\"load-text\" style=\"position: relative;\">\n\t\t\t\t\t{@html $t('wish.loadMeteorMsg', { values: { star: rarity } })}\n\t\t\t\t</caption>\n\t\t\t\t<div class=\"progress-bar\" style=\"--per:{percentage}%\">\n\t\t\t\t\t<span />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"percentage\">\n\t\t\t\t\t{percentage.toFixed(0)}%\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<div class=\"prompt-text\">\n\t\t\t\t{@html $t('wish.meteorNotLoaded')}\n\t\t\t\t<small>\n\t\t\t\t\t{$t('wish.preloadFilesMsg')}\n\t\t\t\t</small>\n\t\t\t</div>\n\t\t\t<div class=\"options\">\n\t\t\t\t<ButtonGeneral dark on:click={preloadMeteor}>\n\t\t\t\t\t{$t('wish.loadMeteor')}\n\t\t\t\t</ButtonGeneral>\n\t\t\t\t<ButtonGeneral dark on:click={skipMeteor}>\n\t\t\t\t\t{$t('wish.skipMeteor')}\n\t\t\t\t</ButtonGeneral>\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n{/if}\n\n<style>\n\t.tooltip {\n\t\tmax-width: 90%;\n\t\twidth: 300px;\n\t\tposition: fixed;\n\t\tbottom: 12%;\n\t\tright: 5%;\n\t\tz-index: +100;\n\t\tbackground-color: #fbf6ee;\n\t\tborder: 2px solid #ddd5c8;\n\t\tpadding: 2% 2% 1.5%;\n\t\tborder-radius: 0.5rem;\n\t\tfont-size: 85%;\n\t}\n\n\t@media screen and (min-width: 900px) {\n\t\t.tooltip {\n\t\t\twidth: 400px;\n\t\t}\n\t}\n\n\t.prompt-text :global(span),\n\t.loader :global(span) {\n\t\tcolor: var(--color-second);\n\t\tposition: relative;\n\t}\n\n\t.tooltip :global(span) {\n\t\tcolor: #f0b164;\n\t}\n\n\tsmall {\n\t\tdisplay: block;\n\t\tpadding: 2%;\n\t\topacity: 0.8;\n\t}\n\n\t.loader {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t}\n\n\t.load-text::after {\n\t\tcontent: '.';\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttransform: translateX(100%);\n\t\tbottom: 0;\n\t\tanimation: dot 3s infinite;\n\t}\n\n\t.progress-bar {\n\t\twidth: 100%;\n\t\theight: 0.2rem;\n\t\tbackground-color: #ccc;\n\t\tmargin: 3% 0;\n\t\tposition: relative;\n\t\tborder-radius: 1rem;\n\t}\n\n\t.progress-bar span {\n\t\tborder-radius: inherit;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: var(--per);\n\t\theight: 120%;\n\t\tbackground-image: linear-gradient(to left, #898e9d, #4a5265);\n\t\tbox-shadow: 0 0 0.1rem #fff;\n\t\ttransition: width 0.05s;\n\t}\n\n\t.options {\n\t\tpadding: 2% 1% 0;\n\t\ttext-align: center;\n\t}\n\t.tooltip :global(button) {\n\t\tfont-size: 80%;\n\t\tmargin: 1%;\n\t\tpadding: 2% 5%;\n\t}\n\n\t@keyframes dot {\n\t\t0% {\n\t\t\tcontent: '.';\n\t\t}\n\t\t25% {\n\t\t\tcontent: '..';\n\t\t}\n\t\t50% {\n\t\t\tcontent: '...';\n\t\t}\n\t\t100% {\n\t\t\tcontent: '';\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/ScreenshotShare.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { toBlob } from 'html-to-image';\n\n\timport { primogem } from '$lib/store/app-stores';\n\timport { initialAmount } from '$lib/data/wish-setup.json';\n\timport { localBalance, localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\timport ScreenshotResult from './_screenshot-result.svelte';\n\n\texport let shareURL = '';\n\texport let canshare = false;\n\n\tlet blob;\n\tlet showResult = false;\n\tlet loading = false;\n\tlet btnTxt = canshare ? $t('share') : $t('screenshot');\n\n\tlet obtainScreen = false;\n\tlet isFirstTimeShare = !localConfig.get('firstTimeShare');\n\n\tsetContext('firsTimeShare', () => {\n\t\tisFirstTimeShare = false;\n\t\tobtainScreen = true;\n\n\t\tprimogem.update((v) => {\n\t\t\tconst newVal = v + initialAmount.shareReward;\n\t\t\tlocalBalance.set('primogem', newVal);\n\t\t\treturn newVal;\n\t\t});\n\t\tlocalConfig.set('firstTimeShare', true);\n\t});\n\n\tconst previewDOM = getContext('preview');\n\tconst preview = (val) => (previewDOM ? previewDOM(val) : null);\n\n\tconst filterShot = (node) => {\n\t\tconst notIncluded = ['close', 'share', 'skip', 'outfit-toggle', 'zoomer'];\n\t\tif (node.classList) return !notIncluded.some((cl) => node.classList.contains(cl));\n\t\treturn true;\n\t};\n\n\tconst takeShot = async () => {\n\t\ttry {\n\t\t\tif (loading) return;\n\t\t\tplaySfx();\n\t\t\tpreview(true);\n\t\t\tloading = true;\n\t\t\tbtnTxt = `${$t('waiting')}...`;\n\n\t\t\tconst node = document.querySelector('.wish-result');\n\t\t\tblob = await toBlob(node, { filter: filterShot });\n\n\t\t\tplaySfx('camera');\n\t\t\tshowResult = true;\n\t\t\tloading = false;\n\t\t\tpreview(false);\n\t\t\tbtnTxt = canshare ? $t('share') : $t('screenshot');\n\t\t} catch (e) {\n\t\t\tloading = false;\n\t\t\tpreview(false);\n\t\t\tbtnTxt = canshare ? $t('share') : $t('screenshot');\n\t\t\tconsole.error('failed to take screenshot', e);\n\t\t}\n\t};\n\n\tconst openObtained = getContext('openObtained');\n\tsetContext('closeShot', () => {\n\t\tshowResult = false;\n\t\tplaySfx('close');\n\n\t\tif (!obtainScreen) return;\n\t\topenObtained([{ item: 'primogem', qty: initialAmount.shareReward }]);\n\t\tobtainScreen = false;\n\t});\n</script>\n\n{#if showResult}\n\t<ScreenshotResult isFirstTime={isFirstTimeShare} {blob} {shareURL} {canshare} />\n{/if}\n\n{#if loading}\n\t<div class=\"progress\" transition:fade={{ duration: 200 }}>\n\t\t<div class=\"row\">\n\t\t\t<div class=\"loading\" />\n\t\t\t<div class=\"text\">{$t('capturing')}..</div>\n\t\t</div>\n\t</div>\n{/if}\n\n<div class=\"screenshot-button\">\n\t{#if isFirstTimeShare && canshare}\n\t\t<span>\n\t\t\t{$t('rewardFirstShare', { values: { qty: initialAmount.shareReward } })}\n\t\t\t<Icon type=\"primogem\" width=\"18px\" style=\"margin-left: .5rem\" />\n\t\t</span>\n\t{/if}\n\t<ButtonGeneral on:click={takeShot} disabled={loading}>\n\t\t{btnTxt}\n\t</ButtonGeneral>\n</div>\n\n<style>\n\t.screenshot-button {\n\t\twidth: 100%;\n\t}\n\t.screenshot-button span {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\t-webkit-text-stroke: 0.02rem #000;\n\t}\n\n\t.progress {\n\t\tposition: fixed;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tbackground-color: var(--text-color);\n\t\tcolor: var(--tertiary-color);\n\t\tpadding: 2rem;\n\t\tborder: 1px solid var(--tertiary-color);\n\t\tborder-radius: 0.5rem;\n\t}\n\t.progress .row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t.loading {\n\t\tborder: 0.2rem solid #f3f3f3;\n\t\tborder-top: 0.2rem solid var(--text-color);\n\t\tborder-radius: 50%;\n\t\twidth: 2rem;\n\t\theight: 2rem;\n\t\tmargin-right: 1rem;\n\t\tanimation: spin 1s linear infinite;\n\t}\n\n\t@keyframes spin {\n\t\t0% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t100% {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/WelkinCheckin.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\n\timport { welkinReward } from '$lib/data/wish-setup.json';\n\timport { assets, primogem } from '$lib/store/app-stores';\n\timport { localBalance, dailyWelkin } from '$lib/helpers/dataAPI/api-localstore';\n\n\tconst { primogem: dailyPrimo } = welkinReward;\n\tconst closeWelkin = getContext('closeWelkin');\n\tconst handleObtained = getContext('openObtained');\n\n\tconst closeHandle = () => {\n\t\tcloseWelkin();\n\t\tprimogem.update((n) => {\n\t\t\tconst newQty = n + dailyPrimo;\n\t\t\tlocalBalance.set('primogem', newQty);\n\t\t\treturn newQty;\n\t\t});\n\t\thandleObtained([{ item: 'primogem', qty: dailyPrimo }]);\n\t};\n\n\tlet dayRemaining;\n\tconst setDay = () => {\n\t\tdayRemaining = dailyWelkin.getData().remaining;\n\t};\n\n\tonMount(setDay);\n</script>\n\n<section on:mousedown={closeHandle}>\n\t<div class=\"container\">\n\t\t<div class=\"bg\" />\n\t\t<div class=\"content\">\n\t\t\t<div class=\"milestone\">\n\t\t\t\t<img src={$assets['welkin-moon-girl.webp']} alt=\"Welkin Moon Girl\" />\n\t\t\t</div>\n\n\t\t\t<h3 class=\"title\">{$t('shop.recomended.claimingBlessing')}</h3>\n\t\t\t<h4 class=\"msg\">\n\t\t\t\t{@html $t('shop.recomended.dayRemaining', {\n\t\t\t\t\tvalues: { days: `<span>${dayRemaining}</span>` }\n\t\t\t\t})}\n\t\t\t</h4>\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 99;\n\t\tcolor: #000;\n\t}\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.bg {\n\t\tmin-width: 100vw;\n\t\tmin-height: 100%;\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: 0;\n\t\tbackground-image: linear-gradient(-30deg, rgba(0, 0, 0, 0.75) 80%, rgba(0, 0, 0, 0.6));\n\t}\n\n\t.content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmax-width: 80%;\n\t\twidth: 80%;\n\t\ttext-align: center;\n\t}\n\n\t:global(.mobile) .content {\n\t\ttransform: scale(0.85);\n\t}\n\n\th3 {\n\t\tcolor: #e9e4d9;\n\t\tfont-weight: 100;\n\t\tpadding: 0.5rem;\n\t}\n\th4 {\n\t\tcolor: #d0ba98;\n\t\tfont-weight: 100;\n\t}\n\t.msg :global(span) {\n\t\tcolor: #e9e4d9;\n\t}\n\t.milestone {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: center;\n\t}\n\timg {\n\t\twidth: 30%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_index/_screenshot-result.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade, fly, scale } from 'svelte/transition';\n\timport { saveAs } from 'file-saver';\n\n\timport { APP_TITLE } from '$lib/env';\n\timport { isMobile } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { copy } from '$lib/helpers/nameText';\n\n\texport let canshare = false;\n\texport let isFirstTime = false;\n\texport let shareURL = '';\n\texport let blob;\n\n\t$: shareLink = shareURL || window.location.origin;\n\tlet shareText = 'Come and try this Genshin Impact Wish Simulator!';\n\tlet showToast = false;\n\n\tconst closeShot = getContext('closeShot');\n\tconst firstTime = getContext('firsTimeShare');\n\n\tconst addFunds = () => {\n\t\tif (!isFirstTime) return;\n\t\tfirstTime();\n\t};\n\n\tconst DOMURL = window.URL || window.webkitURL;\n\t$: screenshotURL = DOMURL.createObjectURL(blob);\n\n\tconst copyHandle = async () => {\n\t\tplaySfx();\n\t\tcopy(shareLink);\n\t\tshowToast = true;\n\t\tconst t = setTimeout(() => {\n\t\t\tshowToast = false;\n\t\t\tclearTimeout(t);\n\t\t}, 2000);\n\t\taddFunds();\n\t};\n\n\tconst saveHandler = () => {\n\t\tplaySfx();\n\t\tsaveAs(blob, `WishSimulator.App - ${new Date().toLocaleString()}.png`);\n\t\taddFunds();\n\t};\n\n\tconst facebookHandle = () => {\n\t\tplaySfx();\n\t\tconst url = `https://www.facebook.com/sharer/sharer.php?u=${shareLink}&quote=${shareText}`;\n\t\twindow.open(url, '_blank');\n\t\taddFunds();\n\t};\n\n\tconst twitterHandle = () => {\n\t\tplaySfx();\n\t\tconst url = `https://twitter.com/intent/tweet?text=${shareText}&url=${shareLink}`;\n\t\twindow.open(url, '_blank');\n\t\taddFunds();\n\t};\n\n\tconst webShareHandle = async () => {\n\t\ttry {\n\t\t\tplaySfx();\n\t\t\tconst generalDataToShare = {\n\t\t\t\ttitle: APP_TITLE,\n\t\t\t\ttext: shareText,\n\t\t\t\turl: shareLink\n\t\t\t};\n\n\t\t\tconst files = new File([blob], `WishSimulator.App - ${new Date().toLocaleString()}.png`, {\n\t\t\t\ttype: blob.type,\n\t\t\t\tlastModified: new Date().getTime()\n\t\t\t});\n\t\t\tconst dataWithPic = { ...generalDataToShare, files: [files] };\n\t\t\tconst attachPic = navigator?.canShare(dataWithPic);\n\t\t\tconst dataToShare = attachPic && $isMobile ? dataWithPic : generalDataToShare;\n\n\t\t\tawait navigator.share(dataToShare);\n\t\t\taddFunds();\n\t\t} catch (e) {\n\t\t\tconsole.error('Abort Sharing', e);\n\t\t}\n\t};\n</script>\n\n<div class=\"screenshot\" out:fade={{ duration: 200 }}>\n\t<button class=\"close\" on:click={closeShot}>\n\t\t<i class=\"gi-close\" />\n\t</button>\n\n\t<div class=\"wrapper\" in:scale={{ opacity: 1, start: 1.1 }}>\n\t\t<div class=\"letshare\">\n\t\t\t{#if canshare}\n\t\t\t\t<div class=\"copy\">\n\t\t\t\t\t<span class=\"text\">{shareLink}</span>\n\t\t\t\t\t<button title=\"Copy link\" on:click={copyHandle}> <i class=\"gi-link\" /> </button>\n\t\t\t\t</div>\n\t\t\t{/if}\n\n\t\t\t<button class=\"save\" title=\"Save To Your Device\" on:click={saveHandler}>\n\t\t\t\t<i class=\"gi-save\" />\n\t\t\t</button>\n\n\t\t\t{#if canshare}\n\t\t\t\t<div class=\"divider\" />\n\t\t\t\t<button class=\"save\" title=\"Share to Twitter\" on:click={twitterHandle}>\n\t\t\t\t\t<i class=\"gi-twitter\" />\n\t\t\t\t</button>\n\t\t\t\t<button class=\"save\" title=\"Share to Facebook\" on:click={facebookHandle}>\n\t\t\t\t\t<i class=\"gi-facebook\" />\n\t\t\t\t</button>\n\t\t\t\t<button class=\"save\" title=\"More Options\" on:click={webShareHandle}>\n\t\t\t\t\t<i class=\"gi-dot-3\" />\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<picture>\n\t\t\t<img src={screenshotURL} alt=\"screenshot\" on:contextmenu|stopPropagation />\n\t\t</picture>\n\t</div>\n\n\t{#if showToast}\n\t\t<div class=\"toast\" in:fly={{ y: 10 }} out:fade>Copied to Clipboard</div>\n\t{/if}\n</div>\n\n<style>\n\t.screenshot {\n\t\twidth: 100vw;\n\t\theight: var(--screen-height);\n\t\tposition: fixed;\n\t\tz-index: 998;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackground-color: rgba(0, 0, 0, 0.45);\n\t\tbackdrop-filter: blur(10px);\n\t}\n\t.screenshot::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #fff;\n\t\tpointer-events: none;\n\t\tanimation: flash forwards 1s;\n\t}\n\n\t.screenshot .wrapper {\n\t\twidth: 75%;\n\t\tmax-height: 75%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t\tbox-shadow: 0 0 3px rgba(255, 255, 255, 0.8);\n\t}\n\n\tpicture {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tpadding: 0.2rem;\n\t\tbackground-color: #fff;\n\t}\n\n\t.screenshot img {\n\t\tmax-height: 100%;\n\t\tmax-width: 100%;\n\t}\n\n\t.divider {\n\t\tbackground-color: #fff;\n\t\theight: 1.7rem;\n\t\twidth: 0.1rem;\n\t\tdisplay: inline-block;\n\t\tmargin: 0 0.6rem;\n\t}\n\n\t.toast {\n\t\tposition: fixed;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tdisplay: inline-block;\n\t\tpadding: 0.5rem 1rem;\n\t\tborder-radius: 0.5rem;\n\t\tbackground-color: rgba(173, 128, 65, 0.8);\n\t\tcolor: #fff;\n\t\tfont-size: 0.75rem;\n\t}\n\n\tbutton:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\tbutton:active,\n\tbutton:hover {\n\t\tbackground-color: #fff !important;\n\t}\n\n\t.close {\n\t\tposition: fixed;\n\t\ttop: 30px;\n\t\tright: 2%;\n\t}\n\n\t:global(.mobile) .close {\n\t\ttop: 0.3rem;\n\t\tright: 6%;\n\t}\n\t:global(.mobile) .letshare {\n\t\ttransform: scale(0.8) translate(10%, -120%);\n\t}\n\n\t.letshare {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\twidth: 100%;\n\t\ttransform: translate(0, -120%);\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\t}\n\n\t.letshare button {\n\t\tpadding: 0;\n\t\tborder-radius: 100%;\n\t\tz-index: 10;\n\t\taspect-ratio: 1 / 1;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tmargin: 0 0.2rem;\n\t\tfont-size: 1.3rem !important;\n\t\tbackground-color: #e0ddd4;\n\t\tmin-width: 2.2rem;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.copy {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.copy span {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tdisplay: inline-block;\n\t\twidth: 200rem;\n\t\tmax-width: 30vw;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n\n\t@keyframes flash {\n\t\t0% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\topacity: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_background.svelte",
    "content": "<script>\n\timport { onDestroy } from 'svelte';\n\timport { assets } from '$lib/store/app-stores';\n\timport { morphIn, morphOut } from '$lib/helpers/transition';\n\n\tconst bg = ['dendro', 'anemo', 'cryo', 'hydro', 'electro', 'pyro', 'geo'];\n\tlet activeBgIndex = Math.floor(Math.random() * bg.length);\n\n\tconst t = setInterval(() => {\n\t\tconst backToStart = activeBgIndex === bg.length - 1;\n\t\tactiveBgIndex = backToStart ? 0 : activeBgIndex + 1;\n\t}, 6500);\n\n\tonDestroy(() => clearInterval(t));\n</script>\n\n{#each bg as b, i}\n\t{#if activeBgIndex === i}\n\t\t<img\n\t\t\tsrc={$assets[`element-${b}-bg.webp`]}\n\t\t\talt=\"Background\"\n\t\t\tclass=\"bg\"\n\t\t\tcrossorigin=\"anonymous\"\n\t\t\tin:morphIn={{ key: 'morph' }}\n\t\t\tout:morphOut={{ key: 'morph' }}\n\t\t/>\n\t{/if}\n{/each}\n\n<style>\n\timg.bg {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_footer.svelte",
    "content": "<script>\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { data as charDB } from '$lib/data/characters.json';\n\timport { data as weaponDB } from '$lib/data/weapons.json';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { owneditem } from '$lib/helpers/dataAPI/api-localstore';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { setActiveOutfit } from '$lib/helpers/outfit';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { imageCDN } from '$lib/helpers/assets';\n\timport CheckBox from '$lib/components/CheckBox.svelte';\n\timport Order, { orderData } from './_order.svelte';\n\n\texport let activeItem;\n\tconst loaded = getContext('loaded');\n\tconst loadedList = getContext('loadedList');\n\tconst itemList = getContext('itemList');\n\n\tlet showAll = cookie.get('showAllInventory');\n\t$: cookie.set('showAllInventory', showAll);\n\tconst handleShowAll = ({ detail }) => (showAll = !!detail.checked);\n\tconst reverse = () => {\n\t\tplaySfx('click2');\n\t\titemList.update((list) => list.reverse());\n\t};\n\n\tlet characters = [];\n\tlet weapons = [];\n\tlet isLoaded = false;\n\tlet itemQty = { weapon: 0, character: 0 };\n\n\tlet orderby = 'rarity';\n\tsetContext('setOrderName', (val) => (orderby = val));\n\n\tconst itemLocalName = (name, type) => {\n\t\tif (type === 'weapon') return $t(name);\n\t\treturn $t(`${name}.name`);\n\t};\n\n\tconst customItem = async () => {\n\t\tconst idb = await BannerManager.getAll();\n\t\tconst data = idb.reverse().map((d) => {\n\t\t\tconst { character, status, images, hostedImages, artPosition } = d;\n\t\t\td.name = character;\n\t\t\td.rarity = 5;\n\t\t\td.custom = true;\n\t\t\td.images = status != 'owned' ? imageCDN(hostedImages) : images;\n\t\t\td.offset = artPosition;\n\t\t\treturn d;\n\t\t});\n\n\t\treturn data.filter(({ character, images }) => {\n\t\t\tconst isComplete = character && images && images?.artURL;\n\t\t\treturn isComplete;\n\t\t});\n\t};\n\n\tconst ownedItems = owneditem.getAll();\n\tconst loadItems = async (type) => {\n\t\tconst isChar = type === 'character';\n\t\tconst data = isChar ? [...(await customItem()), ...charDB] : weaponDB;\n\t\tconst dataResult = data.map((d) => {\n\t\t\tconst { name, itemID, rarity, weaponType, vision, images, custom, offset } = d;\n\t\t\tconst { wish = 0, manual = 0 } = ownedItems[itemID] || {};\n\t\t\tconst qty = wish + manual;\n\t\t\tconst type = weaponType ? 'weapon' : 'character';\n\t\t\tconst localName = custom ? name : itemLocalName(name, type);\n\t\t\tconst isOwned = qty > 0;\n\t\t\titemQty[type] = qty > 0 ? itemQty[type] + 1 : itemQty[type];\n\n\t\t\t// prettier-ignore\n\t\t\treturn { name, localName, rarity, type, vision, weaponType, qty, isOwned, images, itemID, custom, offset };\n\t\t});\n\t\treturn dataResult;\n\t};\n\n\tconst showHandle = (showAll, orderBy) => {\n\t\tif (showAll) {\n\t\t\tconst updatedData = orderData([...$loadedList], orderBy);\n\t\t\titemList.set(updatedData);\n\t\t\treturn;\n\t\t}\n\t\tconst data = [...$loadedList].filter(({ isOwned }) => isOwned);\n\t\tconst updatedData = orderData(data, orderBy);\n\t\titemList.set(updatedData);\n\t};\n\n\tconst proccessData = (activeItem, showAll) => {\n\t\tif (!isLoaded) return;\n\t\tconst loadedData = activeItem === 'character' ? characters : weapons;\n\t\tloadedList.set(loadedData);\n\t\tshowHandle(showAll, orderby);\n\t\treturn;\n\t};\n\t$: proccessData(activeItem, showAll);\n\n\tonMount(async () => {\n\t\tcharacters = (await loadItems('character')).map((c) => setActiveOutfit(c));\n\t\tweapons = await loadItems('weapon');\n\t\tisLoaded = true;\n\t\tproccessData(activeItem, showAll);\n\t\tloaded();\n\t});\n</script>\n\n<div class=\"filter\">\n\t<div class=\"row\">\n\t\t<button class=\"btn reverse\" on:click={reverse} title=\"Reverse Order\">\n\t\t\t<i class=\"gi-exchange\" />\n\t\t</button>\n\t\t<div class=\"selector\" on:mousedown|stopPropagation>\n\t\t\t<Order {activeItem} {orderby} {showAll} />\n\t\t</div>\n\n\t\t<CheckBox on:change={handleShowAll} checked={showAll}>\n\t\t\t{$t(`inventory.showAllOption`, {\n\t\t\t\tvalues: { item: $t(activeItem) }\n\t\t\t})}\n\t\t\t<span> {itemQty[activeItem]}/{$loadedList.length}</span>\n\t\t</CheckBox>\n\t</div>\n</div>\n\n<style>\n\t.filter {\n\t\theight: 3rem;\n\t\twidth: 100%;\n\t}\n\n\t.filter .row {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 0 2%;\n\t}\n\n\t.filter :global(.checkbox) {\n\t\tcolor: var(--tertiary-color);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_header.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { acquaint, genesis, intertwined, primogem } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Icon from '$lib/components/Icon.svelte';\n\n\texport let activeItem = '';\n\n\tconst navigate = getContext('navigate');\n\tconst handleCLose = () => {\n\t\tnavigate('index');\n\t\tplaySfx('close');\n\t};\n\n\t// shortcut\n\thotkeys('esc', 'inventory', (e) => {\n\t\te.preventDefault();\n\t\thandleCLose();\n\t});\n</script>\n\n<h1 class=\"title\">{$t('inventory.text')} / {$t(activeItem)}</h1>\n<div class=\"budget\">\n\t<button class=\"intertwined\">\n\t\t<Icon\n\t\t\theight=\"70%\"\n\t\t\twidth=\"auto\"\n\t\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t\t\ttype=\"intertwined\"\n\t\t/>\n\t\t{$intertwined}\n\t</button>\n\t<button class=\"acquiant\">\n\t\t<Icon\n\t\t\theight=\"70%\"\n\t\t\twidth=\"auto\"\n\t\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t\t\ttype=\"acquaint\"\n\t\t/>\n\t\t{$acquaint}\n\t</button>\n\t<button class=\"primogem\">\n\t\t<Icon\n\t\t\ttype=\"primogem\"\n\t\t\theight=\"80%\"\n\t\t\twidth=\"auto\"\n\t\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t\t/>\n\t\t{$primogem}\n\t</button>\n\t<button class=\"genesis\">\n\t\t<Icon\n\t\t\ttype=\"genesis\"\n\t\t\theight=\"80%\"\n\t\t\twidth=\"auto\"\n\t\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t\t/>\n\t\t{$genesis}\n\t</button>\n</div>\n<button class=\"close\" on:click={handleCLose}>\n\t<i class=\"gi-close\" />\n</button>\n\n<style>\n\t.title {\n\t\tcolor: #d2c69c;\n\t\ttext-transform: capitalize;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\ttext-align: left;\n\t}\n\t:global(.mobile) .title {\n\t\tfont-size: small;\n\t}\n\t.budget {\n\t\ttext-align: right;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\tmargin-left: auto;\n\t}\n\n\tbutton:not(.close) {\n\t\tdisplay: inline-block;\n\t\tmax-width: 112px;\n\t\theight: 25px;\n\t\toverflow: hidden;\n\t\tbackground-color: rgba(0, 0, 0, 0.3);\n\t\tborder-radius: 50px;\n\t\tcolor: #fff;\n\t\tvertical-align: middle;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t\tmargin: 0 0.3rem;\n\t\tpadding: 0 15px 0 30px;\n\t}\n\n\t:global(.mobile) .close {\n\t\tmargin-right: 4%;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t.title {\n\t\t\tfont-size: small;\n\t\t}\n\t\tbutton {\n\t\t\theight: 20px;\n\t\t\tmargin: 0 3px;\n\t\t}\n\n\t\t:global(main):not(.mobile) .budget {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\t}\n\t@media screen and (max-width: 400px) {\n\t\tbutton {\n\t\t\tmax-width: 80px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_inventory-detail.svelte",
    "content": "<script>\n\timport { getContext, onDestroy, onMount, setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { assets } from '$lib/store/app-stores';\n\timport { HistoryManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\t// Component\n\timport ScreenshotShare from '../_index/ScreenshotShare.svelte';\n\timport OutfitToggle from './_outfit-toggle.svelte';\n\timport SplashArt from '../_custom-banner/SplashArtEditor/SplashArt.svelte';\n\n\texport let itemID;\n\texport let useOutfit = false;\n\texport let outfitName = '';\n\texport let custom = false;\n\texport let rarity = 3;\n\texport let type = 'character';\n\texport let name = '';\n\texport let localName = '';\n\texport let vision = '';\n\texport let weaponType = '';\n\texport let qty = 0;\n\texport let isOwned = true;\n\texport let images = {};\n\texport let offset = {};\n\n\tlet hideInfo = false;\n\tsetContext('toggleInfoHide', () => {\n\t\thideInfo = !hideInfo;\n\t\tplaySfx();\n\t});\n\n\tconst previewOutfit = (outfit, position) => {\n\t\toutfitName = outfit;\n\t\toffset = position;\n\t\tuseOutfit = outfit !== 'default';\n\t};\n\tsetContext('previewOutfit', previewOutfit);\n\n\tlet onshot = false;\n\tconst closeDetail = getContext('closeDetail');\n\tsetContext('preview', (val) => (onshot = val));\n\n\tconst getQtyInfo = (type, qty) => {\n\t\tif (type === 'weapon') {\n\t\t\tconst refineExtra = $t(`inventory.extra`, { values: { count: `5 + ${qty - 5}` } });\n\t\t\tconst info = $t(`inventory.refinement`, {\n\t\t\t\tvalues: { count: qty > 5 ? refineExtra : qty }\n\t\t\t});\n\t\t\treturn info;\n\t\t}\n\n\t\tconst refineExtra = $t(`inventory.extra`, { values: { count: `6 + ${qty - 7}` } });\n\t\tconst info = $t(`inventory.constellation`, {\n\t\t\tvalues: { count: qty > 7 ? refineExtra : qty - 1 }\n\t\t});\n\t\treturn info;\n\t};\n\n\tconst getArtURL = (outfitName) => {\n\t\tif (custom) return images?.artURL;\n\t\tif (type === 'weapon') return $assets[name];\n\n\t\tconst useOutfit = outfitName && outfitName !== 'default';\n\t\tconst artKey = useOutfit ? outfitName : name;\n\t\treturn $assets[`splash-art/${artKey}`];\n\t};\n\n\tlet time = '';\n\tonMount(async () => {\n\t\tconst idbData = await HistoryManager.getByID(itemID);\n\t\t({ time = 'UnTracked' } = idbData[0] || {});\n\t});\n\n\t// Shortcut\n\thotkeys('esc', 'itemdetail', (e) => {\n\t\te.preventDefault();\n\t\tcloseDetail();\n\t});\n\thotkeys.setScope('itemdetail');\n\tonDestroy(() => hotkeys.deleteScope('itemdetail', 'inventory'));\n</script>\n\n<SplashArt\n\tcharacter={name}\n\tartURL={getArtURL(outfitName)}\n\tposition={offset}\n\tpreview\n\tisCustom={custom}\n\t{weaponType}\n\t{localName}\n\t{vision}\n\t{onshot}\n\t{isOwned}\n\t{rarity}\n\t{hideInfo}\n\ton:close={closeDetail}\n/>\n\n{#if !hideInfo}\n\t<div transition:fade={{ duration: 250 }} class=\"handler-container\">\n\t\t<div class=\"wrapper\">\n\t\t\t{#if type === 'character'}\n\t\t\t\t<OutfitToggle charName={name} />\n\t\t\t{/if}\n\n\t\t\t{#if qty > 0}\n\t\t\t\t<div class=\"detail\">\n\t\t\t\t\t<span class=\"qty\"> {getQtyInfo(type, qty)} </span>\n\t\t\t\t\t<small> {$t('inventory.firstSummon', { values: { date: time } })} </small>\n\t\t\t\t</div>\n\t\t\t{/if}\n\n\t\t\t{#if qty > 0}\n\t\t\t\t<div class=\"share\">\n\t\t\t\t\t<ScreenshotShare />\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.handler-container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: +15;\n\t\tpointer-events: none;\n\t}\n\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\t.wrapper > :global(div),\n\t.wrapper :global(button) {\n\t\tpointer-events: initial;\n\t}\n\n\t.share {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\ttext-align: right;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\tposition: absolute;\n\t\tbottom: 5%;\n\t\tright: 8%;\n\t\tcolor: #fff;\n\t\tfont-size: 0.8rem;\n\t\tz-index: 999;\n\t}\n\n\t.detail {\n\t\tposition: absolute;\n\t\tleft: 5%;\n\t\tbottom: 2%;\n\t\tdisplay: block;\n\t\tcolor: #fff;\n\t\tfont-size: large;\n\t\t-webkit-text-stroke: #000 0.015rem;\n\t\tfilter: drop-shadow(0 0 0.5rem rgba(0, 0, 0, 0.5)) drop-shadow(0 0 1rem rgba(0, 0, 0, 1));\n\t}\n\t.detail span,\n\t.detail small {\n\t\tdisplay: block;\n\t\twhite-space: nowrap;\n\t}\n\n\t.detail .qty {\n\t\tfont-size: larger;\n\t}\n\n\t@media screen and (max-width: 520px) {\n\t\t.detail {\n\t\t\tfont-size: 120%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_inventory-item.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { assets } from '$lib/store/app-stores';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport { isFirefox } from '$lib/helpers/mobileDetect';\n\n\texport let noStars = false;\n\texport let itemdata = {};\n\tconst {\n\t\trarity = 3,\n\t\ttype = 'character',\n\t\titemID = 0,\n\t\tname = '',\n\t\tlocalName = '',\n\t\tvision = '',\n\t\tweaponType = '',\n\t\tqty = 0,\n\t\tisOwned = true,\n\t\tcustom = false\n\t} = itemdata;\n\n\tlet useOutfit, outfitName, images;\n\t$: ({ useOutfit = false, outfitName = '', images = {} } = itemdata);\n\tconst bg = custom ? $assets[`${rarity}star-special.webp`] : $assets[`${rarity}star-bg.webp`];\n\n\tlet countInfo = `R${qty > 5 ? `5 + ${qty - 5}` : qty}`;\n\tif (type === 'character') {\n\t\tcountInfo = `C${qty > 7 ? `6 + ${qty - 7}` : qty - 1}`;\n\t}\n\n\tconst pickItem = getContext('showDetail');\n\tconst handleShowDetails = () => {\n\t\tif (!pickItem) return;\n\t\tpickItem(itemID);\n\t};\n</script>\n\n<div class=\"content\" class:owned={isOwned} on:mousedown={handleShowDetails}>\n\t{#if !isOwned}\n\t\t<div class=\"overlay\" />\n\t{/if}\n\t<picture class=\"star{rarity} {type}\" style=\"background-image:url('{bg}');\">\n\t\t{#if custom}\n\t\t\t<img\n\t\t\t\tuse:lazyLoad={images?.faceURL}\n\t\t\t\tdata-placeholder={$assets['placeholder-face.webp']}\n\t\t\t\talt={localName}\n\t\t\t/>\n\t\t\t<span class=\"gi-{vision} {vision} icon-gradient element\" />\n\t\t{:else if type === 'character'}\n\t\t\t{@const outfitKey = useOutfit ? outfitName : null}\n\t\t\t{#key outfitName}\n\t\t\t\t<img\n\t\t\t\t\tuse:lazyLoad={$assets[`face/${useOutfit ? outfitKey : name}`]}\n\t\t\t\t\tdata-placeholder={$assets['placeholder-face.webp']}\n\t\t\t\t\talt={localName}\n\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t/>\n\t\t\t{/key}\n\t\t\t<span class=\"gi-{vision} {vision} icon-gradient element\" />\n\t\t{:else if weaponType === 'sword' && isFirefox()}\n\t\t\t<img\n\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\tsrc={$assets[name]}\n\t\t\t\talt={localName}\n\t\t\t\tclass={weaponType}\n\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t/>\n\t\t{:else}\n\t\t\t<img\n\t\t\t\tloading=\"lazy\"\n\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\tsrc={$assets[name]}\n\t\t\t\talt={localName}\n\t\t\t\tclass={weaponType}\n\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t/>\n\t\t{/if}\n\t\t{#if qty > 1}\n\t\t\t<span class=\"qty\"> {countInfo} </span>\n\t\t{/if}\n\t</picture>\n\t<div class=\"caption\">\n\t\t{#if !noStars}\n\t\t\t<div class=\"star\">\n\t\t\t\t{#each Array(rarity) as _}\n\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t{/if}\n\t\t<span>\n\t\t\t{localName}\n\t\t</span>\n\t</div>\n</div>\n\n<style>\n\t.content {\n\t\tborder-radius: calc(3.5 / 100 * var(--item-width));\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\tbackground-color: #fff;\n\t\tcolor: #3a4156;\n\t\tposition: relative;\n\t}\n\n\t.content::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: calc(5 / 100 * var(--item-width));\n\t\topacity: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\t.content:hover::after {\n\t\topacity: 1;\n\t\tborder: 0.1rem solid #fff;\n\t}\n\t.content.owned:hover::after {\n\t\tborder: 0.3rem solid #eac343;\n\t}\n\n\t.overlay {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: #000;\n\t\topacity: 0.5;\n\t\tborder-radius: calc(3.5 / 100 * var(--item-width));\n\t}\n\n\tpicture {\n\t\twidth: 100%;\n\t\taspect-ratio: 1/1;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tbackground-size: cover;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tborder-top-left-radius: calc(3.5 / 100 * var(--item-width));\n\t\tborder-top-right-radius: calc(3.5 / 100 * var(--item-width));\n\t\tborder-bottom-right-radius: calc(20 / 100 * var(--item-width));\n\t}\n\tpicture.weapon {\n\t\tjustify-content: flex-end;\n\t\talign-items: flex-start;\n\t}\n\n\tpicture.character img {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\tpicture.weapon img {\n\t\twidth: 100%;\n\t}\n\n\tpicture span {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t}\n\t.element {\n\t\tleft: 0;\n\t\tfont-size: calc(0.2 * var(--item-width));\n\t}\n\t.qty {\n\t\tright: 0;\n\t\tbackground-color: #a36b5e;\n\t\tborder-bottom-left-radius: 0.5rem;\n\t\tfont-size: 0.9rem;\n\t\tpadding: 0.1rem 0.3rem;\n\t\tcolor: #f0c882;\n\t}\n\n\t.star {\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: calc(-8 / 100 * var(--item-width));\n\t\ttransform: translateX(-50%);\n\t}\n\n\t.gi-star {\n\t\tcolor: #eac343;\n\t\tfont-size: calc(15 / 100 * var(--item-width));\n\t}\n\n\t.caption {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tpadding: calc(4 / 100 * var(--item-width));\n\t\tposition: relative;\n\t\tfont-size: calc(9 / 100 * var(--item-width));\n\t}\n\t.caption span {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\ttext-transform: capitalize;\n\t}\n\n\timg.claymore {\n\t\ttransform: rotate(18deg) scale(1.15) translateX(-1em);\n\t}\n\n\timg.bow {\n\t\ttransform: rotate(10deg) scale(1.25) translateX(-0.5em);\n\t}\n\n\timg.polearm {\n\t\ttransform: rotate(10deg) scale(1.5) translate(-12%, 12%);\n\t}\n\n\timg.sword {\n\t\ttransform: rotate(10deg) scale(1.2) translateY(-1em) translateX(-0.7em);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_inventory-list.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { flip } from 'svelte/animate';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { isMobile, mobileMode, viewportHeight, viewportWidth } from '$lib/store/app-stores';\n\timport InventoryItem from './_inventory-item.svelte';\n\n\texport let loaded = false;\n\tconst itemList = getContext('itemList');\n\n\t// Layout\n\tlet itemWidth = 150;\n\tconst setItemWidth = (viewportWidth, isMobileMode) => {\n\t\titemWidth = (20 / 100) * viewportWidth;\n\t\tif (isMobileMode) {\n\t\t\titemWidth = (24 / 100) * $viewportHeight;\n\t\t\treturn;\n\t\t}\n\n\t\tif (itemWidth < 150) {\n\t\t\titemWidth = 130;\n\t\t\treturn;\n\t\t}\n\n\t\tif (itemWidth > 150) {\n\t\t\titemWidth = 150;\n\t\t\treturn;\n\t\t}\n\t};\n\t$: setItemWidth($viewportWidth, $mobileMode);\n</script>\n\n<div class=\"list-item\" style=\"--item-width: {itemWidth}px\">\n\t{#if !loaded}\n\t\t<span style=\"color: white; padding: 2rem; font-size: 1.2rem\">\n\t\t\t{$t('history.waiting')}\n\t\t</span>\n\t{:else if !$itemList || $itemList.length < 1}\n\t\t<span style=\"color: white; padding: 2rem; font-size: 1.2rem\">\n\t\t\t{$t('history.noData')}\n\t\t</span>\n\t{:else if $isMobile}\n\t\t{#each $itemList as d}\n\t\t\t<div class=\"item\" in:fade={{ duration: 300 }}>\n\t\t\t\t{#key d} <InventoryItem itemdata={d} /> {/key}\n\t\t\t</div>\n\t\t{/each}\n\t{:else}\n\t\t{#each $itemList as d, i (d)}\n\t\t\t<div\n\t\t\t\tclass=\"item\"\n\t\t\t\tanimate:flip={{ duration: (i) => 25 * Math.sqrt(i) }}\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 2500) }}\n\t\t\t>\n\t\t\t\t<InventoryItem itemdata={d} />\n\t\t\t</div>\n\t\t{/each}\n\t{/if}\n</div>\n\n<style>\n\t.list-item {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: center;\n\t\talign-items: flex-start;\n\t\twidth: 100%;\n\t}\n\n\t.list-item:hover {\n\t\twill-change: scroll-position;\n\t}\n\n\t.item {\n\t\tmargin: 0.5rem;\n\t\taspect-ratio: 8.75 / 10;\n\t\twidth: 20vh;\n\t\tmax-width: 135px;\n\t}\n\t:global(.mobile) .item {\n\t\twidth: 24vh;\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.item {\n\t\t\twidth: 14vh;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_navlink.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { mobileMode } from '$lib/store/app-stores';\n\n\texport let activeItem;\n\n\tconst select = getContext('showItem');\n\tconst inTransition = (node, args) => {\n\t\treturn args.mobile ? fly(node, { x: -20, duration: 400 }) : fade(node, { duration: 400 });\n\t};\n</script>\n\n<div class=\"navigation\" in:inTransition={{ mobile: $mobileMode }}>\n\t<nav>\n\t\t<button\n\t\t\tclass=\"nav-link\"\n\t\t\tclass:active={activeItem === 'character'}\n\t\t\ton:click={() => select('character')}\n\t\t>\n\t\t\t<i class=\"gi-character\" />\n\t\t\t{$mobileMode ? '' : $t('character')}\n\t\t</button>\n\t\t<button\n\t\t\tclass=\"nav-link\"\n\t\t\tclass:active={activeItem === 'weapon'}\n\t\t\ton:click={() => select('weapon')}\n\t\t>\n\t\t\t<i class=\"gi-weapon\" />\n\t\t\t{$mobileMode ? '' : $t('weapon')}\n\t\t</button>\n\t</nav>\n</div>\n\n<style>\n\t.navigation {\n\t\ttext-align: center;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\tz-index: 10;\n\t\twidth: 100%;\n\t}\n\n\t.navigation nav {\n\t\twidth: 80%;\n\t\theight: 44px;\n\t\tmargin-top: 5px;\n\t\tborder-width: 0.1rem 0 !important;\n\t\tborder: solid rgba(207, 186, 143, 0.5);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tbackground-image: linear-gradient(\n\t\t\tto left,\n\t\t\trgba(0, 0, 0, 0),\n\t\t\trgba(0, 0, 0, 0.6),\n\t\t\trgba(0, 0, 0, 0.6),\n\t\t\trgba(0, 0, 0, 0)\n\t\t);\n\t}\n\n\tnav .nav-link {\n\t\theight: 44px;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tcolor: #ede5d8;\n\t\tmargin: 0 15px;\n\t\tline-height: 0;\n\t\tborder-radius: 100%;\n\t\topacity: 0.6;\n\t\ttransition: all 0.2s;\n\t}\n\tnav .nav-link.active {\n\t\tcolor: #fff;\n\t\topacity: 1;\n\t}\n\n\tnav .nav-link:hover {\n\t\topacity: 0.9;\n\t}\n\n\tnav .nav-link i {\n\t\tfont-size: 1.5rem;\n\t}\n\n\t:global(.mobile) .navigation {\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t\twidth: 70px;\n\t\tmargin-top: 0;\n\t\theight: 100%;\n\t\tjustify-content: flex-start;\n\t\tpadding-top: 0;\n\t}\n\n\t:global(.mobile) nav {\n\t\tdisplay: block;\n\t\theight: 100vh;\n\t\tbackground-color: #484f62;\n\t\tz-index: -1;\n\t\ttext-align: center;\n\t\tborder-width: 0 0.1rem !important;\n\t\twidth: 40px;\n\t\tmargin-top: 0;\n\t\tpadding-top: 50px;\n\t\tbackground-image: none;\n\t}\n\n\t:global(.mobile) nav .nav-link {\n\t\tmargin: 0;\n\t\tfont-size: 1.7rem;\n\t\tmargin: 5px 0;\n\t\theight: unset;\n\t\tposition: relative;\n\t\tline-height: 1rem;\n\t\tpadding: 0.3rem;\n\t\topacity: unset;\n\t\tbackground-color: #3a4156;\n\t}\n\n\t:global(.mobile) nav .nav-link.active {\n\t\tcolor: #3a4156;\n\t\tbackground-color: transparent;\n\t}\n\n\t:global(.mobile) nav .nav-link::after {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: -0.2rem;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 1000%;\n\t\theight: 100%;\n\t\tborder-top-right-radius: 40px;\n\t\tborder-bottom-right-radius: 40px;\n\t\tz-index: -1;\n\t\ttransition: all 0.2s;\n\t}\n\t:global(.mobile) nav .nav-link.active::after {\n\t\tbackground-color: #ede5d8;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t:global(main):not(.mobile) .navigation nav {\n\t\t\theight: 40px;\n\t\t\twidth: 100%;\n\t\t}\n\t\tnav .nav-link {\n\t\t\theight: 40px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_order.svelte",
    "content": "<script context=\"module\">\n\texport const orderData = (data, orderby) => {\n\t\tif (!orderby || !data || !Array.isArray(data)) return data;\n\t\tif (orderby === 'release') return data;\n\t\tif (orderby === 'rarity') {\n\t\t\treturn data.sort((a, b) => b.rarity - a.rarity);\n\t\t}\n\t\tif (orderby === 'quantity') {\n\t\t\treturn data.sort((a, b) => b.qty - a.qty);\n\t\t}\n\t\tif (orderby === 'name') {\n\t\t\treturn data.sort((a, b) => {\n\t\t\t\tif (a.localName > b.localName) return 1;\n\t\t\t\tif (a.localName < b.localName) return -1;\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t}\n\t\tif (orderby === 'element') {\n\t\t\treturn data.sort((a, b) => {\n\t\t\t\tif (a.vision > b.vision) return 1;\n\t\t\t\tif (a.vision < b.vision) return -1;\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t}\n\t\tif (orderby === 'type') {\n\t\t\treturn data.sort((a, b) => {\n\t\t\t\tif (a.weaponType > b.weaponType) return 1;\n\t\t\t\tif (a.weaponType < b.weaponType) return -1;\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t}\n\t};\n</script>\n\n<script>\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\n\texport let activeItem = 'character';\n\texport let orderby = 'rarity';\n\texport let showAll = false;\n\n\tlet showOrderOption = false;\n\tconst handleShowOrderOption = () => {\n\t\tplaySfx();\n\t\tshowOrderOption = !showOrderOption;\n\t};\n\n\tconst setOrderName = getContext('setOrderName');\n\tconst loadedList = getContext('loadedList');\n\tconst itemList = getContext('itemList');\n\tconst selectOrder = (by) => {\n\t\tconst data = !showAll ? $loadedList.filter(({ isOwned }) => isOwned) : $loadedList;\n\t\tconst ordered = orderData([...data], by);\n\t\titemList.set(ordered);\n\t\tsetOrderName(by);\n\t\thandleShowOrderOption();\n\t};\n\n\tonMount(() => {\n\t\tconst section = document.querySelector('section');\n\t\tsection.addEventListener('mousedown', () => (showOrderOption = false));\n\t});\n</script>\n\n<button class=\"selected-option\" on:click={handleShowOrderOption}>\n\t{$t('inventory.sort')} / {$t(`inventory.${orderby}`)}\n\n\t{#if showOrderOption}\n\t\t<i class=\"gi-caret-up\" />\n\t{:else}\n\t\t<i class=\"gi-caret-down\" />\n\t{/if}\n</button>\n\n{#if showOrderOption}\n\t<div class=\"option-list above\" transition:fade={{ duration: 200 }}>\n\t\t{#each ['release', 'rarity', 'name', 'quantity'] as val}\n\t\t\t<button class:selected={orderby == val} on:click={() => selectOrder(val)}>\n\t\t\t\t{$t(`inventory.${val}`)}\n\t\t\t</button>\n\t\t{/each}\n\n\t\t{#if activeItem === 'character'}\n\t\t\t<button class:selected={orderby == 'element'} on:click={() => selectOrder('element')}>\n\t\t\t\t{$t(`inventory.element`)}\n\t\t\t</button>\n\t\t{/if}\n\n\t\t{#if activeItem === 'weapon'}\n\t\t\t<button class:selected={orderby == 'type'} on:click={() => selectOrder('type')}>\n\t\t\t\t{$t(`inventory.type`)}\n\t\t\t</button>\n\t\t{/if}\n\t</div>\n{/if}\n\n<style>\n\tbutton {\n\t\twidth: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/_outfit-toggle.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { ownedOutfits } from '$lib/helpers/dataAPI/api-localstore';\n\timport { outfitListForChar } from '$lib/helpers/outfit';\n\timport { getName } from '$lib/helpers/nameText';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\n\texport let charName = '';\n\tlet columnWidth;\n\tlet offset = {};\n\n\tconst outfitList = outfitListForChar(charName);\n\tconst { offset: defaultOffset = {} } = getCharDetails(charName);\n\tlet { name: selectedOutfit = 'default' } = outfitList.find(({ isSet }) => isSet) || {};\n\tlet activeOutfit = selectedOutfit;\n\n\tconst previewOutfit = getContext('previewOutfit');\n\tconst preview = (outfitName, position) => {\n\t\tif (selectedOutfit === outfitName) return;\n\t\tplaySfx('click2');\n\t\tselectedOutfit = outfitName;\n\t\toffset = position || defaultOffset;\n\t\tpreviewOutfit(selectedOutfit, offset);\n\t};\n\n\tconst apply = () => {\n\t\tif (activeOutfit !== 'default') {\n\t\t\townedOutfits.set({ outfitName: activeOutfit, isSet: false, characterName: charName });\n\t\t}\n\t\tif (selectedOutfit !== 'default') {\n\t\t\townedOutfits.set({ outfitName: selectedOutfit, isSet: true, characterName: charName });\n\t\t}\n\n\t\tactiveOutfit = selectedOutfit;\n\t\tplaySfx();\n\t\tapplyOutfit();\n\t};\n\n\tconst loadedList = getContext('loadedList');\n\tconst itemList = getContext('itemList');\n\tconst updateList = (list) => {\n\t\tconst index = list.findIndex(({ name }) => name === charName);\n\t\tlist[index].outfitName = activeOutfit;\n\t\tlist[index].offset = offset;\n\t\tlist[index].useOutfit = activeOutfit && activeOutfit !== 'default';\n\t\treturn list;\n\t};\n\tconst applyOutfit = () => {\n\t\tconst toUpdate = [itemList, loadedList];\n\t\ttoUpdate.forEach((list) => list.update(updateList));\n\t};\n</script>\n\n{#if outfitList.length > 0}\n\t<div class=\"outfit-toggle\" style=\"--width: {columnWidth}px\">\n\t\t<div class=\"column\" bind:clientWidth={columnWidth}>\n\t\t\t<button\n\t\t\t\tclass:selected={!selectedOutfit || selectedOutfit === 'default'}\n\t\t\t\ton:click={() => preview('default')}\n\t\t\t>\n\t\t\t\t<picture class=\"star4\" style=\"background-image:url('{$assets['4star-bg.webp']}');\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tuse:lazyLoad={$assets[`face/${charName}`]}\n\t\t\t\t\t\talt={getName(charName)}\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t/>\n\t\t\t\t</picture>\n\t\t\t\t<caption>\n\t\t\t\t\t<span> {$t('outfit.default')} </span>\n\t\t\t\t</caption>\n\t\t\t</button>\n\t\t</div>\n\n\t\t{#each outfitList as { name, rarity, owned, offset }}\n\t\t\t<div class=\"column\" class:disabled={!owned} data-text={$t('inventory.notOwned')}>\n\t\t\t\t<button class:selected={selectedOutfit === name} on:click={() => preview(name, offset)}>\n\t\t\t\t\t<picture\n\t\t\t\t\t\tclass=\"star{rarity}\"\n\t\t\t\t\t\tstyle=\"background-image:url('{$assets[`${rarity}star-bg.webp`]}');\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tuse:lazyLoad={$assets[`face/${name}`]}\n\t\t\t\t\t\t\talt={getName(name)}\n\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</picture>\n\t\t\t\t\t<caption>\n\t\t\t\t\t\t<span> {$t(`outfit.item.${name}.name`)}</span>\n\t\t\t\t\t</caption>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t{/each}\n\t\t<div class=\"apply\">\n\t\t\t{#if selectedOutfit !== activeOutfit}\n\t\t\t\t<div transition:fade={{ duration: 200 }}>\n\t\t\t\t\t<ButtonGeneral on:click={apply}>\n\t\t\t\t\t\t{$t('outfit.setOutfit')}\n\t\t\t\t\t</ButtonGeneral>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.outfit-toggle {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpadding-top: 1rem;\n\t\tpadding-left: 1rem;\n\t\tz-index: +2;\n\t\twidth: fit-content;\n\t}\n\n\t.column {\n\t\twidth: 10vw;\n\t\tmax-width: 120px;\n\t\tmin-width: 90px;\n\t\taspect-ratio: 1/1;\n\t\tpadding: 0.3rem;\n\t\tdisplay: inline-block;\n\t\tflex-direction: column;\n\t\tposition: relative;\n\t}\n\n\t.column button {\n\t\tborder-radius: 5%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\tbackground-color: #596982;\n\t\tcolor: #e8dfbb;\n\t\tline-height: 1.2rem;\n\t\tposition: relative;\n\t}\n\n\t.column button::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 8%;\n\t\tborder: 0.2rem solid rgba(234, 195, 67, 0.7);\n\t\topacity: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\t.column:not(.disabled):hover button::after,\n\tbutton.selected::after {\n\t\topacity: 1;\n\t}\n\n\t.column.disabled::before {\n\t\tcontent: attr(data-text);\n\t\tcolor: #e8dfbb;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: calc(100% - 0.6rem);\n\t\theight: calc(100% - 0.6rem);\n\t\tbackground-color: rgba(0, 0, 0, 0.6);\n\t\tborder-radius: 0.5em;\n\t\tz-index: +2;\n\t\tfont-size: calc(0.12 * var(--width));\n\t}\n\n\t.column button {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\tcaption {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\theight: 40%;\n\t\tfont-size: calc(0.095 * var(--width));\n\t\tline-height: 1.15em;\n\t}\n\n\tpicture {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 70%;\n\t\tmargin: auto;\n\t\tbackground-size: cover;\n\t\tborder-top-right-radius: 0.5em;\n\t\tborder-top-left-radius: 0.5em;\n\t}\n\n\timg {\n\t\theight: 100%;\n\t}\n\n\t.apply {\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tfont-size: 90%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_inventory/index.svelte",
    "content": "<script>\n\t// library\n\timport { onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\n\t// Store\n\timport { writable } from 'svelte/store';\n\timport { APP_TITLE } from '$lib/env';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { viewportHeight } from '$lib/store/app-stores';\n\n\timport Background from './_background.svelte';\n\timport Header from './_header.svelte';\n\timport Navlink from './_navlink.svelte';\n\timport Footer from './_footer.svelte';\n\timport InventoryList from './_inventory-list.svelte';\n\timport InventoryDetail from './_inventory-detail.svelte';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\n\tlet headerHeight = 0;\n\tlet activeItem = cookie.get('inventoryTab') || 'character';\n\t$: cookie.set('inventoryTab', activeItem);\n\n\tlet loaded = false;\n\tconst itemList = writable([]);\n\tconst loadedList = writable([]);\n\tsetContext('loaded', () => (loaded = true));\n\tsetContext('itemList', itemList);\n\tsetContext('loadedList', loadedList);\n\n\tconst showItem = (item) => {\n\t\tif (activeItem === item) return;\n\t\tplaySfx('shopnav');\n\t\tactiveItem = item;\n\t};\n\tsetContext('showItem', showItem);\n\n\tlet content;\n\tonMount(() => {\n\t\tOverlayScrollbars(content, {\n\t\t\tsizeAutoCapable: false,\n\t\t\tclassName: 'os-theme-light'\n\t\t});\n\t});\n\n\tlet detailItem = {};\n\tlet showInventoryDetail = false;\n\tconst showDetail = (itemID) => {\n\t\tplaySfx('collectionitem');\n\t\tconst data = $itemList.find(({ itemID: id }) => itemID === id);\n\t\tdetailItem = data;\n\t\tshowInventoryDetail = true;\n\t};\n\tsetContext('showDetail', showDetail);\n\n\tconst closeDetail = () => {\n\t\tplaySfx('close');\n\t\tshowInventoryDetail = false;\n\t};\n\tsetContext('closeDetail', closeDetail);\n</script>\n\n<svelte:head>\n\t<title>{$t(`inventory.text`)} | {$t('title', { default: APP_TITLE })}</title>\n</svelte:head>\n\n{#if showInventoryDetail}\n\t<InventoryDetail {...detailItem} />\n{/if}\n\n<section id=\"inventory\">\n\t<Background />\n\t<div class=\"header\" bind:clientHeight={headerHeight} in:fly={{ y: -20 }}>\n\t\t<Header {activeItem} />\n\t</div>\n\t<div class=\"body\">\n\t\t<Navlink {activeItem} />\n\t\t<div class=\"body-content\" in:fade={{ duration: 400 }}>\n\t\t\t<div\n\t\t\t\tclass=\"container\"\n\t\t\t\tbind:this={content}\n\t\t\t\tstyle=\"--headerHeight:{$viewportHeight - headerHeight}px;\"\n\t\t\t>\n\t\t\t\t<InventoryList {loaded} />\n\t\t\t</div>\n\t\t\t<Footer {activeItem} />\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tbackground-color: #000;\n\t}\n\n\t.header {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tpadding: 15px 2%;\n\t\tz-index: +2;\n\t}\n\n\t/* mobile */\n\t:global(.mobile) .header {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tright: 0;\n\t\twidth: calc(100% - 65px);\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: 5px 2%;\n\t}\n\n\t.body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\n\t:global(.mobile) .body {\n\t\tflex-direction: row;\n\t}\n\n\t/* List */\n\t.body-content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.container {\n\t\theight: calc(var(--headerHeight) - 6.3rem);\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tpadding: 0 2%;\n\t\tmargin-top: 2px;\n\t\t/* overflow-y: auto; */\n\t}\n\n\t:global(.mobile) .container {\n\t\tmargin-top: 45px;\n\t\theight: calc(100% - 85px);\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t.container {\n\t\t\theight: calc(var(--headerHeight) - 7rem);\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/BackupRestore.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport SyncCloud from './backup-restore/_sync-cloud.svelte';\n\timport SyncLocal from './backup-restore/_sync-local.svelte';\n\n\tlet activeSync = 'local';\n\tconst buttonNavigation = (section) => {\n\t\tif (activeSync === section) return;\n\t\tactiveSync = section;\n\t\tplaySfx('shopnav');\n\t};\n</script>\n\n<div\n\tclass=\"backupRestore content-container\"\n\tin:fade={{ duration: 200 }}\n\tstyle=\"--bg-icon:url('{$assets['modal-bg-icon.png']}')\"\n>\n\t<nav>\n\t\t<button class:active={activeSync === 'cloud'} on:click={() => buttonNavigation('cloud')}>\n\t\t\t<i class=\"gi-drive\" />\n\t\t\t<span> {$t('backupRestore.cloudSync')}</span>\n\t\t</button>\n\t\t<button class:active={activeSync === 'local'} on:click={() => buttonNavigation('local')}>\n\t\t\t<i class=\"gi-local\" />\n\t\t\t<span> {$t('backupRestore.localSync')}</span>\n\t\t</button>\n\t</nav>\n\t<div class=\"content\">\n\t\t{#if activeSync === 'cloud'}\n\t\t\t<SyncCloud />\n\t\t{:else}\n\t\t\t<SyncLocal />\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.content-container {\n\t\tbackground-color: #fbf6ee;\n\t\tbackground-image: var(--bg-icon);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 50%;\n\t\tbackground-position: 50% 60%;\n\t\tborder-radius: 0.5rem;\n\t\tcolor: var(--text-color);\n\t\toverflow: hidden;\n\t}\n\n\tnav {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\tnav::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\twidth: 100%;\n\t\theight: 50%;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: rgb(51, 57, 71);\n\t\tz-index: -1;\n\t}\n\n\tnav button {\n\t\twidth: 100%;\n\t\tflex: 1;\n\t\tflex-basis: 50%;\n\t\tpadding: 1rem;\n\t\tbackground-color: rgb(51, 57, 71);\n\t\tcolor: #fff;\n\t\ttransition: all 0.25s;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\tnav button i {\n\t\tfont-size: larger;\n\t\tline-height: 0;\n\t\ttransform: translateX(-25%);\n\t}\n\n\tnav button.active {\n\t\tbackground-color: #fbf6ee;\n\t\tcolor: initial;\n\t}\n\n\tnav button:nth-child(1) {\n\t\tborder-bottom-right-radius: 1.75rem;\n\t}\n\tnav button.active:nth-child(1) {\n\t\tborder-bottom-right-radius: unset;\n\t\tborder-top-right-radius: 1.75rem;\n\t}\n\n\tnav button:nth-child(2) {\n\t\tborder-bottom-left-radius: 1.75rem;\n\t}\n\tnav button.active:nth-child(2) {\n\t\tborder-bottom-left-radius: unset;\n\t\tborder-top-left-radius: 1.75rem;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/CustomBanner.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { getContext, onMount } from 'svelte';\n\timport {\n\t\tactiveVersion,\n\t\tassets,\n\t\teditID,\n\t\teditorMode,\n\t\tpreloadVersion,\n\t\tproUser,\n\t\tviewportWidth\n\t} from '$lib/store/app-stores';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { randomNumber as rng } from '$lib/helpers/gacha/itemdrop-base';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { pushToast } from '$lib/helpers/toast';\n\timport { timeAgo } from '$lib/helpers/timeago';\n\timport { maintenance } from '$lib/helpers/banner-custom';\n\timport { html } from '$post/banner-guidelines.md';\n\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalDelete from '../_custom-banner/ModalDelete.svelte';\n\n\tlet headerHeight;\n\tlet rowWidth = 0;\n\t$: itemWidth = $viewportWidth > 640 ? rowWidth / 3 : rowWidth / 2;\n\n\tlet ready = false;\n\tlet showNote = false;\n\tlet customList = [];\n\n\tconst toggleInfo = () => {\n\t\tplaySfx();\n\t\tshowNote = !showNote;\n\t};\n\n\tconst idb = BannerManager;\n\tonMount(async () => {\n\t\tconst ownedBanner = await idb.getListByStatus('owned');\n\t\tconst list = ownedBanner.map((d) => {\n\t\t\tconst { character, images, rateup = [], bannerName } = d;\n\t\t\tconst { artURL } = images || {};\n\t\t\td.complete = !!artURL && !!character && rateup.length > 0 && !!bannerName;\n\t\t\treturn d;\n\t\t});\n\n\t\tcustomList = (list || []).sort(({ lastModified: a }, { lastModified: b }) => {\n\t\t\treturn new Date(b) - new Date(a);\n\t\t});\n\n\t\tready = true;\n\t\tshowNote = customList.length < 1;\n\t});\n\n\tconst selectMenu = getContext('selectMenu');\n\tconst handleClose = getContext('handleMenu');\n\tconst putNewData = () => {\n\t\treturn idb.put({\n\t\t\tstatus: 'owned',\n\t\t\titemID: rng(111111111, 999999999),\n\t\t\tcreatedAt: new Date().toISOString()\n\t\t});\n\t};\n\n\tconst customizeBanner = async (bannerID) => {\n\t\tplaySfx();\n\t\thandleClose('mute');\n\n\t\tconst id = bannerID || (await putNewData());\n\t\teditID.set(id);\n\t\teditorMode.set(true);\n\t};\n\n\tlet showModal = false;\n\tlet idToDelete = 0;\n\n\tconst selectToDelete = (id) => {\n\t\tif (!id) return;\n\t\tplaySfx('modal');\n\t\tidToDelete = id;\n\t\tshowModal = true;\n\t};\n\n\tconst cancelModal = () => {\n\t\tshowModal = false;\n\t\tidToDelete = 0;\n\t\tplaySfx('close');\n\t};\n\n\tconst deleteError = () => {\n\t\tconst message = $t('customBanner.deleteFailed');\n\t\tpushToast({ message, type: 'error' });\n\t};\n\tconst deleteDone = () => {\n\t\tcustomList = customList.filter(({ itemID }) => itemID != idToDelete);\n\t\tconst message = $t('customBanner.bannerRemoved');\n\t\tpushToast({ message, type: 'success' });\n\t\tshowModal = false;\n\t\tidToDelete = 0;\n\t};\n\n\tconst wishBanner = (id) => {\n\t\tplaySfx();\n\t\thandleClose('mute');\n\t\tconst { patch, phase } = $activeVersion;\n\t\tif (patch === 'Custom' && phase === id && !$editorMode) return;\n\t\tpreloadVersion.set({ patch: 'Custom', phase: id });\n\t};\n</script>\n\n{#if showModal}\n\t<ModalDelete {idToDelete} on:done={deleteDone} on:error={deleteError} on:cancel={cancelModal} />\n{/if}\n\n<div\n\tclass=\"content-container\"\n\tin:fade={{ duration: 200 }}\n\tstyle=\"--bg-icon:url('{$assets['modal-bg-icon.png']}');\n  --item-width:{itemWidth}px; --height:{headerHeight}px\"\n\tbind:clientWidth={rowWidth}\n>\n\t<div class=\"header\" bind:clientHeight={headerHeight}>\n\t\t{#if ready && !showNote}\n\t\t\t<h1>\n\t\t\t\t<span> {$t('customBanner.yourBanners')} </span>\n\t\t\t\t<button class=\"question\" on:click={toggleInfo}>i</button>\n\t\t\t</h1>\n\t\t{:else}\n\t\t\t<h1><span> {$t('customBanner.createBanner')} </span></h1>\n\t\t{/if}\n\n\t\t{#if customList.length > 3 && !$proUser && !showNote}\n\t\t\t<div class=\"notice\">\n\t\t\t\t{$t('customBanner.limitation')}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n\n\t<div class=\"wrapper\" class:ready>\n\t\t{#if !ready}\n\t\t\t<div class=\"row loader\">\n\t\t\t\t<Icon type=\"loader\" />\n\t\t\t</div>\n\t\t{:else}\n\t\t\t{#if showNote}\n\t\t\t\t<div class=\"disclaimer\" transition:fade|local={{ duration: 250 }}>\n\t\t\t\t\t<article>{@html html}</article>\n\t\t\t\t\t<ButtonModal width=\"200px\" on:click={toggleInfo}>\n\t\t\t\t\t\t{$t('customBanner.create')}\n\t\t\t\t\t</ButtonModal>\n\t\t\t\t</div>\n\t\t\t{:else}\n\t\t\t\t<div class=\"row\" transition:fade|local={{ duration: 250 }}>\n\t\t\t\t\t{#if customList.length > 0}\n\t\t\t\t\t\t{#each customList as { itemID, vision, complete, images = { }, hostedImages, isChanged, blocked, lastSync, deleted }}\n\t\t\t\t\t\t\t<div class=\"item\" id={itemID}>\n\t\t\t\t\t\t\t\t{#if deleted}\n\t\t\t\t\t\t\t\t\t<i class=\"sync gi-cloud-deleted\" />\n\t\t\t\t\t\t\t\t{:else if hostedImages}\n\t\t\t\t\t\t\t\t\t<i class=\"sync gi-{isChanged ? 'cloud-sync' : 'network'}\" />\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"banner-item\"\n\t\t\t\t\t\t\t\t\tdisabled={!complete || blocked}\n\t\t\t\t\t\t\t\t\tdata-text={!complete\n\t\t\t\t\t\t\t\t\t\t? $t('customBanner.incomplete')\n\t\t\t\t\t\t\t\t\t\t: $t('customBanner.inappropriate')}\n\t\t\t\t\t\t\t\t\ton:click={!complete ? null : () => wishBanner(itemID)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\tsrc={images?.thumbnail || $assets[`blank/character-${vision || 'pyro'}`]}\n\t\t\t\t\t\t\t\t\t\talt=\"Custom Banner\"\n\t\t\t\t\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<div class=\"time\">\n\t\t\t\t\t\t\t\t\t{#if deleted}\n\t\t\t\t\t\t\t\t\t\t<span> {$t('customBanner.inactive')} </span>\n\t\t\t\t\t\t\t\t\t{:else if !lastSync}\n\t\t\t\t\t\t\t\t\t\t<span>{$t('customBanner.unshared')} </span>\n\t\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t{$t('customBanner.lastSync', { values: { time: timeAgo(lastSync) } })}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"action\">\n\t\t\t\t\t\t\t\t\t{#if !(customList.length > 3 && !$proUser) && !blocked}\n\t\t\t\t\t\t\t\t\t\t<button class=\"edit\" on:click={() => customizeBanner(itemID)}>\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"gi-pen\" /> <span>{$t('customBanner.edit')}</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t\t\t\t{#if !maintenance}\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tclass=\"delete\"\n\t\t\t\t\t\t\t\t\t\t\ton:click={() => selectToDelete(itemID, images?.thumbnail)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"gi-delete\" /> <span>{$t('customBanner.delete')}</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t{#if !maintenance}\n\t\t\t\t\t\t{#if $proUser || customList.length < 3}\n\t\t\t\t\t\t\t<div class=\"item blank\">\n\t\t\t\t\t\t\t\t<button class=\"add\" on:click={() => customizeBanner()}>\n\t\t\t\t\t\t\t\t\t<i class=\"gi-plus\" />\n\t\t\t\t\t\t\t\t\t<span>{$t('customBanner.addBanner')}</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<div class=\"item blank locked\">\n\t\t\t\t\t\t\t\t<button class=\"add\" on:click={() => selectMenu('proAccess')}>\n\t\t\t\t\t\t\t\t\t<i class=\"gi-lock\" />\n\t\t\t\t\t\t\t\t\t<span>{$t('customBanner.memberToUnlock')}</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"item blank locke disabled\">\n\t\t\t\t\t\t\t<button class=\"add\" disabled>\n\t\t\t\t\t\t\t\t<i class=\"gi-gear\" />\n\t\t\t\t\t\t\t\t<span>Some Features are Disabled for Maintenance!</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>{/if}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t\t<!-- End ShowNote -->\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.content-container {\n\t\tbackground-color: #fbf6ee;\n\t\tbackground-image: var(--bg-icon);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 50%;\n\t\tbackground-position: 50% 60%;\n\t\tborder-radius: 0.5rem;\n\t\tcolor: var(--text-color);\n\t\tpadding: 2%;\n\t}\n\n\t@media screen and (max-width: 700px) {\n\t\t.content-container {\n\t\t\tbackground-size: 80%;\n\t\t}\n\t}\n\n\t.header h1 {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 120%;\n\t}\n\n\t.question {\n\t\twidth: 25px;\n\t\tline-height: 0;\n\t\tmargin-left: 1%;\n\t\tborder-radius: 100%;\n\t\taspect-ratio: 1/1;\n\t\tborder: 1px solid var(--text-color);\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttransition: color 0.25s, background 0.25s, transform 0.25s;\n\t}\n\n\t.question:hover {\n\t\tbackground-color: var(--text-color);\n\t\tcolor: #fff;\n\t}\n\n\t.question:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\t:global(.mobile) .question {\n\t\twidth: 20px;\n\t\tfont-size: 80%;\n\t}\n\n\t/* Disclaimer */\n\t.disclaimer {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpadding: 2%;\n\t\toverflow: auto;\n\t\tz-index: +2;\n\t\ttext-align: center;\n\t}\n\n\tarticle {\n\t\tpadding: 2%;\n\t\ttext-align: left;\n\t\tbackground-color: #fff;\n\t\tmargin-bottom: 2%;\n\t\tborder-radius: 0.5rem;\n\t\tfont-size: 90%;\n\t}\n\n\t.disclaimer :global(p) {\n\t\tmargin-bottom: 3%;\n\t}\n\t.disclaimer :global(ol),\n\t.disclaimer :global(ul) {\n\t\tline-height: 1.5;\n\t\tlist-style-position: inside;\n\t}\n\n\t/*  */\n\t.notice {\n\t\twidth: 100%;\n\t\tmargin: 1% 0;\n\t\tpadding: 2%;\n\t\tcolor: #fff;\n\t\tbackground-color: rgba(217, 67, 67, 0.75);\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-size: 100%;\n\t\tfont-weight: bold;\n\t}\n\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: calc(100% - var(--height));\n\t\tposition: relative;\n\t}\n\n\t.wrapper.ready {\n\t\toverflow-y: auto;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t\tmargin-bottom: 2%;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.item {\n\t\tmargin: calc(0.04 * var(--item-width));\n\t\tmargin-bottom: calc(0.12 * var(--item-width));\n\t\taspect-ratio: 1080/533;\n\t\twidth: 30%;\n\t\tposition: relative;\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.item {\n\t\t\twidth: 45%;\n\t\t}\n\t\tarticle {\n\t\t\tfont-size: 120%;\n\t\t}\n\t}\n\n\t.banner-item {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tborder: 2px solid #c3b8a5;\n\t\tposition: relative;\n\t}\n\n\t.banner-item::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: calc(0.03 * var(--item-width));\n\t\tborder: calc(0.015 * var(--item-width)) solid #eac343;\n\t\topacity: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\t.banner-item:disabled::after {\n\t\tcontent: attr(data-text);\n\t\topacity: 1;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tborder: none;\n\t\tborder-radius: unset;\n\t\tcolor: rgba(255, 255, 255, 0.85);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.banner-item:not(:disabled):hover::after {\n\t\topacity: 1;\n\t}\n\n\t.sync {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tz-index: +1;\n\t\tline-height: 0;\n\t\tpadding: calc(0.02 * var(--item-width));\n\t\tfont-size: calc(0.065 * var(--item-width));\n\t}\n\n\t.gi-cloud-deleted {\n\t\tbackground-color: #da2133;\n\t\tcolor: #fff;\n\t}\n\t.gi-cloud-sync {\n\t\tbackground-color: #eac343;\n\t}\n\t.gi-network {\n\t\tbackground-color: #2f9cf4;\n\t\tcolor: #fff;\n\t}\n\n\t.item img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t}\n\n\t.time {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-style: italic;\n\t\tfont-size: 90%;\n\t\ttext-align: center;\n\t}\n\n\t.action {\n\t\tposition: absolute;\n\t\twidth: 100%;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\ttransform: translateY(120%);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t}\n\n\t.action button {\n\t\tfont-size: 80%;\n\t\tline-height: 0;\n\t\tpadding: 2% 5%;\n\t\topacity: 0.8;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tborder-radius: 2rem;\n\t\tcolor: #fff;\n\t\tmargin: 0 1%;\n\t\ttransition: transform 0.25s, background 0.25s;\n\t}\n\n\t.action button:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\t.action button i {\n\t\ttransform: translateX(-15%);\n\t\tdisplay: inline-block;\n\t}\n\n\t.edit {\n\t\tbackground-color: #00b5a9;\n\t}\n\t.edit:hover {\n\t\tbackground-color: #078f86;\n\t}\n\n\t.delete {\n\t\tbackground-color: #ff1c1c;\n\t}\n\t.delete:hover {\n\t\topacity: 1;\n\t\tbackground-color: #cb1717;\n\t}\n\n\t.item.blank {\n\t\tborder-radius: calc(0.02 * var(--item-width));\n\t\ttransition: border 0.25s;\n\t\tborder: 2px dashed #c3b8a5;\n\t}\n\t.item.blank:not(.disabled):hover {\n\t\tborder-color: #857d71;\n\t}\n\n\t.add {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tcolor: #c3b8a5;\n\t\tline-height: 0;\n\t\ttransition: color 0.25s;\n\t}\n\n\t.item:not(.disabled) .add:hover {\n\t\tcolor: #857d71;\n\t}\n\n\t.add i {\n\t\tfont-size: calc(0.1 * var(--item-width));\n\t\tmargin-bottom: 2%;\n\t}\n\t.add span {\n\t\tfont-size: calc(0.05 * var(--item-width));\n\t\tdisplay: block;\n\t\tline-height: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/ProAccess.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t, json } from 'svelte-i18n';\n\n\timport { assets, proUser, showAd } from '$lib/store/app-stores';\n\timport { adKey } from '$lib/helpers/accessKey';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\n\tlet input = '';\n\tlet userKey = '';\n\tlet error = false;\n\tlet waiting = false;\n\n\tconst getProAccount = async () => {\n\t\tplaySfx();\n\t\twaiting = true;\n\t\tconst { msg: message, validity } = await adKey.verify(input);\n\t\tif (validity) return window.location.reload();\n\t\terror = !validity;\n\t\tpushToast({ message: $t(message), type: error ? 'error' : '' });\n\t\twaiting = false;\n\t};\n\n\tlet checkingLocal = true;\n\tlet userHasKey = false;\n\tlet dateExpired = '';\n\tlet isUserKeyValid = false;\n\tlet isOffline = false;\n\n\tconst checkLocal = async () => {\n\t\tconst { validity, storedKey, status, expiryDate } = await adKey.initialLoad();\n\t\tisOffline = status === 'offline';\n\t\tuserKey = storedKey;\n\t\tuserHasKey = !!storedKey;\n\t\tisUserKeyValid = validity;\n\t\tdateExpired = expiryDate;\n\t\tif (userHasKey) input = '✼✼✼✼✼';\n\t\tcheckingLocal = false;\n\t};\n\n\tconst showKeyHandle = () => {\n\t\tinput = input.includes('✼') ? userKey : '✼✼✼✼✼';\n\t};\n\n\t// Modal\n\tlet showModal = false;\n\tconst confirmModal = () => {\n\t\tplaySfx();\n\t\tadKey.clear();\n\t\tcheckLocal();\n\t\tproUser.set(false);\n\t\tshowAd.set(true);\n\t\tshowModal = false;\n\t\tinput = '';\n\t};\n\tconst cancelModal = () => (showModal = false);\n\n\tconst handleKey = () => {\n\t\tshowModal = true;\n\t\tplaySfx();\n\t};\n\n\tonMount(checkLocal);\n</script>\n\n{#if showModal}\n\t<Modal title={$t('menu.removeKey')} on:confirm={confirmModal} on:cancel={cancelModal}>\n\t\t<div class=\"confirmation\">\n\t\t\t<span>\n\t\t\t\t{$t('menu.removeKeyConfirm')}\n\t\t\t</span>\n\t\t</div>\n\t</Modal>\n{/if}\n\n<div\n\tclass=\"content-container\"\n\tin:fade={{ duration: 200 }}\n\tstyle=\"--bg-icon:url('{$assets['modal-bg-icon.png']}')\"\n>\n\t{#if checkingLocal}\n\t\t<div class=\"row loader\">\n\t\t\t<Icon type=\"loader\" />\n\t\t\t<span> {$t('menu.checkingKey')} </span>\n\t\t</div>\n\t{:else}\n\t\t<form class=\"row\" on:submit|preventDefault={!waiting ? getProAccount : null} in:fade>\n\t\t\t<label for=\"key\">{$t('menu.inputKeyTxt')}</label>\n\t\t\t<div class=\"input\">\n\t\t\t\t<div class=\"field\" style=\"position: relative\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid=\"key\"\n\t\t\t\t\t\tbind:value={input}\n\t\t\t\t\t\tplaceholder={$t('menu.inputKeyPlaceholder')}\n\t\t\t\t\t\tclass:error={error || (!isUserKeyValid && userHasKey)}\n\t\t\t\t\t\tdisabled={userHasKey}\n\t\t\t\t\t/>\n\t\t\t\t\t{#if userHasKey}\n\t\t\t\t\t\t<button class=\"toggle-visible\" on:click|preventDefault={showKeyHandle}>\n\t\t\t\t\t\t\t<i class=\"gi-eye{input.includes('✼') ? '-slash' : ''}\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"note\">\n\t\t\t\t\t{#if isOffline}\n\t\t\t\t\t\t<span class=\"invalid\"> {$t('menu.verifyFail')} </span>\n\t\t\t\t\t{:else if isUserKeyValid}\n\t\t\t\t\t\t<span class=\"keyValid\"> {$t('menu.adFreeUser')} </span>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{#if dateExpired && dateExpired !== 'none'}\n\t\t\t\t\t\t\t<span class=\"invalid\"> {$t('menu.keyExpired1')}</span>\n\t\t\t\t\t\t{:else if !isUserKeyValid && userHasKey}\n\t\t\t\t\t\t\t<span class=\"invalid\"> {$t('menu.invalidKey')} </span>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<span> {$t('menu.noKey')} </span>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t<br />\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tstyle=\"color: #127399;\"\n\t\t\t\t\t\t\thref=\"https://ko-fi.com/post/AdFree-Wish-Simulator-Enjoy-Simulator-Without-Ads-G2G2DQ57O\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\ton:click|stopPropagation\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{$t('menu.getNewKey')}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\tor\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tstyle=\"color: #be1e2d;\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\thref=\"https://trakteer.id/mantan21/showcase/access-key-untuk-membership-SJ9X6\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tHere for Indonesian!\n\t\t\t\t\t\t</a>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\n\t\t\t\t{#if userHasKey}\n\t\t\t\t\t<ButtonModal type=\"cancel\" on:click={handleKey}>{$t('menu.removeKey')}</ButtonModal>\n\t\t\t\t{:else}\n\t\t\t\t\t<ButtonModal on:click={getProAccount} disabled={!input || waiting}>\n\t\t\t\t\t\t{waiting ? $t('waiting') : $t('menu.getpro')}\n\t\t\t\t\t</ButtonModal>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</form>\n\t{/if}\n\t<div class=\"admin-note\">\n\t\t<picture>\n\t\t\t<img src={$assets['qiqi.webp']} alt=\"Benefits\" crossorigin=\"anonymous\" />\n\t\t</picture>\n\n\t\t<h3>{$t('menu.benefit')}</h3>\n\t\t<ol>\n\t\t\t{#each $json('menu.authorNotes') as benefit}\n\t\t\t\t<li>\n\t\t\t\t\t{@html $t(benefit, {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\tHSRWishSim: `<a href=\"https://hsr.wishsimulator.app\" target=\"_blank\">\n\t\t\t\t\t\t\t\t\t\"Honkai: Star Rail\" Wrap Simulator\n\t\t\t\t\t\t\t\t</a>`\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t</li>\n\t\t\t{/each}\n\t\t</ol>\n\t</div>\n</div>\n\n<style>\n\t.content-container {\n\t\tbackground-color: #fbf6ee;\n\t\tbackground-image: var(--bg-icon);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 50%;\n\t\tbackground-position: 50% 60%;\n\t\tborder-radius: 0.5rem;\n\t\tcolor: var(--text-color);\n\t}\n\n\t.confirmation {\n\t\tpadding: 10%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.row {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t}\n\n\t:global(.mobile) form.row {\n\t\ttransform: scale(0.8);\n\t}\n\n\t.loader span {\n\t\tmargin-top: 1.5rem;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t@media screen and (max-width: 700px) {\n\t\t.content-container {\n\t\t\tbackground-size: 80%;\n\t\t}\n\t}\n\n\tform {\n\t\tpadding: 0 2%;\n\t}\n\n\tlabel {\n\t\tfont-size: 1.5rem;\n\t\ttext-align: center;\n\t\tpadding: 0 5%;\n\t}\n\n\t.input {\n\t\ttext-align: center;\n\t\tpadding: 2% 0 0;\n\t\twidth: 80%;\n\t\tmax-width: 30rem;\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t\tpadding: 0 1.5rem;\n\t\tmargin-bottom: 2%;\n\t\theight: 3rem;\n\t\tdisplay: block;\n\t\tborder-radius: 3rem;\n\t\tborder: #c3b8a5 2px solid;\n\t\tbackground-color: var(--tertiary-color);\n\t\toutline: none;\n\t\ttransition: all 0.2s;\n\t}\n\n\tinput:focus {\n\t\tbox-shadow: 0 0 0.4rem rgba(227, 149, 48, 0.7);\n\t}\n\n\tinput.error {\n\t\tborder: #ee6c4c 2px solid;\n\t}\n\tinput.error:focus {\n\t\tbox-shadow: 0 0 0.4rem rgba(222, 47, 34, 0.7);\n\t}\n\tinput:disabled {\n\t\tbackground-color: transparent;\n\t\topacity: 0.7;\n\t}\n\tinput:not(.error):disabled {\n\t\tborder: 2px solid #64ad15 !important;\n\t}\n\n\t.toggle-visible {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\ttop: 50%;\n\t\tright: 1rem;\n\t\ttransform: translateY(-50%);\n\t\tpadding: 0.5rem;\n\t\taspect-ratio: 1/1;\n\t\tfont-size: 150%;\n\t\tcolor: rgba(0, 0, 0, 0.5);\n\t}\n\n\t.note {\n\t\tmargin-bottom: 5%;\n\t}\n\n\t.keyValid {\n\t\tcolor: #64ad15;\n\t}\n\t.invalid {\n\t\tcolor: #ee6c4c;\n\t}\n\t.invalid,\n\t.keyValid {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.admin-note {\n\t\tpadding: 1% 5% 5%;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t}\n\n\t.admin-note ol {\n\t\twidth: 50%;\n\t}\n\n\tpicture {\n\t\twidth: 15%;\n\t\tmargin-bottom: -1rem;\n\t}\n\n\t@media screen and (max-width: 530px) {\n\t\t.admin-note ol {\n\t\t\twidth: 90%;\n\t\t}\n\t\tpicture {\n\t\t\twidth: 30%;\n\t\t}\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/Settings.svelte",
    "content": "<script>\n\timport { browser } from '$app/environment';\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { locale, t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\n\timport { autoskip, isCustomBanner, multipull, wishAmount } from '$lib/store/app-stores';\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { calculateByteSize } from '$lib/helpers/dataAPI/api-filesystem';\n\timport { pauseSfx, playSfx } from '$lib/helpers/audio/audio';\n\timport { check as meteorCheck } from '$lib/helpers/meteor-loader';\n\timport { factoryReset } from '$lib/helpers/dataAPI/storage-reset';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport CheckBox from '$lib/components/CheckBox.svelte';\n\timport OptionMenu from './_options.svelte';\n\n\tlet optionToShow = '';\n\tconst handleOption = (selected) => (optionToShow = selected);\n\tsetContext('handleOption', handleOption);\n\tlet isMuted = localConfig.get('muted');\n\n\t// Handle Muted\n\tconst handleMuted = ({ detail }) => {\n\t\tconst { selected } = detail;\n\t\tisMuted = selected === 'yes';\n\t\tif (isMuted) pauseSfx('wishBacksound'); //stop sfx Before set config\n\t\tlocalConfig.set('muted', isMuted);\n\t\tif (!isMuted) playSfx('wishBacksound'); // Play SFX after set config\n\t};\n\n\t// AutoSkip\n\tconst readyToPull = getContext('readyToPull');\n\tconst handleAutoSkip = async ({ detail }) => {\n\t\tconst { selected } = detail;\n\t\tconst isAutoSkip = selected === 'yes';\n\t\tautoskip.set(isAutoSkip);\n\t\tlocalConfig.set('autoskip', isAutoSkip);\n\t\tif (isAutoSkip) return readyToPull.set(true);\n\t\tconst cekExpress = await meteorCheck();\n\t\treadyToPull.set(cekExpress);\n\t};\n\n\t// Animated BG\n\tconst handleAnimatedBG = getContext('animateBG');\n\tlet animatedbg = browser ? !!localConfig.get('animatedBG') : false;\n\tconst showAnimatedBG = (e) => {\n\t\tconst { selected } = e.detail;\n\t\tlocalConfig.set('animatedBG', selected === 'yes');\n\t\tanimatedbg = selected === 'yes';\n\t\thandleAnimatedBG();\n\t};\n\n\t// WishAmount\n\tlet selectedAmount = localConfig.get('wishAmount') || 'default';\n\tconst handleSelectAmount = ({ detail }) => {\n\t\tselectedAmount = detail;\n\t\tlocalConfig.set('wishAmount', detail);\n\t\twishAmount.set(detail);\n\t};\n\n\t// Multipull Amount\n\tconst setMultiPull = (value) => {\n\t\tlocalConfig.set('multipull', value);\n\t\tmultipull.set(value || 1);\n\t};\n\tsetContext('setMultiPull', setMultiPull);\n\n\t// Reset\n\tlet showResetModal = false;\n\tlet keepSetting = false;\n\tlet clearCache = false;\n\n\tconst getStorageSize = async () => {\n\t\tconst storageApi = navigator?.storage || {};\n\t\tconst { usageDetails = {} } = 'estimate' in storageApi ? await storageApi.estimate() : 0;\n\t\tconst { caches = 0 } = usageDetails;\n\t\tconst size = calculateByteSize(caches);\n\t\treturn size;\n\t};\n\n\tconst reset = () => {\n\t\tshowResetModal = true;\n\t\tplaySfx('modal');\n\t};\n\tsetContext('factoryReset', reset);\n\n\tconst confirmReset = async () => {\n\t\tplaySfx();\n\t\tshowResetModal = false;\n\t\tawait factoryReset({ clearCache, keepSetting, isCustom: $isCustomBanner });\n\t\tpushToast({ message: $t('menu.resetSuccess'), type: 'success' });\n\t\tif (keepSetting) return;\n\n\t\tplaySfx('wishBacksound');\n\t\thandleAnimatedBG();\n\t\tselectedAmount = 'default';\n\t\tsetMultiPull(10);\n\t};\n\n\tconst cancelReset = () => {\n\t\tshowResetModal = false;\n\t\tplaySfx('close');\n\t};\n\n\tlet optionsContainer;\n\tonMount(() => {\n\t\tOverlayScrollbars(optionsContainer, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n{#if showResetModal}\n\t<Modal title={$t('menu.resetTitle')} on:confirm={confirmReset} on:cancel={cancelReset}>\n\t\t<div class=\"confirmation\">\n\t\t\t<caption>\n\t\t\t\t{@html $t('menu.resetPrompt')}\n\t\t\t</caption>\n\n\t\t\t<div class=\"delete-option\">\n\t\t\t\t<CheckBox\n\t\t\t\t\tid=\"_setting\"\n\t\t\t\t\tchecked={keepSetting}\n\t\t\t\t\ton:change={({ detail }) => (keepSetting = !!detail.checked)}\n\t\t\t\t>\n\t\t\t\t\t<span> {@html $t('menu.keepSetting')}</span>\n\t\t\t\t</CheckBox>\n\n\t\t\t\t<CheckBox\n\t\t\t\t\tid=\"_cache\"\n\t\t\t\t\tchecked={clearCache}\n\t\t\t\t\ton:change={({ detail }) => (clearCache = !!detail.checked)}\n\t\t\t\t>\n\t\t\t\t\t{#await getStorageSize()}\n\t\t\t\t\t\t<span>..B</span>\n\t\t\t\t\t{:then size}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{@html $t('menu.clearCache', { values: { size: size } })}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t{/await}\n\t\t\t\t</CheckBox>\n\t\t\t</div>\n\t\t</div>\n\t</Modal>\n{/if}\n\n<div in:fade={{ duration: 200 }} class=\"content-container\" bind:this={optionsContainer}>\n\t<OptionMenu name=\"locale\" activeIndicator={$locale} showOption={optionToShow === 'locale'}>\n\t\t{$t('menu.language')}\n\t</OptionMenu>\n\n\t<OptionMenu name=\"currency\" showOption={optionToShow === 'currency'}>\n\t\t{$t('menu.currency')}\n\t</OptionMenu>\n\n\t<OptionMenu\n\t\tname=\"wishAmount\"\n\t\tshowOption={optionToShow === 'wishAmount'}\n\t\tactiveIndicator={selectedAmount}\n\t\ton:select={handleSelectAmount}\n\t>\n\t\t{$t('menu.fates')}\n\t</OptionMenu>\n\n\t{#each ['intertwined', 'acquaint', 'starglitter', 'stardust', 'primogem'] as item, i}\n\t\t{#if selectedAmount === 'manual'}\n\t\t\t<div in:fly|local={{ y: -10, delay: Math.sqrt(i * 10000) }} out:fly|local={{ y: -10 }}>\n\t\t\t\t<OptionMenu useInput sub inputValue={item} name=\"currencyItem\">\n\t\t\t\t\t<Icon type={item} style=\"margin: -1% 2% -1% 0\" />\n\t\t\t\t\t{$t(`shop.item.${item}`)}\n\t\t\t\t</OptionMenu>\n\t\t\t</div>\n\t\t{/if}\n\t{/each}\n\n\t<OptionMenu name=\"multi\" inputValue={$multipull} useInput>{$t('menu.multiRoll')}</OptionMenu>\n\n\t<OptionMenu\n\t\tshowOption={optionToShow === 'audio'}\n\t\tname=\"audio\"\n\t\tactiveIndicator={isMuted}\n\t\ton:select={handleMuted}\n\t>\n\t\t{$t('menu.mute')}\n\t</OptionMenu>\n\n\t<OptionMenu\n\t\tshowOption={optionToShow === 'autoskip'}\n\t\tname=\"autoskip\"\n\t\tactiveIndicator={$autoskip}\n\t\ton:select={handleAutoSkip}\n\t>\n\t\t{$t('menu.autoskip')}\n\t</OptionMenu>\n\n\t<OptionMenu\n\t\tshowOption={optionToShow === 'animatedbg'}\n\t\tname=\"animatedbg\"\n\t\tactiveIndicator={animatedbg}\n\t\ton:select={showAnimatedBG}\n\t>\n\t\t{$t('menu.animatedbg')}\n\t</OptionMenu>\n\n\t<OptionMenu name=\"switchBanner\">{$t('menu.switchBanner')}</OptionMenu>\n\n\t<OptionMenu name=\"reset\">{$t('menu.factoryReset')}</OptionMenu>\n\n\t<h2>Notes :</h2>\n\t<div class=\"notes\">\n\t\t<ol>\n\t\t\t<li>\n\t\t\t\tI tried to create the simulator with pity system almost like the real game, the rate of\n\t\t\t\tgetting rare item will increase once you reach a certain pity depending on where banner you\n\t\t\t\tpull. you can go <a\n\t\t\t\t\ton:click|stopPropagation\n\t\t\t\t\thref=\"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator#pity-system\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t>\n\t\t\t\t\tHere\n\t\t\t\t</a>\n\t\t\t\tto find details of the probability. If you has any idea, please send me feedback by creating\n\t\t\t\t<a\n\t\t\t\t\ton:click|stopPropagation\n\t\t\t\t\thref=\"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator/issues\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t>\n\t\t\t\t\tnew issue here\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\tThis app use Localstorage and IndexedDB to save your pull history, it's native on your\n\t\t\t\tbrowser, if you clear your browser data, you will lost your data that related to this app\n\t\t\t\ttoo. No chance to recover it back, because we never store your data on cloud\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\tThis App does not collect or store any personally identifiable information about you.\n\t\t\t\tHowever, this app use third party services that may collect information used to identify\n\t\t\t\tyou. The information that these third party services request will be retained on your device\n\t\t\t\tand is not collected by me in any way.\n\t\t\t</li>\n\t\t</ol>\n\t</div>\n</div>\n\n<style>\n\t.confirmation {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.delete-option {\n\t\tfont-size: 80%;\n\t\tmargin: 2% 0;\n\t\twidth: 80%;\n\t}\n\n\t.delete-option :global(.checkbox) {\n\t\tmargin-top: 3% !important;\n\t}\n\n\t.delete-option :global(label) {\n\t\ttext-align: left;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\t.delete-option :global(small) {\n\t\tdisplay: block;\n\t}\n\n\t.delete-option :global(label i) {\n\t\tmargin-right: 2%;\n\t}\n\n\t.notes {\n\t\tfont-weight: 100;\n\t\tbackground-color: #fff;\n\t\tpadding: 1rem 2.5rem 0.5rem;\n\t\tfont-size: 0.87rem;\n\t\tborder-radius: 0.3rem;\n\t}\n\n\tol li {\n\t\tmargin-bottom: 1rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/Updates.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport updates from '$lib/data/updates.json';\n\n\tlet updatesContainer;\n\tonMount(() => {\n\t\tOverlayScrollbars(updatesContainer, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n<div class=\"updates content-container\" in:fade={{ duration: 200 }}>\n\t<div class=\"text\">\n\t\tYou can Check what are changes we made on <a\n\t\t\ton:click|stopPropagation\n\t\t\thref=\"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator\"\n\t\t\ttarget=\"_blank\"\n\t\t>\n\t\t\tGithub Repository\n\t\t</a>. You can submit an issue if you find something wrong !\n\t</div>\n\t<div class=\"update-item\" bind:this={updatesContainer}>\n\t\t{#each [...updates.data].reverse() as { description, date }, i (i)}\n\t\t\t<h2>\n\t\t\t\t<i class=\"tgl\"> {date} </i>\n\t\t\t\t{#if i === 0} ( Latest Update ) {/if}\n\t\t\t</h2>\n\t\t\t{#each description as txt} <p>{@html txt}</p> {/each}\n\t\t{/each}\n\t</div>\n</div>\n\n<style>\n\t.text {\n\t\tcolor: #fff;\n\t\tmargin-bottom: 1rem;\n\t\tfont-size: 1rem;\n\t\tfont-weight: bold;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\t.text a {\n\t\ttext-decoration: underline;\n\t\ttransition: all 0.2s;\n\t\tcolor: #ffffff;\n\t}\n\n\ta:hover {\n\t\tcolor: #f7cf33;\n\t}\n\n\t.updates .update-item {\n\t\tfont-weight: 100;\n\t\tbackground-color: #fff;\n\t\tpadding: 1rem 2.5rem 0.5rem;\n\t\tfont-size: 0.87rem;\n\t\tborder-radius: 0.3rem;\n\t}\n\n\t.update-item {\n\t\theight: 100%;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-size: 0.97rem;\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t}\n\n\t.updates p {\n\t\tposition: relative;\n\t\tpadding-left: 1rem;\n\t}\n\t.updates p::before {\n\t\tcontent: '*';\n\t\tdisplay: inline-block;\n\t\twidth: 10px;\n\t\tline-height: 0;\n\t\tfont-size: 1.3rem;\n\t\tpadding-top: 0.5rem;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t}\n\t.updates h2:nth-child(1) {\n\t\tmargin-top: 0;\n\t}\n\t.updates h2 {\n\t\tmargin-left: -1rem;\n\t\tfont-weight: bold;\n\t\tcolor: #f7cf33;\n\t}\n\t.updates .tgl {\n\t\tcolor: #bd6932;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/_options.svelte",
    "content": "<script>\n\timport { createEventDispatcher, getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { locales, locale, t } from 'svelte-i18n';\n\timport {\n\t\tactiveVersion,\n\t\tprimogem as primo,\n\t\tacquaint as ac,\n\t\tintertwined as iw,\n\t\tstardust as sd,\n\t\tstarglitter as sg\n\t} from '$lib/store/app-stores';\n\timport { localBalance, localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { localeName, flags } from '$lib/data/country.json';\n\timport { availableCurrencies, userCurrencies } from '$lib/helpers/currencies';\n\n\texport let name;\n\texport let useInput = false;\n\texport let inputValue = '';\n\texport let sub = false;\n\texport let activeIndicator = null;\n\texport let showOption = false;\n\n\tconst handleOption = getContext('handleOption');\n\tconst reset = getContext('factoryReset');\n\n\tconst dispatch = createEventDispatcher();\n\tlet select = (selected) => {\n\t\tplaySfx();\n\t\tshowOption = !showOption;\n\t\tif (!selected) return;\n\n\t\tdispatch('select', { selected });\n\t\thandleOption('');\n\t};\n\n\tconst openOption = () => {\n\t\tplaySfx();\n\t\tif (showOption) return handleOption('');\n\t\thandleOption(name);\n\t};\n\n\tconst navigate = getContext('navigate');\n\tconst openPrevious = () => {\n\t\tplaySfx('prevbanner');\n\t\tnavigate('allbanners');\n\t};\n\n\t// Set Language\n\tconst setLang = (langID) => {\n\t\tplaySfx();\n\t\tlocale.set(langID);\n\t\tlocalConfig.set('locale', langID);\n\t\thandleOption('');\n\t\tuserCurrencies.init();\n\t};\n\n\t// Currency\n\t$: currencyIndicator = $locale ? userCurrencies.checkUsedCurrency().currency : '';\n\tconst setCurrency = (selected) => {\n\t\tplaySfx();\n\t\tcookie.set('currency', selected);\n\t\tcurrencyIndicator = selected;\n\t\tuserCurrencies.init(selected);\n\t\thandleOption('');\n\t};\n\n\t// Wish Amount\n\tconst selectAmount = (val) => {\n\t\tplaySfx();\n\t\thandleOption('');\n\t\tdispatch('select', val);\n\t};\n\n\tconst gameCurrencyList = {\n\t\tprimogem: primo,\n\t\tintertwined: iw,\n\t\tacquaint: ac,\n\t\tstarglitter: sg,\n\t\tstardust: sd\n\t};\n\n\t$: balance = gameCurrencyList[inputValue];\n\tconst setMultiPull = getContext('setMultiPull');\n\n\tconst setGameCurrencies = (value) => {\n\t\tgameCurrencyList[inputValue]?.set(value);\n\t\tlocalBalance.set(inputValue, value);\n\t};\n\n\tconst setValues = (e) => {\n\t\tconst inputVal = e.target.value.substring(0, 9);\n\t\tconst numberVal = parseInt(inputVal, 10);\n\t\tconst minVal = name === 'multi' ? 1 : 0;\n\t\tconst value = !isNaN(numberVal) ? numberVal : minVal;\n\t\te.target.value = value;\n\n\t\tif (name === 'currencyItem') return setGameCurrencies(value);\n\t\tif (name === 'multi') return setMultiPull(value);\n\t};\n</script>\n\n<div class=\"option\" class:sub>\n\t<div class=\"option-name\">\n\t\t<slot />\n\t</div>\n\n\t{#if useInput}\n\t\t<input\n\t\t\tmin=\"0\"\n\t\t\ttype=\"number\"\n\t\t\tclass=\"option-select\"\n\t\t\tvalue={name === 'currencyItem' ? $balance : inputValue}\n\t\t\ton:input={setValues}\n\t\t/>\n\n\t\t<!-- Languages -->\n\t{:else if name === 'locale'}\n\t\t<div class=\"option-select locale\">\n\t\t\t<button\n\t\t\t\tclass=\"selected\"\n\t\t\t\tstyle=\"width: 100%; height:100%\"\n\t\t\t\ton:click|stopPropagation={openOption}\n\t\t\t>\n\t\t\t\t<img src=\"data:image/png;base64,{flags[activeIndicator]}\" alt=\"flag\" class=\"flag\" />\n\t\t\t\t{localeName[activeIndicator]}\n\t\t\t</button>\n\t\t\t<i class=\"gi-caret-{showOption ? 'up' : 'down'}\" />\n\t\t\t{#if showOption}\n\t\t\t\t<div class=\"select\" in:fly={{ duration: 200, y: -10 }}>\n\t\t\t\t\t{#each $locales as locale}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass:selected={activeIndicator === locale}\n\t\t\t\t\t\t\ton:click|stopPropagation={() => setLang(locale)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span style=\"text-align:right; padding-right: 1rem; width:50%\">\n\t\t\t\t\t\t\t\t<img src=\"data:image/png;base64,{flags[locale]}\" alt=\"flag\" class=\"flag\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span style=\"text-align:left;width:100%\"> {localeName[locale]} </span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t\t<button on:click|stopPropagation>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https://github.com/AguzzTN54/Genshin-Impact-Wish-Simulator/tree/master/src/locales\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tstyle=\"text-align:left;width:100%; padding: .5rem; text-align:center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tContribute\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<!-- User Currency -->\n\t{:else if name === 'currency'}\n\t\t<div class=\"option-select locale\">\n\t\t\t<button\n\t\t\t\tclass=\"selected\"\n\t\t\t\tstyle=\"width: 100%; height:100%\"\n\t\t\t\ton:click|stopPropagation={openOption}\n\t\t\t>\n\t\t\t\t{currencyIndicator}\n\t\t\t</button>\n\t\t\t<i class=\"gi-caret-{showOption ? 'up' : 'down'}\" />\n\t\t\t{#if showOption}\n\t\t\t\t<div class=\"select\" in:fly={{ duration: 200, y: -10 }}>\n\t\t\t\t\t{#each availableCurrencies as { currency }}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass:selected={currencyIndicator === currency}\n\t\t\t\t\t\t\ton:click|stopPropagation={() => setCurrency(currency)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span style=\"text-align:center;width:100%;padding: 3%\"> {currency} </span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<!-- Wish Amount -->\n\t{:else if name === 'wishAmount'}\n\t\t<div class=\"option-select wishAmount\">\n\t\t\t<button\n\t\t\t\tclass=\"selected\"\n\t\t\t\tstyle=\"width: 100%; height:100%\"\n\t\t\t\ton:click|stopPropagation={openOption}\n\t\t\t>\n\t\t\t\t{activeIndicator === 'default' ? $t('outfit.default') : $t(`menu.${activeIndicator}`)}\n\t\t\t</button>\n\t\t\t<i class=\"gi-caret-{showOption ? 'up' : 'down'}\" />\n\t\t\t{#if showOption}\n\t\t\t\t<div class=\"select\" in:fly={{ duration: 200, y: -10 }}>\n\t\t\t\t\t{#each ['default', 'unlimited', 'manual'] as item}\n\t\t\t\t\t\t<button class:selected={activeIndicator === item} on:click={() => selectAmount(item)}>\n\t\t\t\t\t\t\t<span style=\"text-align:center;width:100%;padding: 3%\">\n\t\t\t\t\t\t\t\t{item === 'default' ? $t('outfit.default') : $t(`menu.${item}`)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<!-- Switch Banner -->\n\t{:else if name === 'switchBanner'}\n\t\t<button class=\"option-select\" on:click={openPrevious}>\n\t\t\t<i class=\"gi-caret-down\" />\n\t\t\t{$activeVersion.patch} - {$activeVersion.phase}\n\t\t</button>\n\n\t\t<!-- Reset -->\n\t{:else if name === 'reset'}\n\t\t<button class=\"option-select\" on:click={reset}>\n\t\t\t<i class=\"gi-delete\" style=\"vertical-align: bottom; line-height: 0; margin-right: .2rem\" />\n\t\t\t{$t('menu.resetButton')}\n\t\t</button>\n\n\t\t<!-- General Option -->\n\t{:else}\n\t\t<div class=\"option-select\">\n\t\t\t<button\n\t\t\t\tclass=\"selected\"\n\t\t\t\tstyle=\"width: 100%; height:100%\"\n\t\t\t\ton:click|stopPropagation={openOption}\n\t\t\t>\n\t\t\t\t{activeIndicator ? $t('menu.yes') : $t('menu.no')}\n\t\t\t</button>\n\t\t\t<i class=\"gi-caret-{showOption ? 'up' : 'down'}\" />\n\t\t\t{#if showOption}\n\t\t\t\t<div class=\"select\" in:fly={{ duration: 200, y: -10 }}>\n\t\t\t\t\t<button class:selected={!activeIndicator} on:click|stopPropagation={() => select('no')}>\n\t\t\t\t\t\t{$t('menu.no')}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button class:selected={activeIndicator} on:click|stopPropagation={() => select('yes')}>\n\t\t\t\t\t\t{$t('menu.yes')}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.option {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tpadding: 0.4rem 0;\n\t}\n\t@media screen and (max-width: 900px) {\n\t\t.option {\n\t\t\tpadding: 0.3rem 0;\n\t\t}\n\t}\n\t.option-name {\n\t\tbackground-color: #eae5d9;\n\t\twidth: 100%;\n\t\tpadding: 0.35rem 1rem;\n\t\tborder-top-left-radius: 5rem;\n\t\tborder-bottom-left-radius: 5rem;\n\t\tborder: solid transparent;\n\t\tborder-width: 0.2rem 0 0.2rem 0.2rem;\n\t\twhite-space: nowrap;\n\t}\n\t.sub .option-name {\n\t\twidth: 87%;\n\t\tmargin-left: 10%;\n\t\tposition: relative;\n\t}\n\n\t.sub .option-name::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: -13%;\n\t\twidth: 15%;\n\t\theight: 148%;\n\t\tz-index: -1;\n\t\tbottom: 50%;\n\t\tborder-bottom: #dcd4c2 dashed 0.12rem;\n\t\tborder-left: #dcd4c2 dashed 0.12rem;\n\t\topacity: 0.5;\n\t}\n\n\t.option-select {\n\t\tbackground-color: #dcd4c2;\n\t\twidth: 40%;\n\t\tmax-width: 14rem;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tborder-top-right-radius: 5rem;\n\t\tborder-bottom-right-radius: 5rem;\n\t\ttransition: all 0.2s;\n\t\tborder: solid transparent;\n\t\tborder-width: 0.2rem 0.2rem 0.2rem 0;\n\t}\n\n\t.option:hover .option-name,\n\t.option:hover .option-select {\n\t\tborder-color: #fff;\n\t}\n\n\t.option-select i {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tright: 1rem;\n\t\tfont-size: 1rem;\n\t\ttransform: translateY(-50%);\n\t\tpointer-events: none;\n\t}\n\n\t.option-select button,\n\t.option-select {\n\t\tfont-size: 0.7rem;\n\t}\n\tinput.option-select {\n\t\tfont-size: 0.8rem;\n\t}\n\n\t.select {\n\t\tposition: absolute;\n\t\ttop: 110%;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tmax-height: 60vh;\n\t\tbackground-color: #565a64;\n\t\tbox-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3);\n\t\tz-index: +1;\n\t\tborder-radius: 1rem;\n\t\toverflow-y: auto;\n\t\tpadding: 1% 2%;\n\t}\n\n\t.select button {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tpadding: 6%;\n\t\tcolor: #eee;\n\t\tmargin: 1% 0;\n\t\ttransition: all 0.2s;\n\t\tposition: relative;\n\t}\n\n\t.select button:hover,\n\t.select button.selected {\n\t\tbackground-color: #717887;\n\t\tborder-radius: 2rem;\n\t}\n\n\t.select button.selected::after {\n\t\tcontent: '✔';\n\t\tcolor: #eee;\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 50%;\n\t\tright: 8%;\n\t\tfont-size: 170%;\n\t\tline-height: 0;\n\t\ttransform: translateY(-50%);\n\t}\n\n\t.locale {\n\t\tfont-family: var(--gi-global-font);\n\t}\n\t.locale .select button {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0%;\n\t\tpadding: 6% 8%;\n\t}\n\n\t.flag {\n\t\twidth: 1.2rem;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t:global(main):not(.mobile) .option-name {\n\t\t\tfont-size: 120%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/_sidebar.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\n\texport let activeContent;\n\tconst selectMenu = getContext('selectMenu');\n\tconst chatToggle = getContext('chatToggle');\n</script>\n\n<div class=\"sidebar\">\n\t<div class=\"menu-list\" style=\"--bg-active: url('/menu-active.png')\">\n\t\t<div class=\"menu-item\" class:active={activeContent === 'options'}>\n\t\t\t<button on:click={() => selectMenu('options')}> {$t('menu.options')} </button>\n\t\t</div>\n\n\t\t<div class=\"menu-item\" class:active={activeContent === 'customBanner'}>\n\t\t\t<button on:click={() => selectMenu('customBanner')}> {$t('menu.customBanner')} </button>\n\t\t</div>\n\n\t\t<div class=\"menu-item\" class:active={activeContent === 'proAccess'}>\n\t\t\t<button on:click={() => selectMenu('proAccess')}> {$t('menu.proAccess')} </button>\n\t\t</div>\n\n\t\t<div class=\"menu-item\" class:active={activeContent === 'updates'}>\n\t\t\t<button on:click={() => selectMenu('updates')}> {$t('menu.updates')} </button>\n\t\t</div>\n\n\t\t<div class=\"menu-item\" class:active={activeContent === 'backupRestore'}>\n\t\t\t<button on:click={() => selectMenu('backupRestore')}> {$t('menu.backupRestore')} </button>\n\t\t</div>\n\n\t\t<div class=\"menu-item\">\n\t\t\t<button on:click={chatToggle}> {$t('menu.feedback')} </button>\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.sidebar {\n\t\twidth: 30%;\n\t\tmax-width: 20rem;\n\t}\n\t:global(.mobile) .sidebar {\n\t\twidth: 25%;\n\t}\n\t.sidebar .menu-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.menu-item button {\n\t\tcolor: var(--tertiary-color);\n\t\ttransition: all 0.2s;\n\t\topacity: 0.8;\n\t\ttransform-origin: left;\n\t\tpadding: 3.5% 5%;\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t\tpadding-left: 2.5rem;\n\t\tfont-size: 110%;\n\t}\n\n\t.menu-item {\n\t\tposition: relative;\n\t}\n\t.menu-item.active button {\n\t\tcolor: #fff;\n\t\topacity: 1;\n\t\tposition: relative;\n\t}\n\t.menu-item.active::after {\n\t\tcontent: '';\n\t\tbackground-image: var(--bg-active);\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: -1;\n\t}\n\n\t.menu-item:hover button {\n\t\topacity: 1;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t:global(main):not(.mobile) .sidebar {\n\t\t\twidth: 100%;\n\t\t\tmax-width: unset;\n\t\t}\n\t\t:global(main):not(.mobile) .sidebar .menu-list {\n\t\t\tflex-direction: row;\n\t\t\tjustify-content: center;\n\t\t\tflex-wrap: wrap;\n\t\t}\n\t\t:global(main):not(.mobile) .menu-item.active::after {\n\t\t\tdisplay: none;\n\t\t}\n\t\t:global(main):not(.mobile) .menu-item button {\n\t\t\tpadding: 0.2rem 1rem;\n\t\t\tborder-radius: 50px;\n\t\t\topacity: unset;\n\t\t\tfont-size: 135%;\n\t\t}\n\t\t:global(main):not(.mobile) .menu-item.active button,\n\t\t:global(main):not(.mobile) .menu-item:hover button {\n\t\t\tbackground-color: var(--tertiary-color);\n\t\t\tcolor: #4a5265;\n\t\t\ttransform: unset;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/backup-restore/_auto-export.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { getContext, onDestroy, onMount } from 'svelte';\n\timport { autoExport, fileData, fileHandle, savingToSystem } from '$lib/store/filesystem-store';\n\timport {\n\t\tcalculateByteSize,\n\t\tcheckFileExist,\n\t\treadFileHandle,\n\t\tverifyFSPermission\n\t} from '$lib/helpers/dataAPI/api-filesystem';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { storageLocal } from '$lib/helpers/dataAPI/api-localstore';\n\timport { timeAgo } from '$lib/helpers/timeago';\n\timport { updateRemoteStorage } from '$lib/helpers/dataAPI/sync';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\n\texport let hasPermission = false;\n\tlet fileName, isFileExist;\n\t$: autoSave = hasPermission && $autoExport;\n\t$: ({ name: fileName } = $fileData);\n\n\tconst setPermission = getContext('setPermission');\n\tconst getExportTime = () => {\n\t\tconst { date } = storageLocal.get('export') || {};\n\t\treturn timeAgo(date);\n\t};\n\n\tlet checkLastExport;\n\tconst stopInterval = () => {\n\t\tclearInterval(checkLastExport);\n\t\tcheckLastExport = null;\n\t};\n\n\tlet lastExport = getExportTime();\n\tconst startInterval = () => {\n\t\tif (checkLastExport) return;\n\t\tcheckLastExport = setInterval(() => (lastExport = getExportTime()), 1000);\n\t};\n\n\tconst checkAndUpdate = async () => {\n\t\tisFileExist = await checkFileExist($fileHandle);\n\t\tawait updateRemoteStorage({ to: 'local' }); // Export once\n\t\tautoExport.set(true); // Turn on Auto export\n\t};\n\n\tconst allowAutoExport = async () => {\n\t\tif (!$fileHandle) await readFileHandle();\n\n\t\t// Check Permission\n\t\tif (!hasPermission) {\n\t\t\tconst newPermission = await verifyFSPermission($fileHandle);\n\t\t\tsetPermission(newPermission);\n\t\t\tif (!newPermission) throw new Error('Permission Denied');\n\t\t}\n\t\treturn checkAndUpdate();\n\t};\n\n\tconst toggleAutoExport = async () => {\n\t\tplaySfx('click2');\n\t\tif (!hasPermission) return allowAutoExport(); // get permission\n\t\tif ($autoExport) return autoExport.set(false); // turn off auto export\n\t\treturn checkAndUpdate();\n\t};\n\n\tonMount(startInterval);\n\tonDestroy(stopInterval);\n</script>\n\n{#if fileName}\n\t<div class=\"savedFile\" class:active={autoSave} in:fade>\n\t\t<div class=\"button-export\">\n\t\t\t<ButtonGeneral on:click={toggleAutoExport} disabled={$savingToSystem}>\n\t\t\t\t<div class=\"toggle\">\n\t\t\t\t\t{#if $savingToSystem}\n\t\t\t\t\t\t<i class=\"gi-reset\" />\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<i class=\"gi-{autoSave ? 'check' : 'cancel'}\" />\n\t\t\t\t\t{/if}\n\t\t\t\t\t<span> {$t('backupRestore.autoExport')} </span>\n\t\t\t\t</div>\n\t\t\t</ButtonGeneral>\n\t\t</div>\n\t\t<div class=\"fileName\">\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$t('backupRestore.destination')}</td>\n\t\t\t\t\t<td> <span> {fileName} </span></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>{$t('backupRestore.fileSize')}</td>\n\t\t\t\t\t<td>{calculateByteSize($fileData.size)}</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td> {$t('backupRestore.lastExport')} </td>\n\t\t\t\t\t<td> {lastExport} </td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t</div>\n{:else if isFileExist === false}\n\t<button class=\"savedFile error\" disabled in:fade>\n\t\t<span> {$t('backupRestore.desNotFound')} </span>\n\t</button>\n{/if}\n\n<style>\n\t.savedFile {\n\t\tdisplay: flex;\n\t\twidth: 90%;\n\t\talign-items: center;\n\t\tmargin: 2rem 5% 1rem;\n\t\tborder: 0.075rem solid #adad45;\n\t\tborder-radius: 0.4rem;\n\t\ttransition: all 0.25s;\n\t\tposition: relative;\n\t}\n\n\t.savedFile.active {\n\t\tbackground-color: var(--tertiary-color);\n\t}\n\t.savedFile.error {\n\t\tcolor: #cf2727;\n\t\tpadding: 0 5%;\n\t\tfont-size: smaller;\n\t\tjustify-content: center;\n\t\tborder-radius: 2rem;\n\t\toverflow: hidden;\n\t\theight: 2rem;\n\t}\n\n\t.button-export {\n\t\ttransform: translateY(-50%);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\t.toggle {\n\t\tline-height: 0;\n\t\twhite-space: nowrap;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\t.toggle i {\n\t\tfont-size: larger;\n\t}\n\t.toggle span {\n\t\tfont-size: smaller;\n\t}\n\n\t.gi-check {\n\t\tcolor: #58c70a;\n\t}\n\t.gi-cancel {\n\t\tcolor: #cf2727;\n\t}\n\t.gi-reset {\n\t\tcolor: orange;\n\t\tfont-size: 100% !important;\n\t\ttransform-origin: 50%;\n\t\ttransform-box: fill-box;\n\t\tanimation: rotate 1s linear infinite;\n\t}\n\n\t.fileName {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tpadding: 1.75rem 2% 1rem;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.fileName span {\n\t\tdisplay: block;\n\t\twidth: 90%;\n\t\ttext-align: left;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\ttext-transform: capitalize;\n\t}\n\n\ttable {\n\t\twidth: 90%;\n\t}\n\n\ttable td:nth-child(2) {\n\t\tfont-style: italic;\n\t\tcolor: brown;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/backup-restore/_drop-import.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { readDropedFile } from '$lib/helpers/dataAPI/api-filesystem';\n\timport { allowedType, importFileLegacy } from '$lib/helpers/dataAPI/export-import';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\texport let legacyFileHandler = false;\n\tlet onDrag = false;\n\tlet importHandler;\n\n\tconst handleModalImport = getContext('handleModalImport');\n\tconst dragenter = () => {\n\t\tonDrag = true;\n\t\timportHandler = 'drop';\n\t};\n\n\tconst dragNdrop = async (e) => {\n\t\ttry {\n\t\t\tif (importHandler !== 'drop') return;\n\t\t\tonDrag = false;\n\t\t\tif (legacyFileHandler) {\n\t\t\t\tconst dataToImport = await importFileLegacy(e.dataTransfer.files);\n\t\t\t\treturn handleModalImport(dataToImport);\n\t\t\t}\n\t\t\tconst dataToImport = await readDropedFile(e.dataTransfer.items);\n\t\t\treturn handleModalImport(dataToImport);\n\t\t} catch (e) {\n\t\t\tconst { message } = e;\n\t\t\tpushToast({ message, type: 'error' });\n\t\t\tconsole.error(e);\n\t\t}\n\t};\n\n\tconst handleInput = async (e) => {\n\t\ttry {\n\t\t\tif (importHandler !== 'click') return;\n\t\t\tconst dataToImport = await importFileLegacy(e.target.files);\n\t\t\treturn handleModalImport(dataToImport);\n\t\t} catch (e) {\n\t\t\tconst { message } = e;\n\t\t\tpushToast({ message, type: 'error' });\n\t\t\tconsole.error(e);\n\t\t}\n\t};\n</script>\n\n<div class=\"drop-content\" class:onDrag on:dragenter={dragenter}>\n\t<span> {$t('backupRestore.dropFiles')} </span>\n\n\t<input\n\t\tclass=\"inputFile\"\n\t\ttype=\"file\"\n\t\tid=\"importInput\"\n\t\taccept={allowedType}\n\t\ton:dragleave={() => (onDrag = false)}\n\t\ton:drop={dragNdrop}\n\t\ton:change={handleInput}\n\t\ton:click={() => (importHandler = 'click')}\n\t/>\n</div>\n\n<style>\n\t.drop-content {\n\t\twidth: 100%;\n\t\tpadding: 5%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tborder-radius: 0.5rem;\n\t\tborder: 0.1rem dashed var(--text-color);\n\t\tposition: relative;\n\t\ttransition: all 0.25s;\n\t}\n\n\t.drop-content.onDrag {\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tcolor: #fff;\n\t\tborder-color: #fff;\n\t}\n\n\t.inputFile {\n\t\tposition: absolute;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\topacity: 0;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tz-index: +1;\n\t}\n\n\t.onDrag .inputFile {\n\t\tpointer-events: unset;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/backup-restore/_modal-import.svelte",
    "content": "<script>\n\timport { createEventDispatcher, getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { calculateByteSize } from '$lib/helpers/dataAPI/api-filesystem';\n\timport { placeDataToAppDB } from '$lib/helpers/dataAPI/data-merger';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\timport CheckBox from '$lib/components/CheckBox.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\n\texport let importData = {};\n\tconst { file, parsedFile } = importData;\n\tlet action = '';\n\tlet processing = false;\n\n\tconst closeModalImport = getContext('handleModalImport');\n\tconst dispatch = createEventDispatcher();\n\n\tconst closeModal = () => {\n\t\tdispatch('cancel');\n\t\tplaySfx('close');\n\t};\n\n\tconst confirm = async () => {\n\t\tplaySfx();\n\t\tprocessing = true;\n\n\t\tawait placeDataToAppDB(parsedFile, action);\n\t\tcloseModalImport();\n\t\tprocessing = false;\n\t};\n\n\tconst checkboxHandle = (act, { detail }) => {\n\t\tconst { checked } = detail;\n\t\tif (checked) return (action = act);\n\t\taction = '';\n\t};\n</script>\n\n<ModalTpl\n\tnoDimiss\n\ttitle=\"Import Data\"\n\tdisabled={!action || processing}\n\ton:cancel={closeModal}\n\ton:confirm={confirm}\n>\n\t{#if processing}\n\t\t<div class=\"import-content\">\n\t\t\t<div class=\"row loader\" in:fade>\n\t\t\t\t<Icon type=\"loader\" />\n\t\t\t</div>\n\t\t</div>\n\t{:else}\n\t\t<div class=\"import-content\">\n\t\t\t<caption>\n\t\t\t\t{@html $t('backupRestore.importAction', {\n\t\t\t\t\tvalues: { fileInfo: `<strong> ${file.name} (${calculateByteSize(file.size)}) </strong>` }\n\t\t\t\t})}\n\t\t\t</caption>\n\n\t\t\t<div class=\"import-option\">\n\t\t\t\t<CheckBox\n\t\t\t\t\tid=\"_merge\"\n\t\t\t\t\tchecked={action === 'merge'}\n\t\t\t\t\ton:change={(e) => checkboxHandle('merge', e)}\n\t\t\t\t>\n\t\t\t\t\t<span> {@html $t('backupRestore.mergeAction')} </span>\n\t\t\t\t</CheckBox>\n\n\t\t\t\t<CheckBox\n\t\t\t\t\tid=\"_replace\"\n\t\t\t\t\tchecked={action === 'replace'}\n\t\t\t\t\ton:change={(e) => checkboxHandle('replace', e)}\n\t\t\t\t>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{@html $t('backupRestore.replaceAction')}\n\t\t\t\t\t</span>\n\t\t\t\t</CheckBox>\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n</ModalTpl>\n\n<style>\n\t/* Modal */\n\t.import-content {\n\t\tpadding: 5%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\tcaption {\n\t\twidth: 100%;\n\t}\n\n\t.import-option {\n\t\tfont-size: 80%;\n\t\twidth: 80%;\n\t}\n\n\t.import-option :global(.checkbox) {\n\t\tmargin-top: 3% !important;\n\t}\n\n\t.import-option :global(label) {\n\t\ttext-align: left;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\t.import-option :global(small) {\n\t\tdisplay: block;\n\t}\n\n\t.import-option :global(label i) {\n\t\tmargin-right: 2%;\n\t}\n\n\t.row.loader {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/backup-restore/_sync-cloud.svelte",
    "content": "<script>\n\timport { fade } from 'svelte/transition';\n\t// import { signIn } from '$lib/helpers/dataAPI/api-google';\n</script>\n\n<div class=\"cloud-sync\" in:fade>\n\t<caption>\n\t\tYou don't actually need to back up your data since there is no critical information required or\n\t\tgenerated within this simulator. The Backup/Restore feature becomes more useful if you have\n\t\tcustom banners to edit on different devices. However, the decision is ultimately yours.\n\t</caption>\n\t<button type=\"button\" class=\"google-sign-in-button\" disabled> Sign in with Google </button>\n\t<small style=\"font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n\t\t<i>Cloud Sync is not yet available</i>\n\t</small>\n</div>\n\n<style>\n\t.cloud-sync {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t}\n\n\tcaption {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t}\n\n\t.google-sign-in-button {\n\t\ttransition: background-color 0.3s, box-shadow 0.3s, transform 0.25s;\n\t\tpadding: 12px 16px 12px 42px;\n\t\tborder: none;\n\t\tborder-radius: 3px;\n\t\tborder: 1px solid rgba(0, 0, 0, 0.25);\n\t\tcolor: #757575;\n\t\tfont-size: 14px;\n\t\tfont-weight: 500;\n\t\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,\n\t\t\t'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n\t\tbackground-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcuNiA5LjJsLS4xLTEuOEg5djMuNGg0LjhDMTMuNiAxMiAxMyAxMyAxMiAxMy42djIuMmgzYTguOCA4LjggMCAwIDAgMi42LTYuNnoiIGZpbGw9IiM0Mjg1RjQiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik05IDE4YzIuNCAwIDQuNS0uOCA2LTIuMmwtMy0yLjJhNS40IDUuNCAwIDAgMS04LTIuOUgxVjEzYTkgOSAwIDAgMCA4IDV6IiBmaWxsPSIjMzRBODUzIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNCAxMC43YTUuNCA1LjQgMCAwIDEgMC0zLjRWNUgxYTkgOSAwIDAgMCAwIDhsMy0yLjN6IiBmaWxsPSIjRkJCQzA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNOSAzLjZjMS4zIDAgMi41LjQgMy40IDEuM0wxNSAyLjNBOSA5IDAgMCAwIDEgNWwzIDIuNGE1LjQgNS40IDAgMCAxIDUtMy43eiIgZmlsbD0iI0VBNDMzNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTAgMGgxOHYxOEgweiIvPjwvZz48L3N2Zz4=');\n\t\tbackground-color: white;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: 12px 11px;\n\t}\n\n\t.google-sign-in-button:hover {\n\t\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, 0.04), 0 2px 4px rgba(0, 0, 0, 0.25);\n\t}\n\n\t.google-sign-in-button:not(:disabled):active {\n\t\tbackground-color: #eeeeee;\n\t\ttransform: scale(0.95);\n\t\toutline: none;\n\t\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, 0.04), 0 2px 4px rgba(0, 0, 0, 0.25), 0 0 0 3px #c8dafc;\n\t}\n\n\t.google-sign-in-button:disabled {\n\t\tfilter: grayscale(100%);\n\t\tbackground-color: #ebebeb;\n\t\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, 0.04), 0 1px 1px rgba(0, 0, 0, 0.25);\n\t\tcursor: not-allowed;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/backup-restore/_sync-local.svelte",
    "content": "<script>\n\timport { onMount, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { fade } from 'svelte/transition';\n\timport { fileData, fileHandle } from '$lib/store/filesystem-store';\n\timport {\n\t\tFSSupported,\n\t\tsaveExport,\n\t\tverifyFSPermission,\n\t\treadFileHandle\n\t} from '$lib/helpers/dataAPI/api-filesystem';\n\timport { exportFileLegacy } from '$lib/helpers/dataAPI/export-import';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport DropImport from './_drop-import.svelte';\n\timport ModalImport from './_modal-import.svelte';\n\timport AutoExport from './_auto-export.svelte';\n\n\tlet showModalImport = false;\n\tlet hasPermission, legacyFileHandler;\n\tlet importData = {};\n\n\tsetContext('setPermission', (val) => (hasPermission = val));\n\tsetContext('handleModalImport', (data = null) => {\n\t\timportData = data;\n\t\tshowModalImport = !!data;\n\t});\n\n\tconst handleImport = async () => {\n\t\tplaySfx();\n\t\tconst inputFile = document.querySelector('.drop-area #importInput');\n\t\treturn inputFile.click();\n\t};\n\n\tconst updatePermission = async () => {\n\t\thasPermission = await verifyFSPermission($fileHandle, { checkOnly: true });\n\t};\n\n\tconst saveLocal = async () => {\n\t\tplaySfx();\n\t\tif (legacyFileHandler) return exportFileLegacy();\n\t\tawait saveExport();\n\t\tawait updatePermission();\n\t};\n\n\tonMount(async () => {\n\t\tawait updatePermission();\n\t\tlegacyFileHandler = !FSSupported();\n\n\t\t// Read Filehandle once\n\t\tif ($fileData.name) return;\n\t\treadFileHandle();\n\t});\n</script>\n\n{#if showModalImport}\n\t<ModalImport {importData} on:cancel={() => (showModalImport = false)} />\n{/if}\n\n<div class=\"local-sync\" in:fade>\n\t<div class=\"local-wrapper\">\n\t\t<div class=\"drop-area\">\n\t\t\t<DropImport {legacyFileHandler} />\n\t\t</div>\n\n\t\t{#if !legacyFileHandler}\n\t\t\t<AutoExport {hasPermission} />\n\t\t{/if}\n\n\t\t<div class=\"button\">\n\t\t\t<ButtonModal icon=\"import\" on:click={handleImport}>{$t('backupRestore.import')}</ButtonModal>\n\t\t\t<ButtonModal icon=\"save\" on:click={saveLocal}>{$t('backupRestore.export')}</ButtonModal>\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.local-sync {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\t.local-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.drop-area {\n\t\tmargin: 1rem 5%;\n\t}\n\n\t.button {\n\t\ttext-align: center;\n\t\tpadding: 1%;\n\t}\n\n\t@keyframes rotate {\n\t\t0% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t100% {\n\t\t\ttransform: rotate(-360deg);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_menu/index.svelte",
    "content": "<script>\n\timport { getContext, onDestroy, setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { editorMode, isMobile, mobileMode } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\t// Components\n\timport Options from './Settings.svelte';\n\timport Updates from './Updates.svelte';\n\timport Sidebar from './_sidebar.svelte';\n\timport ProAccess from './ProAccess.svelte';\n\timport CustomBanner from './CustomBanner.svelte';\n\timport BackupRestore from './BackupRestore.svelte';\n\n\tlet activeContent = $editorMode ? 'customBanner' : 'options';\n\n\tconst selectMenu = (menu) => {\n\t\tif (activeContent === menu) return;\n\t\tactiveContent = menu;\n\t\tplaySfx('shopnav');\n\t};\n\tsetContext('selectMenu', selectMenu);\n\n\tconst handleClose = getContext('handleMenu');\n\n\t// Shortcut\n\thotkeys('esc,m', 'menu', (e) => {\n\t\te.preventDefault();\n\t\thandleClose();\n\t});\n\n\thotkeys.setScope('menu');\n\tonDestroy(() => hotkeys.deleteScope('menu', 'index'));\n</script>\n\n<section transition:fade={{ duration: 200 }}>\n\t<div class=\"head\">\n\t\t<h1>{$t('menu.text')} / {$t(`menu.${activeContent}`)}</h1>\n\t\t<button class=\"close\" on:click={handleClose}>\n\t\t\t<i class=\"gi-close\" />\n\t\t</button>\n\t</div>\n\t<div class=\"container\">\n\t\t<Sidebar {activeContent} />\n\n\t\t<div class=\"content\">\n\t\t\t{#if activeContent === 'options'}\n\t\t\t\t<Options />\n\t\t\t{:else if activeContent === 'updates'}\n\t\t\t\t<Updates />\n\t\t\t{:else if activeContent === 'proAccess'}\n\t\t\t\t<ProAccess />\n\t\t\t{:else if activeContent === 'customBanner'}\n\t\t\t\t<CustomBanner />\n\t\t\t{:else if activeContent === 'backupRestore'}\n\t\t\t\t<BackupRestore />\n\t\t\t{/if}\n\n\t\t\t{#if $isMobile && !$mobileMode}\n\t\t\t\t<div class=\"rotate\">\n\t\t\t\t\t<i class=\"gi-rotate-phone\" />\n\t\t\t\t\t<span>{$t('menu.rotate')} </span>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\theight: var(--screen-height);\n\t\twidth: 100vw;\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackdrop-filter: blur(12px);\n\t\tbackground-color: rgba(0, 0, 0, 0.3);\n\t\tz-index: 100;\n\t}\n\n\tsection :global(h2) {\n\t\tcolor: var(--tertiary-color);\n\t\tmargin-top: 1rem;\n\t\tmargin-bottom: 0.5rem;\n\t}\n\n\tsection :global(.content-container) {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t}\n\t.container :global(a) {\n\t\tcolor: #f29f0f;\n\t}\n\n\t.head {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin: 2% 2% 1%;\n\t\tcolor: var(--tertiary-color);\n\t}\n\t:global(.mobile) .head {\n\t\tmargin: 0.5rem 2%;\n\t}\n\n\t.container {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin: 0 2%;\n\t\theight: calc(100% - 7rem);\n\t}\n\n\t:global(.mobile) .container {\n\t\theight: calc(100% - 5rem);\n\t}\n\n\t.content {\n\t\twidth: 70%;\n\t\tposition: relative;\n\t}\n\n\t.rotate {\n\t\tposition: fixed;\n\t\tbottom: 5%;\n\t\tleft: 5%;\n\t\tcolor: #fff;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t}\n\n\t.gi-rotate-phone {\n\t\tfont-size: 3rem;\n\t\tanimation: rotatePhone 1s infinite alternate;\n\t}\n\n\t:global(.mobile) .close {\n\t\tmargin-right: 4%;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\t:global(main):not(.mobile) .container {\n\t\t\tflex-direction: column;\n\t\t}\n\n\t\t:global(main):not(.mobile) .content {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tmargin-top: 1.5rem;\n\t\t}\n\t}\n\n\t@keyframes rotatePhone {\n\t\t0% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t100% {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_aside.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { fly } from 'svelte/transition';\n\timport { activeVersion, mobileMode, viewportWidth } from '$lib/store/app-stores';\n\timport { isNewOutfitReleased } from '$lib/helpers/outfit';\n\timport { noticeMark } from '$lib/helpers/noticeMark';\n\timport NoticeMark from '$lib/components/NoticeMark.svelte';\n\n\texport let activeShop = 'genesis';\n\texport let isOpen = false;\n\n\t$: resizeable = $viewportWidth < 700 && !$mobileMode;\n\n\t// Notice Marks\n\tconst { patch } = $activeVersion;\n\tconst outfits = getContext('outfits');\n\tconst hasNewOutfits = isNewOutfitReleased(patch);\n\n\t// Shop Menu Handle\n\tconst selectShopMenu = getContext('selectShopMenu');\n\tconst asideToggle = getContext('asideToggle');\n\n\tconst selectShop = (shop) => {\n\t\tactiveShop = shop;\n\t\tselectShopMenu(shop);\n\n\t\t// NoticeMark\n\t\tif (['outfits', 'recomended'].includes(shop) && hasNewOutfits) {\n\t\t\treturn noticeMark.openNotice(`${shop}-${patch}`);\n\t\t}\n\t};\n</script>\n\n{#if isOpen && resizeable}\n\t<div class=\"bg\" on:mousedown|self={asideToggle} transition:fly={{ x: -10, duration: 100 }} />\n{/if}\n\n<aside\n\tclass=\"navbar\"\n\tclass:resizeable\n\tclass:show={isOpen}\n\ttransition:fly={{ x: -100, duration: 200 }}\n>\n\t<div class=\"top\">{$t('shop.text')}</div>\n\t<div class=\"nav-item\">\n\t\t<button\n\t\t\tclass=\"link\"\n\t\t\tclass:active={activeShop === 'recomended'}\n\t\t\ton:click={() => selectShop('recomended')}\n\t\t>\n\t\t\t{#if hasNewOutfits}\n\t\t\t\t<NoticeMark name=\"recomended-{patch}\" />\n\t\t\t{/if}\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-recomended\" />\n\t\t\t\t{$t('shop.recomendedHeading')}\n\t\t\t</span>\n\t\t</button>\n\n\t\t{#if $outfits.length > 0}\n\t\t\t<button\n\t\t\t\tclass=\"link\"\n\t\t\t\tclass:active={activeShop === 'outfits'}\n\t\t\t\ton:click|preventDefault={() => selectShop('outfits')}\n\t\t\t>\n\t\t\t\t{#if hasNewOutfits}\n\t\t\t\t\t<NoticeMark name=\"outfits-{patch}\" />\n\t\t\t\t{/if}\n\t\t\t\t<span><i class=\"gi-outfit\" /> {$t('outfit.heading')}</span>\n\t\t\t</button>\n\t\t{/if}\n\n\t\t<button\n\t\t\tclass=\"link\"\n\t\t\tclass:active={activeShop === 'paimon-bargains'}\n\t\t\ton:click={() => selectShop('paimon-bargains')}\n\t\t>\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-paimon-bargains\" />\n\t\t\t\t{$t('shop.paimonHeading')}\n\t\t\t</span>\n\t\t</button>\n\t\t<button\n\t\t\tclass=\"link\"\n\t\t\tclass:active={activeShop === 'genesis'}\n\t\t\ton:click={() => selectShop('genesis')}\n\t\t>\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-genesis\" />\n\t\t\t\t{$t('shop.crystalTopup')}\n\t\t\t</span>\n\t\t</button>\n\t\t<button\n\t\t\tclass=\"link\"\n\t\t\tclass:active={activeShop === 'donate'}\n\t\t\ton:click={() => selectShop('donate')}\n\t\t>\n\t\t\t<span>\n\t\t\t\t<i class=\"gi-companion\" />\n\t\t\t\t{$t('donate')}\n\t\t\t</span>\n\t\t</button>\n\t</div>\n</aside>\n\n<style>\n\t.navbar {\n\t\twidth: 320px;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tbackground-color: rgba(75, 82, 101, 0.8);\n\t\tborder-right: 1px solid #d2c69c;\n\t\tborder-left: 1px solid #d2c69c;\n\t\tcolor: #d2c69c;\n\t\tmargin-right: 3%;\n\t\tposition: relative;\n\t\tz-index: -1;\n\t}\n\t:global(.mobile) .navbar {\n\t\twidth: 190px;\n\t}\n\n\t.navbar.resizeable {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 200px;\n\t\tbackground-color: rgba(75, 82, 101, 1);\n\t\tz-index: 10;\n\t\ttransform: translateX(-110%);\n\t\ttransition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n\t}\n\t.bg {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: rgba(75, 82, 101, 0.5);\n\t\tz-index: 8;\n\t\tbackdrop-filter: blur(10px);\n\t}\n\n\taside.resizeable.show {\n\t\ttransform: translateX(0);\n\t}\n\n\t.top {\n\t\tfont-size: 1.5rem;\n\t\twidth: 100%;\n\t\theight: 80px;\n\t\tbackground-color: #3b4255;\n\t\tpadding: 0 20px 20px;\n\t\tdisplay: flex;\n\t\talign-items: flex-end;\n\t}\n\t:global(.mobile) .top {\n\t\theight: 50px;\n\t\tfont-size: 1.2rem;\n\t\tpadding: 0 20px 10px;\n\t\tmargin-bottom: -10px;\n\t}\n\n\t.nav-item {\n\t\tmargin-top: 20px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tcolor: #f0e4d4;\n\t}\n\n\t.link {\n\t\tposition: relative;\n\t\ttransition: all 0.2s;\n\t\ttext-decoration: none;\n\t\tcolor: #ededed;\n\t\taspect-ratio: 70/17.5;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding-left: 5%;\n\t\tz-index: 1;\n\t\ttext-align: left;\n\t}\n\t.link i {\n\t\tfont-size: 2rem;\n\t\tdisplay: inline-block;\n\t\tmargin-right: 10px;\n\t}\n\t:global(.mobile) .link i {\n\t\tfont-size: 1.4rem;\n\t}\n\n\t.link.active,\n\t.link:hover {\n\t\tbackground-color: #ede5d8;\n\t\tcolor: #40475a;\n\t\tborder-radius: 0.25rem;\n\t}\n\n\t.link::after,\n\t.link::before,\n\tspan::after,\n\tspan::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tbackground-size: contain;\n\t\tdisplay: block;\n\t}\n\n\t.link.active::before {\n\t\ttop: 50%;\n\t\tright: -13.25%;\n\t\theight: 100%;\n\t\taspect-ratio: 37/30;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tz-index: -1;\n\t\tline-height: 120%;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAC0CAMAAADM1mK5AAAAP1BMVEUAAADn59ft5djs5djn39/r49fs5tjs5djr5Nft5dns5dns5Njs49fs49jr5tns5dns59nt5trq5Nrq5NXs5dgwi7xwAAAAFHRSTlMAIN/vEEC/gGCg0L9QkHCwX48wMGbNuj8AAAQnSURBVHja7d3pcuMgDABgcYPPttH7P+uuN02TZpwGWDuWqL7/nalGIAiXQQghhBBCCCGEEOIRe4ohzZ3W+I/W3qcQnQX2bBy9wQeMHwcFXNlh1PhUlwaGabSTx2w+skqiHTwW8hGYUMFgBZ04pNB5rJYc0HYOrp6nHOA1uHqeahNVM26CZh8MBrcSgBqncUOaVgLtO541mUDV4T9tJnAyuAMzAQnvuJN3OJ7qcDfd4Q1UafymrQ74YXBX5gQHejO4M/MGh3nDF8iNj2d0ufFxjS43PmZV5dj6ogy+jFHwHKPx7vDxr8OX6uAZHvNMEvPPCV9ugh9xLSsHlBeNB+gsvEbAXBy7n8KDOFjVQtNcaFjTRtN8uHzWSNN8TfVMeKAZ7jWUvBdUF4+H8rArh4V4pc9jKU7pOzx59+lrqGyupK+psnmmoIbWlkPyKqcuEXGiO9u8ZSyU8xmtOiIJQ2WvOlEfFc58ZUkMDArLwtb9hjMs2uZKkcjsVY5D26xonT7j7yySYaGIyvm7AckYKtcXAvUx/WysXBwydHYVfqJrfwc4+sPCwlb+DvAcuh5ihHwqa0I3IiFj+aB3FsiPeqUjn87aJzRIiKleYHDkB/WFrd1G9mRXWW6dqrcMAu359Fms3yQPxDZOqlck7KRxhY6K8pRskeApNxp8JDnK48LzvRQbOrxaTyHh8LoNbsOkgdgiWdak2gaDmXRQvMKzzlfdG0Ritrs5qJNiEp7HKjOT8CaNFczEJDyA2GOhfrBc+t5CjRqzmWCBT2n5NMyZiXMMx72Fihqf6IKltvdVslbmEj5mkiO7DLjoYVGZwn6ycGdGUnrIMqwEqB3tNepFqr5+19lWfs6unYvWqqXFCICQ9YcnJMVBLmvwhrGNLQTCiDdSa8u44PCGY7EI31ce89PQ3BYKTPgl0j8Xcdl9rikuisPJgdJjczN+StQPlFVdd3M3hYVD50tQxlwKS5MHPy4zl9jmsZ3Lv654HLrq6064z+SuXK6LUMp9NmkWrVNBMYOoyV9iOOuhXPgstwxqZ4RyNiPnlsSvBg01Bkf6ZuLqmC7XNHjdkLpPnlyRYpW+Hr5pLX13yWssfT3caSt9CjZGai8lwRruj5k8S548qiBPYhRXF35Ns2jNjGHT/Mt2mINl0/wFT0E1/pDXAd1vhBzyiJ48gdj+A5YvfX70A3ZA5o2FCDm4xpcbHc/4IhwmGtyZKYuOWX2pqCqMxj99/JP+TX+w4H7+yXie+Ts/FnLpgA02zN2Wz0Za3xzcNoGa3pfOAm7FUPrG0heVcBMzpV53S/X433p67fLK9Q0Ht3Cp4eAWKum6gkK1z21xx5PXx3VVSYT9xCq2MzukDp/SI6+8faOGsTf4gOnHyDe0L9bFkPr++kHybk4hfjQQmRBCCCGEEEIIIa7+AOtDPh8UDv3LAAAAAElFTkSuQmCC');\n\t}\n\n\t.link.active::after {\n\t\ttop: 50%;\n\t\tright: -1%;\n\t\twidth: 100%;\n\t\taspect-ratio: 708/156;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAACcCAMAAABPyU0CAAAAOVBMVEUAAADTu4vUvI7Uuo3TvI7TvI7UvI7TvozTu43TvI7Su47Pv4/fv43TvI7Tu43SvIzVuo3UvI/TvI7Io+VzAAAAEnRSTlMAQL9goL/eIHDvsBAQkIBQML8hIpUyAAADO0lEQVR42uzd22oCMRSG0dixM2oVZb//wzaOhzoWerjzh7VAxfuPkExibD9ZF7yg97YgYvKImHj/jHho8FJWIiadiIknYuKJmHgiJp6IiSdi4omYeL9G/FYLIublrOqZiAkjYuL9JeJVgxwiJp6IiSdi4omYeCImnoiJJ2LiiZh4IiaeiIknYuKJmHgiJp6IiSdi4omYeCImnoiJJ2LiiZh4Iibet4inrYjJ8hzxfqwaPxrkeI74ULWdGgR5injo3zcNkiwjnsaqdYMoy4jXVaPJBGEWEQ+uDyTQImKTCRI9RrwxmSDRQ8TTaDJBoh7x46quQZyviCerOjL1cg3EZLtHPG0NxGS6RzwYiAl1j9ijCVLdIj4aiEl1i3hns45U14in/mmzjkzXiIeq9waRrhG/WdYRq0dsNkG2Xq/ZBNkuEe/8so5cl4jHqlODTHPEJzsdBJsjHqp2DULNEa9NiQk2Rzy6fo1gPeL5bd8gVO/Xuo5s54iPtjpIdo54U3VokOoc8cHDCZKdI95VHRuk6hH7lw6y9YidnCDbHLHDxCTrEc8viCVi4omYeCImnoiJJ2LiecRGPBETz7Yz8eYDQO6wIpmjmMT7bO8OU1oHwgCKpiCtIdDHy/4XKxOjOFUQ//XCOWu4hJkk34yf4sk7xpMcO0HZiPhmUJQyI/vkOTyFPMdYkXdE/GpnR9gR8W3f1wWijoiX1agoXSNii2LSXDxD3nvEmzfFdJ1THf+tJ8g6I361niDrjHhzpShZI+JzPXFfoOgj4su+r7Z2JI2ID6sZJaI+I77b2hH1GfG2+h+TphGxRzFpI2KPYtJGxKe7UTuSvkS8rb49UzQi/nD3rpii6VjX676/LBAzRXzZ7e3omSIeRwteLSiImSPeVgsKcuaIl3+7NxTUPEQ8jnld/VhMymPE29WymJgR8eTm6zMx3yJ2gwc1IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8n6KeOJSJZ7OZZ+ImB4Rk/drxLMXEfN0Lt9u+hIxMSImT8TkiZg8EZMnYvJETJ6IyftzxPCEREyeiMl7iPgNPx9ffAKGWGIAAAAASUVORK5CYII=');\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\tspan {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 95%;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\tspan :global(i) {\n\t\tline-height: 0;\n\t}\n\n\t.active span::before {\n\t\twidth: 40%;\n\t\theight: 100%;\n\t\tz-index: -1;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tcontent: '\\68';\n\t\tfont-family: 'genshin-icon' !important;\n\t\tfont-style: normal !important;\n\t\tfont-weight: normal !important;\n\t\tfont-variant: normal !important;\n\t\ttext-transform: none !important;\n\t\tspeak: none;\n\t\tline-height: 90%;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tfont-size: 5rem;\n\t\tcolor: #e3d9c4;\n\t}\n\n\t.active span::after {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: -1;\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(237, 229, 216, 1) 60%,\n\t\t\trgba(237, 229, 216, 0) 80%\n\t\t);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_header.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\n\timport {\n\t\tgenesis,\n\t\tprimogem,\n\t\tstardust,\n\t\tstarglitter,\n\t\tmobileMode,\n\t\tviewportWidth,\n\t\tactiveVersion\n\t} from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { isNewOutfitReleased } from '$lib/helpers/outfit';\n\n\timport MyFund from '$lib/components/MyFund.svelte';\n\timport NoticeMark from '$lib/components/NoticeMark.svelte';\n\n\texport let activeShop = 'genesis';\n\n\t$: resizeable = $viewportWidth < 700 && !$mobileMode;\n\n\tconst { patch } = $activeVersion;\n\tconst openedNotices = [`outfits-${patch}`, `recomended-${patch}`];\n\tconst hasNewOutfit = isNewOutfitReleased(patch);\n\n\tconst asideToggle = getContext('asideToggle');\n\n\tconst navigate = getContext('navigate');\n\tconst handleClose = () => {\n\t\tplaySfx('close');\n\t\tnavigate('index');\n\t};\n</script>\n\n<div class=\"item-header\" transition:fly={{ y: -20, duration: 250 }}>\n\t<div class=\"info\" style=\"display: flex; align-items: center\">\n\t\t{#if resizeable}\n\t\t\t<button class=\"toggle\" on:click={asideToggle}>\n\t\t\t\t{#if hasNewOutfit}\n\t\t\t\t\t<NoticeMark name={openedNotices} style=\"transform: translateX(70%) translateY(-150%)\" />\n\t\t\t\t{/if}\n\t\t\t\t<span />\n\t\t\t</button>\n\t\t{/if}\n\t\t{#if activeShop === 'donate'}\n\t\t\t<span> Thank you for every donation you have given to me, I realy appreciate it.</span>\n\t\t{:else}\n\t\t\t<span> {$t('shop.noLimitTime')} </span>\n\t\t{/if}\n\t</div>\n\t<div class=\"fates\">\n\t\t{#if ['genesis', 'outfits', 'recomended'].includes(activeShop)}\n\t\t\t<MyFund type=\"primogem\" plusbutton>\n\t\t\t\t{$primogem}\n\t\t\t</MyFund>\n\t\t\t<MyFund type=\"genesis\">\n\t\t\t\t{$genesis}\n\t\t\t</MyFund>\n\t\t{:else if activeShop === 'paimon-bargains'}\n\t\t\t<MyFund type=\"stardust\">\n\t\t\t\t{$stardust}\n\t\t\t</MyFund>\n\t\t\t<MyFund type=\"starglitter\">\n\t\t\t\t{$starglitter}\n\t\t\t</MyFund>\n\t\t\t<MyFund type=\"primogem\" plusbutton>\n\t\t\t\t{$primogem}\n\t\t\t</MyFund>\n\t\t{/if}\n\n\t\t<button class=\"close\" on:click={handleClose}>\n\t\t\t<i class=\"gi-close\" />\n\t\t</button>\n\t</div>\n</div>\n\n<style>\n\t.toggle {\n\t\tdisplay: inline-block;\n\t\twidth: 40px;\n\t\theight: 40px;\n\t\tborder: 1px solid #d2c69c;\n\t\tmargin-right: 5px;\n\t\tposition: relative;\n\t}\n\n\t.toggle span {\n\t\tdisplay: block;\n\t\twidth: 60%;\n\t\theight: 2px;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\tposition: absolute;\n\t\ttransform: translate(-50%, -50%);\n\t\tbackground-color: #d2c69c;\n\t}\n\t.toggle span::after,\n\t.toggle span::before {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 2px;\n\t\tcontent: '';\n\t\tbackground-color: #d2c69c;\n\t}\n\t.toggle span::before {\n\t\ttop: -300%;\n\t}\n\t.toggle span::after {\n\t\tbottom: -300%;\n\t}\n\n\t.item-header {\n\t\theight: 80px;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t\tcolor: #d2c69c;\n\t\tposition: relative;\n\t}\n\t:global(.mobile) .item-header {\n\t\theight: 40px;\n\t}\n\n\t.fates {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t}\n\t:global(.mobile) .fates {\n\t\tmargin-right: 5%;\n\t}\n\t@media screen and (max-width: 500px) {\n\t\t.item-header {\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\t\t}\n\t\t.info {\n\t\t\twidth: 100%;\n\t\t}\n\t\t.close {\n\t\t\tposition: absolute;\n\t\t\ttop: 20%;\n\t\t\tright: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_modal-balance.svelte",
    "content": "<script>\n\timport { fly } from 'svelte/transition';\n\timport {\n\t\tgenesis,\n\t\tprimogem,\n\t\tstarglitter,\n\t\tstardust,\n\t\tacquaint,\n\t\tintertwined\n\t} from '$lib/store/app-stores';\n\timport MyFund from '$lib/components/MyFund.svelte';\n\n\texport let itemToBuy = '';\n\n\tconst isPaimon = ['intertwined', 'acquaint'].includes(itemToBuy);\n\t$: fates = itemToBuy === 'intertwined' ? $intertwined : $acquaint;\n</script>\n\n<div class=\"funds\" transition:fly={{ y: -15, duration: 300 }}>\n\t<div class=\"fates\">\n\t\t{#if isPaimon}\n\t\t\t<MyFund type=\"stardust\">{$stardust}</MyFund>\n\t\t\t<MyFund type=\"starglitter\">{$starglitter}</MyFund>\n\t\t\t<MyFund type=\"primogem\">{$primogem}</MyFund>\n\t\t\t<MyFund type={itemToBuy}>{fates}</MyFund>\n\t\t{/if}\n\n\t\t{#if !isPaimon}\n\t\t\t<MyFund type=\"primogem\">{$primogem}</MyFund>\n\t\t\t<MyFund type=\"genesis\">{$genesis}</MyFund>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.funds {\n\t\tposition: fixed;\n\t\tz-index: +999;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100vw;\n\t\tpadding: 1.2rem 3%;\n\t\tbackground-color: #1a1b24;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n\t:global(.mobile) .funds {\n\t\tpadding: 0.7rem 3%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_modal-exchange.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport {\n\t\tassets,\n\t\tacquaint,\n\t\tintertwined,\n\t\tgenesis as gs,\n\t\tprimogem as primo,\n\t\tstardust as sd,\n\t\tstarglitter as sg\n\t} from '$lib/store/app-stores';\n\timport { localBalance } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport Range from '$lib/components/Range.svelte';\n\timport ModalBalance from './_modal-balance.svelte';\n\timport CharacterItem from './paimon-bargains/_character-item.svelte';\n\n\texport let data = {};\n\tconst { itemToExchange, currency, price, rarity, isOutfit, isOwned, isCharacter } = data;\n\n\tconst balanceList = {\n\t\tstarglitter: sg,\n\t\tstardust: sd,\n\t\tprimogem: primo,\n\t\tgenesis: gs\n\t};\n\n\tconst openObtained = getContext('openObtained');\n\tconst closeExchangeModal = getContext('closeExchageModal');\n\tconst closeModal = () => {\n\t\tplaySfx('close');\n\t\tcloseExchangeModal();\n\t};\n\tsetContext('closeModal', closeModal);\n\n\t// Initialize Game Currencies\n\tconst fates = itemToExchange === 'intertwined' ? intertwined : acquaint;\n\tconst balance = balanceList[currency];\n\tconst max = ($balance - ($balance % price)) / price;\n\n\t// Set Range Value\n\tlet value = 1;\n\tconst setValue = (val) => (value = val);\n\tsetContext('setValue', setValue);\n\n\t// Buy Button Clicked\n\tconst buyOutfit = getContext('buyOutfit');\n\tconst buyCharacter = getContext('buyCharacter');\n\n\tconst confirmPurchase = () => {\n\t\tplaySfx();\n\t\tcloseExchangeModal();\n\t\tbalance.update((v) => {\n\t\t\tconst newVal = v - value * price;\n\t\t\tlocalBalance.set(currency, newVal);\n\t\t\treturn newVal;\n\t\t});\n\n\t\tif (isOutfit) return buyOutfit();\n\t\tif (isCharacter) return buyCharacter(value);\n\n\t\tfates.update((v) => {\n\t\t\tconst newVal = v + value;\n\t\t\tlocalBalance.set(itemToExchange, newVal);\n\t\t\treturn newVal;\n\t\t});\n\n\t\topenObtained([{ qty: value, item: itemToExchange }]);\n\t};\n\n\t// Get Content Height for layouting\n\tlet contentHeight;\n</script>\n\n<ModalBalance itemToBuy={itemToExchange} />\n<Modal\n\ttitle={$t('shop.purchaseHeading')}\n\ton:cancel={closeModal}\n\ton:confirm={confirmPurchase}\n\tdisabled={isOwned || max < 1}\n>\n\t<span slot=\"confirmtext\"> {$t('shop.purchaseButton')} </span>\n\t<div\n\t\tclass=\"content\"\n\t\tbind:clientHeight={contentHeight}\n\t\tstyle=\"--content-height: {contentHeight}px\"\n\t>\n\t\t<div class=\"item star{rarity}\">\n\t\t\t<div class=\"primo\">\n\t\t\t\t<span class=\"primogem\" class:red={max < 1}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ttype={currency}\n\t\t\t\t\t\theight=\"80%\"\n\t\t\t\t\t\twidth=\"auto\"\n\t\t\t\t\t\tstyle=\"position: absolute; left: 5px;top: 50%; transform: translateY(-50%);\"\n\t\t\t\t\t/>\n\t\t\t\t\t{value * price}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<picture>\n\t\t\t\t<!-- Item Icon -->\n\t\t\t\t{#if isOutfit}\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={$assets[`thumbnail/${itemToExchange}`]}\n\t\t\t\t\t\twidth=\"75%\"\n\t\t\t\t\t\talt={$t(`outfit.item.${itemToExchange}.name`)}\n\t\t\t\t\t/>\n\t\t\t\t{:else if isCharacter}\n\t\t\t\t\t<CharacterItem name={itemToExchange} />\n\t\t\t\t{:else}\n\t\t\t\t\t<Icon type={itemToExchange} width=\"70%\" />\n\t\t\t\t{/if}\n\t\t\t</picture>\n\t\t\t<div class=\"description\">\n\t\t\t\t<div class=\"title\">\n\t\t\t\t\t<!-- Item Name -->\n\t\t\t\t\t{#if isOutfit}\n\t\t\t\t\t\t{$t(`outfit.item.${itemToExchange}.name`)}\n\t\t\t\t\t{:else if isCharacter}\n\t\t\t\t\t\t{$t(`${itemToExchange}.name`)}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{$t(`shop.item.${itemToExchange}`)}\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"star\">\n\t\t\t\t\t{#each Array(rarity) as _, i}\n\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Description -->\n\t\t\t\t{#if isOutfit}\n\t\t\t\t\t<p>{$t(`outfit.item.${itemToExchange}.description`)}</p>\n\t\t\t\t{:else if isCharacter}\n\t\t\t\t\t<p>{$t(`${itemToExchange}.title`)}</p>\n\t\t\t\t{:else}\n\t\t\t\t\t<p>{$t(`shop.description.${itemToExchange}`)}</p>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"slider\">\n\t\t\t<div class=\"rangeNumber\">\n\t\t\t\t<span>{$t('shop.qty')} :</span>\n\t\t\t\t<span style=\"font-size: larger\">{value}</span>\n\t\t\t</div>\n\t\t\t<div class=\"rangeInput\">\n\t\t\t\t<Range\n\t\t\t\t\t{value}\n\t\t\t\t\tmin={max < 1 || isOutfit || isCharacter ? 0 : 1}\n\t\t\t\t\tmax={isOutfit || isCharacter ? 1 : max || 1}\n\t\t\t\t\tdisabled={max < 1 || isOutfit || isCharacter}\n\t\t\t\t/>\n\t\t\t\t{#if isOwned}\n\t\t\t\t\t<div class=\"error red\">{$t('outfit.owned')}</div>\n\t\t\t\t{:else if max < 1}\n\t\t\t\t\t<div class=\"error red\">{$t('shop.insufficient')}</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</Modal>\n\n<style>\n\t.red {\n\t\tcolor: #de2f22 !important;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.item {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\theight: calc(0.45 * var(--content-height));\n\t}\n\t.item.star5 {\n\t\tbackground-image: linear-gradient(-15deg, #e0b466, #817874);\n\t}\n\t.item.star4 {\n\t\tbackground-image: linear-gradient(-15deg, #b988c8, #625a8a);\n\t}\n\t.primo {\n\t\tposition: absolute;\n\t\ttop: 0.2rem;\n\t\tright: 0.2rem;\n\t}\n\t.primogem {\n\t\tpadding: 2px 15px 0 30px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tmax-width: 112px;\n\t\theight: 25px;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tbackground-color: rgba(0, 0, 0, 0.3);\n\t\tborder-radius: 50px;\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\tmargin: 0 8px;\n\t\tfont-size: 0.8rem;\n\t}\n\n\tpicture {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\theight: calc(0.45 * var(--content-height));\n\t\taspect-ratio: 1/1;\n\t}\n\n\t.description {\n\t\tmax-width: calc(100% - (0.45 * var(--content-height)));\n\t\tcolor: #fff;\n\t\tfont-size: 0.7rem;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: flex-start;\n\t\ttext-align: left;\n\t\tpadding: 0.3rem;\n\t}\n\t.title {\n\t\tfont-size: 1.1rem;\n\t\ttext-transform: capitalize;\n\t}\n\t.gi-star {\n\t\tcolor: #eac343;\n\t\tfont-size: 0.9rem;\n\t\tpadding-top: 2px;\n\t}\n\n\t.description p {\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t\tcolor: #fff;\n\t}\n\n\t.col {\n\t\twidth: 100%;\n\t\tflex-basis: 50%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t\tpadding: 0.1em 0 0.7em;\n\t}\n\n\t.col span {\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\tbottom: 0.3rem;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tfont-size: 0.7rem;\n\t}\n\n\t.slider,\n\t.rangeNumber,\n\t.rangeInput {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tfont-size: 1rem;\n\t}\n\n\t:global(.mobile) .rangeInput {\n\t\tfont-size: 0.8rem;\n\t}\n\t.rangeNumber {\n\t\tfont-size: 0.8rem;\n\t\tmargin-bottom: -0.5rem;\n\t}\n\t.slider {\n\t\tpadding: 1% 0;\n\t}\n\t.error {\n\t\tfont-size: 80%;\n\t}\n\n\t@media screen and (max-width: 890px) {\n\t\t.primogem {\n\t\t\theight: 20px;\n\t\t\tmargin: 0 3px;\n\t\t}\n\t}\n\t@media screen and (max-width: 400px) {\n\t\t.primogem {\n\t\t\tmax-width: 80px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_navlink-top-button.svelte",
    "content": "<script>\n\timport { createEventDispatcher } from 'svelte';\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let active = false;\n\texport let name = '';\n\n\tconst dispatch = createEventDispatcher();\n\tconst select = () => {\n\t\tdispatch('click', {\n\t\t\tselected: name\n\t\t});\n\t};\n</script>\n\n<button\n\tclass=\"nav-link-item\"\n\tstyle=\"--bg-active: url('{$assets['shop-nav-bg.webp']}')\"\n\tclass:active\n\ton:click={select}\n>\n\t<div class=\"border\">\n\t\t<slot />\n\t</div>\n</button>\n\n<style>\n\t.nav-link-item {\n\t\tcolor: #d2c69c;\n\t\tposition: relative;\n\t\taspect-ratio: 720/100;\n\t\tpadding: 0 7.5rem;\n\t\theight: 2rem;\n\t}\n\n\t.nav-link-item .border {\n\t\theight: 2.7rem;\n\t\taspect-ratio: 669/122;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: cover;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\ttransform: translateY(-50%);\n\t\tpadding: 0 10%;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.nav-link-item.active .border,\n\t.nav-link-item:hover .border {\n\t\tcolor: var(--text-color);\n\t\tbackground-image: var(--bg-active);\n\t}\n\n\t:global(.mobile) .nav-link-item {\n\t\theight: 1.7rem;\n\t\tfont-size: 99%;\n\t\tpadding: 0 6.4rem;\n\t}\n\n\t:global(.mobile) .nav-link-item .border {\n\t\theight: 2.3rem;\n\t\tpadding: 0 10%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_navlink-top.svelte",
    "content": "<div class=\"nav-item-list\">\n\t<slot />\n</div>\n\n<style>\n\tdiv {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: center;\n\t\tborder-top: 1px solid #d2c69c;\n\t\tborder-bottom: 1px solid #d2c69c;\n\t\twidth: fit-content;\n\t\tmargin-top: 1%;\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(0, 0, 0, 0),\n\t\t\trgba(0, 0, 0, 0.5),\n\t\t\trgba(0, 0, 0, 0.5),\n\t\t\trgba(0, 0, 0, 0.5),\n\t\t\trgba(0, 0, 0, 0)\n\t\t);\n\t}\n\t:global(.mobile) div {\n\t\tflex-wrap: nowrap;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_shop-group-item.svelte",
    "content": "<div class=\"column\">\n\t<slot />\n</div>\n\n<style>\n\t.column {\n\t\tflex-basis: var(--column-basis);\n\t\twidth: var(--column-basis);\n\t\taspect-ratio: 1/1;\n\t\toverflow: auto;\n\t\tpadding: calc(0.06 * var(--column-width));\n\t\tdisplay: block;\n\t}\n\n\t@media screen and (min-width: 1440px) {\n\t\t.column {\n\t\t\t--column-width: 200px;\n\t\t\tflex-basis: unset;\n\t\t\twidth: 200px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 890px) {\n\t\t.column {\n\t\t\tmin-width: 150px;\n\t\t\tmin-height: 150px;\n\t\t}\n\n\t\t:global(.mobile) .column {\n\t\t\tmin-width: 130px;\n\t\t\tmin-height: 130px;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.column {\n\t\t\tmin-width: 100px;\n\t\t\tmin-height: 100px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/_shop-group.svelte",
    "content": "<script>\n\timport { mobileMode } from '$lib/store/app-stores';\n\n\tlet containerWidth;\n\tlet itemBasis = 100 / 2;\n\tlet itemWidth;\n\n\tconst setitemBasis = (cwidth, mbl) => {\n\t\tif (mbl) {\n\t\t\titemBasis = 100 / 4;\n\t\t\titemWidth = cwidth / 4;\n\t\t\treturn;\n\t\t}\n\n\t\tif (cwidth >= 800) {\n\t\t\titemBasis = 100 / 5;\n\t\t\titemWidth = cwidth / 5;\n\t\t\treturn;\n\t\t}\n\t\tif (cwidth >= 650) {\n\t\t\titemBasis = 100 / 4;\n\t\t\titemWidth = cwidth / 4;\n\t\t\treturn;\n\t\t}\n\t\tif (cwidth >= 500) {\n\t\t\titemBasis = 100 / 3;\n\t\t\titemWidth = cwidth / 3;\n\t\t\treturn;\n\t\t}\n\n\t\titemBasis = 100 / 2;\n\t\titemWidth = cwidth / 2;\n\t\treturn;\n\t};\n\t$: setitemBasis(containerWidth, $mobileMode);\n</script>\n\n<div class=\"item-list\" bind:clientWidth={containerWidth}>\n\t<div class=\"list-body\" style=\"--column-basis:{itemBasis}%; --column-width:{itemWidth}px\">\n\t\t<slot />\n\t</div>\n</div>\n\n<style>\n\t/* List */\n\t.item-list {\n\t\theight: calc(var(--content-height) * 0.78);\n\t\tmargin: 15px 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: hidden;\n\t}\n\t:global(.mobile) .item-list {\n\t\tmargin: 5px 0 0;\n\t\tpadding: 0;\n\t}\n\n\t.list-body {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.list-body {\n\t\t\tjustify-content: space-between;\n\t\t\tpadding: 0 2.3%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/character-outfit/CharacterOutfits.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\n\timport { assets, activeVersion } from '$lib/store/app-stores';\n\timport { owneditem } from '$lib/helpers/dataAPI/api-localstore';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getName } from '$lib/helpers/nameText';\n\n\t// Components\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalConfirm from './_modal-confirm.svelte';\n\timport ShopGroup from '../_shop-group.svelte';\n\timport ShopGroupItem from '../_shop-group-item.svelte';\n\n\tconst outfits = getContext('outfits');\n\t$: outfitList = [...$outfits].reverse().map((outfit) => {\n\t\tconst { release, promoPrice, price } = outfit;\n\t\tconst promo = promoPrice && promoPrice !== price;\n\t\toutfit.isPromo = $activeVersion.patch === `${release}` && promo;\n\t\treturn outfit;\n\t});\n\n\tlet showConfirmModal = false;\n\tlet outfitToBuy = {};\n\n\tconst cancelConfirm = () => {\n\t\tshowConfirmModal = false;\n\t\tplaySfx('close');\n\t};\n\tsetContext('cancelConfirm', cancelConfirm);\n\n\tconst openExchangeModal = getContext('openExchangeModal');\n\tconst showDetailModal = () => {\n\t\tplaySfx();\n\t\tshowConfirmModal = false;\n\n\t\tconst { rarity, promoPrice, price, name, isPromo, isOwned } = outfitToBuy;\n\n\t\tconst exchangeData = {\n\t\t\trarity,\n\t\t\tisOwned,\n\t\t\tisOutfit: true,\n\t\t\tprice: isPromo ? promoPrice : price,\n\t\t\tcurrency: 'genesis',\n\t\t\titemToExchange: name\n\t\t};\n\t\topenExchangeModal(exchangeData);\n\t};\n\tsetContext('showDetailModal', showDetailModal);\n\n\tconst prepareToBuy = (data) => {\n\t\toutfitToBuy = data;\n\t\tconst { itemID } = getCharDetails(data.characterName);\n\t\tconst { qty } = owneditem.get(itemID);\n\t\tif (qty > 0 || outfitToBuy.isOwned) return showDetailModal();\n\n\t\tplaySfx();\n\t\tshowConfirmModal = true;\n\t\treturn;\n\t};\n</script>\n\n{#if showConfirmModal}\n\t<ModalConfirm />\n{/if}\n\n<ShopGroup>\n\t{#each outfitList as outfitData, i}\n\t\t{@const { name, price, promoPrice, isPromo, isOwned, rarity } = outfitData}\n\t\t<ShopGroupItem>\n\t\t\t<button\n\t\t\t\tclass:discount={isPromo}\n\t\t\t\ton:click={() => prepareToBuy(outfitData)}\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 5000) }}\n\t\t\t>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t{#if isPromo}\n\t\t\t\t\t\t<div class=\"discount-percentage\">-20%</div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"thumbnail\"\n\t\t\t\t\t\tstyle=\"background-image: url('{$assets[`${rarity}star-bg.webp`]}');\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<picture class=\"star{rarity}\">\n\t\t\t\t\t\t\t<img src={$assets[`thumbnail/${name}`]} alt={getName(name)} />\n\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t<caption>\n\t\t\t\t\t\t\t<span class=\"name\">{$t(`outfit.item.${name}.name`)}</span>\n\t\t\t\t\t\t\t{#if isOwned}\n\t\t\t\t\t\t\t\t<span class=\"owned\">{$t('outfit.owned')}</span>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<span class=\"desc\">{$t('shop.purchaseUpto')}</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</caption>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"price\">\n\t\t\t\t\t\t<Icon type=\"genesis\" width=\"15%\" />\n\t\t\t\t\t\t{#if isPromo}\n\t\t\t\t\t\t\t<del class=\"real-price\">{price}</del>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t<span style=\"margin-left: 5px\">{isPromo ? promoPrice : price}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</ShopGroupItem>\n\t{/each}\n</ShopGroup>\n\n<style>\n\tbutton {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\ttransition: all 0.2s;\n\t\tposition: relative;\n\t}\n\tbutton::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 0.8rem;\n\t\tborder: 0.3rem solid #eac343;\n\t\topacity: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\tbutton:hover::after {\n\t\topacity: 1;\n\t}\n\tbutton:active {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.discount-percentage {\n\t\tcolor: #fff;\n\t\tbackground-color: #88ba59;\n\t\tposition: absolute;\n\t\ttop: -0.4rem;\n\t\tleft: -0.4rem;\n\t\tz-index: +1;\n\t\tpadding: 0.2rem 0.7rem;\n\t\tfont-size: 0.8rem;\n\t\tborder-bottom-left-radius: 1rem;\n\t\tborder-top-left-radius: 1rem;\n\t\tborder-bottom-right-radius: 2rem;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tborder-radius: 0.5rem;\n\t\toverflow: hidden;\n\t\ttext-align: center;\n\t\tbackground-color: #596982;\n\t}\n\t.thumbnail {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tbackground-size: cover;\n\t}\n\n\tpicture::after {\n\t\twidth: 100%;\n\t\theight: 50%;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t}\n\tpicture.star4::after {\n\t\tbackground-image: linear-gradient(to top, rgba(174, 148, 211, 0.8) 40%, rgba(174, 148, 211, 0));\n\t}\n\tpicture.star5::after {\n\t\tbackground-image: linear-gradient(to top, rgba(224, 180, 102, 0.8) 40%, rgba(224, 180, 102, 0));\n\t}\n\n\tpicture {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n\timg {\n\t\twidth: 58%;\n\t\theight: auto;\n\t}\n\n\tcaption {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 50%;\n\t\twidth: 100%;\n\t\ttransform: translateX(-50%);\n\t\tz-index: +2;\n\t}\n\tcaption span {\n\t\tdisplay: block;\n\t}\n\n\t.name {\n\t\tcolor: #fdf5f5;\n\t\tfont-size: 1.1rem;\n\t\tline-height: 1.2rem;\n\t\t-webkit-text-stroke: 0.02rem #675c31;\n\t\ttext-shadow: 0px 0px 10px rgba(255, 255, 255, 0.6);\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.name {\n\t\t\tfont-size: 1.3rem;\n\t\t}\n\t}\n\n\t.desc,\n\t.owned {\n\t\tcolor: #e8dfbb;\n\t\tfont-size: 0.8em;\n\t\tpadding-bottom: 0.2rem;\n\t}\n\n\t.owned {\n\t\tbackground-color: #e86b69;\n\t\tpadding-top: 0.2rem;\n\t}\n\n\t.price {\n\t\twidth: 100%;\n\t\theight: 20%;\n\t\tcolor: #fff;\n\t\t-webkit-text-stroke: 0.02rem black;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t}\n\n\t.discount .price {\n\t\tbackground-color: #88ba59;\n\t}\n\n\t.real-price {\n\t\tcolor: #66892b;\n\t\tfont-size: 0.7rem;\n\t\tposition: absolute;\n\t\ttop: 0.1rem;\n\t\tright: 0.5rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/character-outfit/_modal-confirm.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\n\tconst cancelModal = getContext('cancelConfirm');\n\tconst showDetailModal = getContext('showDetailModal');\n</script>\n\n<ModalTpl title={$t('shop.purchaseConfirm')} on:cancel={cancelModal} on:confirm={showDetailModal}>\n\t<div class=\"confirmation\">\n\t\t<p>\n\t\t\t{$t('outfit.purchasePrompt')} <br />\n\t\t\t{$t('outfit.promptInfo')}\n\t\t</p>\n\t</div>\n</ModalTpl>\n\n<style>\n\t.confirmation {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/donate/Donate.svelte",
    "content": "<script>\n\timport { fade, fly } from 'svelte/transition';\n\timport { assets } from '$lib/store/app-stores';\n\timport { timeAgo } from '$lib/helpers/timeago';\n\timport { supporterList } from '$lib/helpers/donation';\n\timport { copy } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport ShopGroup from '../_shop-group.svelte';\n\timport ShopGroupItem from '../_shop-group-item.svelte';\n\n\tlet showCryptoModal = false;\n\tlet showToast = false;\n\n\tconst dimiss = () => {\n\t\tplaySfx('close');\n\t\tshowCryptoModal = false;\n\t};\n\tconst openModal = () => {\n\t\tplaySfx();\n\t\tshowCryptoModal = true;\n\t};\n\n\tconst copyHandle = (text) => {\n\t\tplaySfx();\n\t\tcopy(text);\n\t\tshowToast = true;\n\t\tconst t = setTimeout(() => {\n\t\t\tshowToast = false;\n\t\t\tclearTimeout(t);\n\t\t}, 2000);\n\t};\n</script>\n\n<!-- Crypto Donate -->\n{#if showCryptoModal}\n\t<Modal title=\"Support With Crypto\" on:confirm={dimiss} on:cancel={dimiss}>\n\t\t<div class=\"modal-donate\">\n\t\t\t<div class=\"pop-item\">\n\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t<img src={$assets['donate-ethereum.png']} alt=\"Ethereum\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"address\">\n\t\t\t\t\t<span> Ethereum ( erc20 ) </span>\n\t\t\t\t\t<input type=\"text\" value=\"0x4320025BAD621c03b906A84c531B10480A465184\" disabled />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"copy\">\n\t\t\t\t\t<button on:click={() => copyHandle('0x4320025BAD621c03b906A84c531B10480A465184')}>\n\t\t\t\t\t\t<i class=\"gi-copy\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"pop-item\">\n\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t<img src={$assets['donate-bnb.png']} alt=\"Binance Coin\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"address\">\n\t\t\t\t\t<span> Binance Coin ( bep20 )</span>\n\t\t\t\t\t<input type=\"text\" value=\"0x4320025BAD621c03b906A84c531B10480A465184\" disabled />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"copy\">\n\t\t\t\t\t<button on:click={() => copyHandle('0x4320025BAD621c03b906A84c531B10480A465184')}>\n\t\t\t\t\t\t<i class=\"gi-copy\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"pop-item\">\n\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t<img src={$assets['donate-solana.png']} alt=\"Solana\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"address\">\n\t\t\t\t\t<span> Solana </span>\n\t\t\t\t\t<input type=\"text\" value=\"4nFhLoPqpx71xPqgN2zhvoWtmgogzoDkEBzNKqjnpm2a\" disabled />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"copy\">\n\t\t\t\t\t<button on:click={() => copyHandle('4nFhLoPqpx71xPqgN2zhvoWtmgogzoDkEBzNKqjnpm2a')}>\n\t\t\t\t\t\t<i class=\"gi-copy\" />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{#if showToast}\n\t\t\t\t<div class=\"toast\" transition:fly={{ y: 10 }}>Address Copied</div>\n\t\t\t{/if}\n\t\t</div>\n\t</Modal>\n{/if}\n\n<!-- Crypto Donate -->\n<div class=\"container\">\n\t<ShopGroup>\n\t\t<ShopGroupItem>\n\t\t\t<a\n\t\t\t\tclass=\"content kofi\"\n\t\t\t\thref=\"https://ko-fi.com/mantan21\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(0 * 5000) }}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle=\"display: flex;justify-content: center; align-items: center; width: 100%; height: 100%\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"donate-icon\">\n\t\t\t\t\t\t<img src={$assets['donate-kofi.png']} alt=\"Ko-fi Icon\" />\n\t\t\t\t\t\t<img src={$assets['paypal.png']} alt=\"paypal\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<span> Support me on Ko-fi </span>\n\t\t\t</a>\n\t\t</ShopGroupItem>\n\n\t\t<!-- Donate By Trakteer -->\n\t\t<ShopGroupItem>\n\t\t\t<a\n\t\t\t\tclass=\"content trakteer\"\n\t\t\t\thref=\"https://trakteer.id/mantan21\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(1 * 5000) }}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle=\"display: flex;justify-content: center; align-items: center; width: 100%; height: 100%\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"donate-icon\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tstyle=\"height: 2.2rem;\"\n\t\t\t\t\t\t\tsrc={$assets[`donate-trakteer.png`]}\n\t\t\t\t\t\t\talt=\"Indonesian Payment\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<img src={$assets[`donate-card.png`]} alt=\"Indonesian Payment\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<span> Support me on Trakteer </span>\n\t\t\t</a>\n\t\t</ShopGroupItem>\n\n\t\t<!-- Donate By Crypto -->\n\t\t<ShopGroupItem>\n\t\t\t<button\n\t\t\t\tclass=\"content crypto\"\n\t\t\t\ton:click={openModal}\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(2 * 5000) }}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle=\"display: flex;justify-content: center; align-items: center; width: 100%; height: 100%\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"donate-icon\">\n\t\t\t\t\t\t{#each ['btc', 'ethereum', 'bnb', 'solana'] as im}\n\t\t\t\t\t\t\t<img src={$assets[`donate-${im}.png`]} alt=\"{im} icon\" />\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<span> Support me with Crypto </span>\n\t\t\t</button>\n\t\t</ShopGroupItem>\n\t</ShopGroup>\n\n\t<!-- List Of Supporters -->\n\t<div class=\"recent\">\n\t\t{#await supporterList() then listOfSupporters}\n\t\t\t{#if listOfSupporters.length > 0}\n\t\t\t\t{#each listOfSupporters as { name, message, amount, date, type }}\n\t\t\t\t\t{@const platform =\n\t\t\t\t\t\ttype === 'tip' ? 'trakteer' : type === 'donation' ? 'saweria' : 'ko-fi'}\n\t\t\t\t\t<div class=\"donation-item {platform}\" in:fade={{ duration: 300 }}>\n\t\t\t\t\t\t<div class=\"supporter\">\n\t\t\t\t\t\t\t<div class=\"info\">\n\t\t\t\t\t\t\t\t<div class=\"name\">New support from <span> {name} </span></div>\n\t\t\t\t\t\t\t\t<span class=\"message\">{message ? `\"${message}\"` : ''}</span>\n\t\t\t\t\t\t\t\t<span class=\"platform\">✧ &nbsp; via {platform}</span>\n\t\t\t\t\t\t\t\t<span class=\"time\"> ✧ &nbsp; {timeAgo(date)}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"amount\">\n\t\t\t\t\t\t\t\t<span>{amount}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{/if}\n\t\t{/await}\n\t</div>\n</div>\n\n<style>\n\t/* Donate */\n\t.toast {\n\t\tposition: fixed;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tdisplay: inline-block;\n\t\tpadding: 0.5rem 1rem;\n\t\tborder-radius: 0.5rem;\n\t\tbackground-color: rgba(173, 128, 65, 0.8);\n\t\tcolor: #fff;\n\t\tfont-size: 0.75rem;\n\t}\n\n\t.modal-donate {\n\t\tpadding: 3%;\n\t}\n\t.modal-donate .pop-item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t}\n\n\t.modal-donate .icon,\n\t.modal-donate .copy {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tmargin: 0.2rem;\n\t}\n\t.modal-donate img {\n\t\theight: 2rem;\n\t\tmargin: 0;\n\t}\n\t.address {\n\t\tpadding: 0 2%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t}\n\t.address span {\n\t\tfont-size: 0.8rem;\n\t}\n\n\t.modal-donate button {\n\t\tbackground-color: #383b40;\n\t\tcolor: #fff;\n\t\ttransition: all 0.2s;\n\t\tborder-radius: 100%;\n\t\twidth: 2.5rem;\n\t\theight: 2.5rem;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 1rem;\n\t\tmargin: 2%;\n\t\ttransform: translateY(20%);\n\t}\n\n\t.modal-donate button:hover {\n\t\tbackground-color: #ccc;\n\t\tcolor: #000;\n\t}\n\n\t.content {\n\t\tbackground-color: rgba(255, 255, 255, 0.8);\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tborder-radius: 1rem;\n\t\tpadding: 1rem;\n\t\ttext-align: center;\n\t\ttransition: transform 0.1s;\n\t}\n\n\t.content:active {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.donate-icon {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\timg {\n\t\theight: 1.5rem;\n\t\tmargin: 0.2rem 0.5rem;\n\t}\n\tspan {\n\t\tpadding: 0.5rem;\n\t}\n\n\t.container {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\theight: calc(100vh - 130px);\n\t}\n\t:global(.mobile) .container {\n\t\theight: calc(100vh - 60px);\n\t}\n\n\t.recent {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\toverflow-y: auto;\n\t\tmax-height: 60%;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.donation-item {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tpadding: 0.5%;\n\t}\n\n\t.donation-item .supporter {\n\t\tbackground-color: rgba(255, 255, 255, 0.8);\n\t\twidth: 100%;\n\t\theight: 100px;\n\t\tpadding: 2%;\n\t\tborder-radius: 0.5rem;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t}\n\n\t@media screen and (max-width: 640px) {\n\t\t.recent {\n\t\t\tmax-height: 50%;\n\t\t}\n\n\t\t.donation-item {\n\t\t\twidth: 100%;\n\t\t}\n\t\t.supporter {\n\t\t\theight: unset !important;\n\t\t}\n\t\t.info {\n\t\t\toverflow-y: unset !important;\n\t\t}\n\t}\n\n\t:global(.mobile) .recent {\n\t\tmax-height: 50%;\n\t}\n\t:global(.mobile) .supporter {\n\t\theight: 5rem;\n\t}\n\t:global(.mobile) .info {\n\t\toverflow-y: auto;\n\t}\n\n\t.info {\n\t\tfont-size: smaller;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t}\n\n\t.info::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.info .name {\n\t\tmargin-left: 0.5rem;\n\t}\n\t.info .name span {\n\t\tfont-family: var(--gi-global-font);\n\t\tfont-size: larger;\n\t}\n\n\t.message {\n\t\tdisplay: block;\n\t\tfont-weight: 600;\n\t\tpadding: 0.4rem 1rem;\n\t}\n\n\t.platform {\n\t\ttext-transform: capitalize;\n\t\tmargin-right: 0.5rem;\n\t}\n\n\t.ko-fi .platform {\n\t\tcolor: #127399;\n\t}\n\t.sociabuzz .platform {\n\t\tcolor: #4f8d28;\n\t}\n\t.saweria .platform {\n\t\tcolor: rgb(213, 142, 18);\n\t}\n\t.trakteer .platform {\n\t\tcolor: #be1e2d;\n\t}\n\t.patreon .platform {\n\t\tcolor: #f96854;\n\t}\n\n\t.time {\n\t\tcolor: #575859;\n\t}\n\n\t.amount span {\n\t\twidth: fit-content;\n\t\tfont-size: 0.7rem;\n\t\twhite-space: nowrap;\n\t\tpadding: 0.4rem 0.6rem;\n\t\tborder-radius: 1rem;\n\t\tcolor: #fff;\n\t\tfont-family: var(--gi-global-font);\n\t}\n\n\t.donation-item.ko-fi .amount span {\n\t\tbackground-color: #24ade1;\n\t}\n\t.donation-item.saweria .amount span {\n\t\tbackground-color: #e2a12d;\n\t}\n\t.donation-item.sociabuzz .amount span {\n\t\tbackground-image: linear-gradient(45deg, #3fa9f5 30%, #78c845);\n\t}\n\t.donation-item.trakteer .amount span {\n\t\tbackground-color: #be1e2d;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/genesis-topup/GenesisTopup.svelte",
    "content": "<script>\n\timport { setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\n\timport { genesisBonus } from '$lib/data/pricelist.json';\n\timport { activeVersion, assets, pricelist } from '$lib/store/app-stores';\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ShopGroup from '../_shop-group.svelte';\n\timport ShopGroupItem from '../_shop-group-item.svelte';\n\timport ModalTopup from './_modal-topup.svelte';\n\timport CheckBox from '$lib/components/CheckBox.svelte';\n\n\tconst checkCookie = cookie.get('initialTopup');\n\tlet initialTopup = checkCookie === undefined ? true : checkCookie;\n\tconst initialCheck = ({ detail }) => (initialTopup = !!detail?.checked);\n\t$: cookie.set('initialTopup', initialTopup);\n\n\tconst { versionReset, topupBonus } = genesisBonus;\n\tconst localTopup = localConfig.get('topupBonus') || {};\n\tconst filterVersion = (arr) => {\n\t\tconst { patch } = $activeVersion;\n\t\treturn arr.filter((v) => v <= parseFloat(patch)).sort((a, b) => b - a)[0] || 0;\n\t};\n\tconst defaultVersionBase = filterVersion(versionReset);\n\tconst localVersionBase = filterVersion(Object.keys(localTopup));\n\tconst versionBase = defaultVersionBase > localVersionBase ? defaultVersionBase : localVersionBase;\n\n\tconst genesisList = [];\n\tconst genesis = $pricelist.genesis;\n\tObject.keys(genesis).forEach((key) => {\n\t\tconst list = Array.isArray(localTopup[versionBase]) ? localTopup[versionBase] : [];\n\t\tconst doubleBonus = !list.includes(parseFloat(key));\n\t\tconst item = { qty: parseInt(key), price: genesis[key], doubleBonus };\n\t\tgenesisList.push(item);\n\t});\n\n\tlet data = {};\n\tlet showPaymentModal = false;\n\tconst selectGenesis = ({ qty, isDoubleBonus, price }) => {\n\t\tplaySfx('exchange');\n\t\tshowPaymentModal = true;\n\t\tconst isDouble = isDoubleBonus && initialTopup;\n\t\tdata = { qty, bonus: isDouble ? qty : topupBonus[qty] || 0, price };\n\t};\n\n\tconst closePaymentModal = () => {\n\t\tplaySfx('close');\n\t\tshowPaymentModal = false;\n\t};\n\tsetContext('closeModal', closePaymentModal);\n\n\tconst confirmBuy = ({ qty, bonus }) => {\n\t\tshowPaymentModal = false;\n\t\tplaySfx();\n\n\t\tif (qty === bonus) {\n\t\t\tlocalTopup[versionBase] = localTopup[versionBase] || [];\n\t\t\tif (!localTopup[versionBase].includes(qty)) localTopup[versionBase].push(qty);\n\t\t\tlocalConfig.set('topupBonus', localTopup);\n\t\t\tconst i = genesisList.findIndex((v) => v.qty === qty);\n\t\t\tgenesisList[i].doubleBonus = false;\n\t\t}\n\t};\n\tsetContext('confirmBuy', confirmBuy);\n</script>\n\n{#if showPaymentModal}\n\t<ModalTopup {data} />\n{/if}\n\n<ShopGroup>\n\t{#each genesisList as { qty, price, doubleBonus }, i}\n\t\t<ShopGroupItem>\n\t\t\t<button\n\t\t\t\ton:click={() => selectGenesis({ qty, price, isDoubleBonus: doubleBonus })}\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 5000) }}\n\t\t\t>\n\t\t\t\t{#if doubleBonus && initialTopup}\n\t\t\t\t\t<div class=\"bonus firstBonus\" style=\"background-image: url({$assets['bg-bonus.webp']})\">\n\t\t\t\t\t\t<div class=\"wrap\">\n\t\t\t\t\t\t\t<Icon type=\"genesis\" style=\"position: absolute; top:-50%;\" width=\"35%\" />\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t{#if $t('shop.doubleBonus') !== \"shop.doubleBonus\"}\n\t\t\t\t\t\t\t\t\t<span>{$t('shop.doubleBonus')}!</span>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<span>{$t('shop.bonus')}!</span>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"amount\">+{qty}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{:else if qty !== 60}\n\t\t\t\t\t<div class=\"topup-bonus bonus\">\n\t\t\t\t\t\t<div class=\"wrap\">\n\t\t\t\t\t\t\t<span>{$t('shop.bonus')}</span>\n\t\t\t\t\t\t\t<Icon type=\"genesis\" />\n\t\t\t\t\t\t\t<span>{topupBonus[qty]}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\n\t\t\t\t<div class=\"content\" style=\"background-image: url({$assets['genesis-bg.webp']})\">\n\t\t\t\t\t<div class=\"picture\">\n\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t<img src={$assets[`genesis-${qty}.webp`]} alt=\"Genesis Crystal {qty}\" />\n\t\t\t\t\t\t</picture>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"caption\">\n\t\t\t\t\t\t<div class=\"name\">{qty} {$t('shop.item.genesis')}</div>\n\t\t\t\t\t\t<div class=\"price\">{price}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</ShopGroupItem>\n\t{/each}\n</ShopGroup>\n\n<CheckBox checked={initialTopup} on:change={initialCheck}>\n\t<span style=\"color: var(--tertiary-color);\">\n\t\t{$t('shop.initialBonus')}\n\t</span>\n</CheckBox>\n\n<style>\n\tbutton {\n\t\ttransition: all 0.2s;\n\t\ttransform: scale(1);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\tbutton:not(.nav-link-item):active {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.firstBonus {\n\t\tleft: -5%;\n\t\ttop: -5%;\n\t\twidth: 35%;\n\t\taspect-ratio: 1/1;\n\t\tbackground-size: cover;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n\n\t.bonus {\n\t\tcolor: #fff6d2;\n\t\ttext-shadow: 0.05em 0.05em 0.2em rgba(0, 0, 0, 0.5);\n\t\tfont-size: 80%;\n\t\tfilter: drop-shadow(0.1rem 0.1rem 0.2rem rgba(0, 0, 0, 0.5));\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t}\n\n\t.wrap {\n\t\twidth: 100%;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n\n\t.firstBonus .wrap {\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n\n\t.firstBonus .amount {\n\t\tcolor: #fefdf2;\n\t\tfont-size: initial;\n\t}\n\n\t:global(.mobile) .amount {\n\t\tfont-size: 140%;\n\t}\n\n\t.topup-bonus {\n\t\tbackground-color: #fb9095;\n\t\ttop: 0;\n\t\tleft: -3%;\n\t\tpadding: 0.15rem 1rem 0.15rem 0.7rem;\n\t\tborder-bottom-left-radius: 1rem;\n\t\tborder-top-left-radius: 1rem;\n\t\tborder-bottom-right-radius: 2rem;\n\t}\n\t:global(.mobile) .topup-bonus {\n\t\tpadding: 0 10% 0 8%;\n\t}\n\t.topup-bonus .wrap {\n\t\talign-items: center;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-start;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\toverflow: hidden;\n\t\ttext-align: center;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttransition: all 0.2s;\n\t\tposition: relative;\n\t}\n\n\t.content:hover {\n\t\tfilter: drop-shadow(-0.3rem 0.2rem #eac343) drop-shadow(0.3rem 0.2rem #eac343)\n\t\t\tdrop-shadow(-0rem -0.3rem #eac343);\n\t}\n\n\tpicture {\n\t\tdisplay: block;\n\t\tmargin-top: -10%;\n\t}\n\t.picture {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 70%;\n\t\toverflow-y: hidden;\n\t\tmargin-top: 5%;\n\t}\n\n\timg {\n\t\twidth: 90%;\n\t}\n\n\t.caption {\n\t\tposition: absolute;\n\t\tbottom: 5%;\n\t\tdisplay: block;\n\t\twidth: 95%;\n\t}\n\n\t.name {\n\t\twidth: 100%;\n\t\tpadding: 15% 4.5% 2%;\n\t\tdisplay: block;\n\t\tfont-size: calc(8 / 100 * var(--column-width));\n\t\tbackground-image: linear-gradient(to top, rgba(241, 239, 222, 1) 55%, rgba(241, 239, 222, 0));\n\t}\n\n\t.price {\n\t\tdisplay: block;\n\t\theight: calc(16 / 100 * var(--column-width));\n\t\tline-height: calc(16 / 100 * var(--column-width));\n\t\tfont-size: calc(9 / 100 * var(--column-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/genesis-topup/_modal-topup.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { assets, genesis, primogem } from '$lib/store/app-stores';\n\timport { localBalance } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalBalance from '../_modal-balance.svelte';\n\n\texport let data = { qty: 0, bonus: 0, price: '0' };\n\n\tconst closeModal = getContext('closeModal');\n\tconst confirmBuy = getContext('confirmBuy');\n\tconst openObtained = getContext('openObtained');\n\n\tlet autoConvert = cookie.get('autoconvert-genesis');\n\tlet activeMethod = cookie.get('payment-method') || 'wakaranai';\n\t$: cookie.set('autoconvert-genesis', autoConvert);\n\n\tconst selectMethod = (method) => {\n\t\tif (method === activeMethod) return;\n\t\tplaySfx();\n\t\tactiveMethod = method;\n\t\tcookie.set('payment-method', method);\n\t};\n\n\tconst convertBuy = () => {\n\t\tprimogem.update((v) => {\n\t\t\tconst afterUpdate = v + data.qty + data.bonus;\n\t\t\tlocalBalance.set('primogem', afterUpdate);\n\t\t\treturn afterUpdate;\n\t\t});\n\t};\n\n\tconst handleBuy = () => {\n\t\tconst item = autoConvert ? 'primogem' : 'genesis';\n\t\tconfirmBuy({ qty: data.qty, bonus: data.bonus, item });\n\t\topenObtained([{ qty: data.qty + data.bonus, item }]);\n\n\t\tif (autoConvert) return convertBuy();\n\t\tgenesis.update((v) => {\n\t\t\tconst afterUpdate = v + data.qty + data.bonus;\n\t\t\tlocalBalance.set('genesis', afterUpdate);\n\t\t\treturn afterUpdate;\n\t\t});\n\t};\n</script>\n\n<ModalBalance itemToBuy=\"genesis\" />\n<Modal on:cancel={closeModal} blank>\n\t<div class=\"genesis-modal\">\n\t\t<div class=\"header\">\n\t\t\t<button class=\"back\" on:click={closeModal}>\n\t\t\t\t<i class=\"gi-angle-left\" />\n\t\t\t</button>\n\t\t\t<div class=\"title\">{$t('shop.pay')}</div>\n\t\t</div>\n\n\t\t<div class=\"body\">\n\t\t\t<div class=\"detail\">\n\t\t\t\t<picture>\n\t\t\t\t\t<span class=\"product-text\">{$t('shop.product')}</span>\n\t\t\t\t\t<Icon type=\"genesis\" width=\"50%\" />\n\t\t\t\t\t<span class=\"product-name\">{$t('shop.item.genesis')} x{data.qty}</span>\n\t\t\t\t</picture>\n\t\t\t\t<div class=\"price\">{data.price}</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"payment-type\">\n\t\t\t\t<span>{$t('shop.selectPayment')}</span>\n\t\t\t\t<div class=\"list\">\n\t\t\t\t\t{#each ['Childe', 'Tears', 'Wakaranai'] as method}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"item\"\n\t\t\t\t\t\t\tclass:selected={method === activeMethod}\n\t\t\t\t\t\t\ton:click={() => selectMethod(method)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<img src={$assets[`payment-${method.toLocaleLowerCase()}.webp`]} alt=\"method\" />\n\t\t\t\t\t\t\t{$t(`shop.payment${method}`)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"auto-convert\">\n\t\t\t\t<input\n\t\t\t\t\tid=\"convert\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tstyle=\"margin-right: .4rem\"\n\t\t\t\t\tbind:checked={autoConvert}\n\t\t\t\t\ton:change={() => playSfx('click2')}\n\t\t\t\t/>\n\t\t\t\t<label for=\"convert\">{$t('shop.convertPrimo')} </label>\n\t\t\t</div>\n\t\t\t<div class=\"button-payment\">\n\t\t\t\t<button on:click={handleBuy}>{$t('shop.proceedPayment')}</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</Modal>\n\n<style>\n\t.genesis-modal {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.header {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\tbutton.back {\n\t\tfont-size: 2rem;\n\t\tpadding: 0.4rem;\n\t\tline-height: 1rem;\n\t}\n\n\t.title {\n\t\twidth: 100%;\n\t\tpadding: 0.4rem;\n\t\tfont-size: 1.5rem;\n\t\tline-height: 1rem;\n\t}\n\n\t.body {\n\t\tdisplay: flex;\n\t\twidth: center;\n\t\twidth: 100%;\n\t\tflex-direction: column;\n\t}\n\n\t.detail {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t}\n\tpicture {\n\t\twidth: 40%;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\ttext-align: center;\n\t}\n\t:global(.mobile) picture {\n\t\twidth: 25vh;\n\t}\n\tpicture span {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tdisplay: block;\n\t\tfont-size: 0.8rem;\n\t}\n\tspan.product-text {\n\t\ttop: 0;\n\t}\n\n\tspan.product-name {\n\t\tbottom: 0;\n\t}\n\t:global(.mobile) span.product-text {\n\t\twidth: fit-content;\n\t\tleft: 19vh;\n\t\ttop: 25%;\n\t\tfont-size: 0.9rem;\n\t}\n\t:global(.mobile) span.product-name {\n\t\twidth: max-content;\n\t\tleft: 19vh;\n\t\tfont-size: 0.9rem;\n\t\tbottom: 25%;\n\t}\n\n\t.price {\n\t\twidth: 40%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 1.5rem;\n\t\tmargin-right: 0.2rem;\n\t\tcolor: #de2f22;\n\t}\n\t.payment-type {\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tpadding: 1rem 1.4rem;\n\t\tfont-size: 1.1rem;\n\t}\n\t:global(.mobile) .payment-type {\n\t\tfont-size: 1rem;\n\t}\n\n\t.list {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t.item {\n\t\tmargin: 0.5rem 0.25rem 0;\n\t\tpadding: 0.5rem;\n\t\tborder-radius: 0.25rem;\n\t\ttext-align: center;\n\t\twidth: 50%;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-size: 0.95rem;\n\t\tborder: 2px solid #ccc;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-evenly;\n\t\ttransition: all 0.2s;\n\t\ttext-transform: capitalize;\n\t}\n\t.item:hover {\n\t\tborder-color: rgb(206, 160, 100);\n\t}\n\n\t.item.selected {\n\t\tbackground-color: #d2c69c;\n\t\tborder-color: rgb(206, 160, 100);\n\t\tfont-weight: bold;\n\t\tbox-shadow: 0 0 0.2rem #ce9c56;\n\t}\n\n\t.item img {\n\t\twidth: 20%;\n\t}\n\n\t:global(.mobile) .item {\n\t\tpadding: 0.3rem;\n\t}\n\n\t.auto-convert {\n\t\tfont-size: 0.97rem;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t.button-payment button {\n\t\tbackground-color: #353533;\n\t\tcolor: #ffc107;\n\t\tmargin: 1rem;\n\t\tpadding: 1rem;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.button-payment button:active {\n\t\ttransform: scale(0.95);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/index.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { writable } from 'svelte/store';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { activeVersion } from '$lib/store/app-stores';\n\timport { ownedOutfits, owneditem } from '$lib/helpers/dataAPI/api-localstore';\n\timport { getSplashArtData, outfitsForThisPatch } from '$lib/helpers/outfit';\n\timport { APP_TITLE } from '$lib/env';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { HistoryManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { getDetails } from '$lib/helpers/gacha/itemdrop-base';\n\n\timport Background from '$lib/components/RandomBackground.svelte';\n\timport Header from './_header.svelte';\n\timport Aside from './_aside.svelte';\n\timport ModalExchange from './_modal-exchange.svelte';\n\timport GenesisTopup from './genesis-topup/GenesisTopup.svelte';\n\timport PaimonBargains from './paimon-bargains/PaimonBargains.svelte';\n\timport Donate from './donate/Donate.svelte';\n\timport Recomended from './recomended/Recomended.svelte';\n\timport CharacterOutfits from './character-outfit/CharacterOutfits.svelte';\n\timport WishResult from '../_wish/wish-result/WishResult.svelte';\n\n\t$: title = $t('title', { default: APP_TITLE });\n\n\t// Exchange Modal\n\tlet exchangeData = {};\n\tlet showExchangeModal = false;\n\n\tsetContext('closeExchageModal', () => (showExchangeModal = false));\n\tconst openModal = (data) => {\n\t\texchangeData = data;\n\t\tshowExchangeModal = true;\n\t};\n\tsetContext('openExchangeModal', openModal);\n\n\t// Outfit Manager\n\tconst { patch } = $activeVersion;\n\tconst filteredOutfit = outfitsForThisPatch({ patch });\n\tconst outfits = writable(filteredOutfit);\n\tsetContext('outfits', outfits);\n\n\tlet splashArtData = {};\n\tlet showSplashArt = false;\n\tconst buyOutfit = () => {\n\t\tconst { itemToExchange: outfitName } = exchangeData;\n\t\tconst outfitData = getSplashArtData(outfitName);\n\t\tsplashArtData = { isOutfit: true, list: [outfitData] };\n\n\t\t// Update Outfit Status\n\t\townedOutfits.set({ outfitName, isSet: true, characterName: outfitData.name });\n\t\toutfits.update((arr) => {\n\t\t\tconst setOwned = (d) => (d.name === outfitName ? { ...d, isOwned: true } : d);\n\t\t\treturn arr.map(setOwned);\n\t\t});\n\t\tshowSplashArt = true;\n\t};\n\tsetContext('buyOutfit', buyOutfit);\n\n\tconst closeResult = () => {\n\t\tplaySfx('close');\n\t\tshowSplashArt = false;\n\t};\n\tsetContext('closeResult', closeResult);\n\n\t// Paimon's bargain character\n\tconst buyCharacter = (qty) => {\n\t\tconst { itemToExchange: itemName } = exchangeData;\n\t\tconst charData = getDetails(itemName) || {};\n\t\tsplashArtData = { list: [charData] };\n\t\towneditem.put({ itemID: charData.itemID, source: 'manual', qty });\n\n\t\tconst d = new Date();\n\t\tconst time = `${d.toLocaleDateString()} ${d.toLocaleTimeString()}`;\n\n\t\tHistoryManager.addHistory({\n\t\t\ttime,\n\t\t\tbanner: 'paimon-bargains',\n\t\t\ttype: 'character',\n\t\t\titemID: charData.itemID,\n\t\t\tname: charData.name,\n\t\t\tvision: charData.vision,\n\t\t\trarity: charData.rarity\n\t\t});\n\n\t\tshowSplashArt = true;\n\t};\n\n\tsetContext('buyCharacter', buyCharacter);\n\n\t// Shop Group Navigation\n\tlet contentHeight;\n\tlet activeShop = 'genesis';\n\tlet showAside = false;\n\n\tconst asideToggle = () => {\n\t\tplaySfx(showAside ? 'close' : 'click');\n\t\tshowAside = !showAside;\n\t};\n\tsetContext('asideToggle', asideToggle);\n\n\tconst selectShopMenu = (selected) => {\n\t\tif (activeShop === selected) return;\n\t\tactiveShop = selected;\n\t\tshowAside = !showAside;\n\t\tplaySfx('shopnav');\n\t};\n\tsetContext('selectShopMenu', selectShopMenu);\n\n\t// Shortcut\n\tconst navigate = getContext('navigate');\n\thotkeys('esc', 'shop', (e) => {\n\t\te.preventDefault();\n\t\tif (showSplashArt) return closeResult();\n\t\tplaySfx('close');\n\t\tnavigate('index');\n\t});\n</script>\n\n<svelte:head>\n\t{#if activeShop === 'genesis'}\n\t\t<title>{$t('shop.buyGenesisHeading')} | {title}</title>\n\t{:else if activeShop === 'recomended'}\n\t\t<title>{$t('shop.recomendedHeading')} | {title}</title>\n\t{:else if activeShop === 'outfits'}\n\t\t<title>{$t('outfit.heading')} | {title}</title>\n\t{:else if activeShop === 'donate'}\n\t\t<title>Donate | {title}</title>\n\t{:else}\n\t\t<title>{$t('shop.paimonHeading')} | {title}</title>\n\t{/if}\n</svelte:head>\n\n<!-- outfit Splash Art -->\n{#if showSplashArt}\n\t<div class=\"wish-container\">\n\t\t<WishResult {...splashArtData} skip />\n\t</div>\n{/if}\n<!-- End Outfit Splash Art -->\n\n{#if showExchangeModal}\n\t<ModalExchange data={exchangeData} />\n{/if}\n\n<section>\n\t<Background />\n\t<div class=\"container\" out:fade={{ duration: 250 }}>\n\t\t<Aside isOpen={showAside} />\n\n\t\t<div class=\"items-container\">\n\t\t\t<Header {activeShop} />\n\n\t\t\t<div\n\t\t\t\tclass=\"item-body\"\n\t\t\t\tin:fade={{ duration: 300 }}\n\t\t\t\tbind:clientHeight={contentHeight}\n\t\t\t\tstyle=\"--content-height:{contentHeight}px\"\n\t\t\t>\n\t\t\t\t{#if activeShop === 'genesis'}\n\t\t\t\t\t<GenesisTopup />\n\n\t\t\t\t\t<!-- Recomended Item -->\n\t\t\t\t{:else if activeShop === 'recomended'}\n\t\t\t\t\t<!-- <Recomended {recentlyBuyIndex} /> -->\n\t\t\t\t\t<Recomended />\n\n\t\t\t\t\t<!-- Characters Outfits -->\n\t\t\t\t{:else if activeShop === 'outfits'}\n\t\t\t\t\t<CharacterOutfits />\n\n\t\t\t\t\t<!-- Donate -->\n\t\t\t\t{:else if activeShop === 'donate'}\n\t\t\t\t\t<Donate />\n\n\t\t\t\t\t<!-- Paimon Bargains -->\n\t\t\t\t{:else if activeShop === 'paimon-bargains'}\n\t\t\t\t\t<PaimonBargains />\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</section>\n\n<style>\n\t.wish-container {\n\t\tposition: fixed;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 10;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\tsection {\n\t\twidth: 100vw;\n\t\theight: var(--screen-height);\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tfont-size: 1rem;\n\t\tbackground-color: var(--text-color);\n\t}\n\n\t.item-body {\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t}\n\n\t:global(.mobile) section {\n\t\tfont-size: 0.8rem;\n\t}\n\n\tsection::after {\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tbackground-color: rgba(0, 0, 0, 0.2);\n\t\tz-index: -1;\n\t}\n\n\t.container {\n\t\tdisplay: flex;\n\t\tpadding: 0 3% 0 0;\n\t\tposition: relative;\n\t\tz-index: +2;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t:global(.mobile) .container {\n\t\tpadding: 0 2%;\n\t}\n\n\t@media screen and (max-width: 745px) {\n\t\t.container {\n\t\t\tpadding: 0 3%;\n\t\t}\n\t}\n\n\t.items-container {\n\t\twidth: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/paimon-bargains/PaimonBargains.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { owneditem } from '$lib/helpers/dataAPI/api-localstore';\n\timport { getDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport { paimonBargainCharacters } from '$lib/data/paimon-bargain-characters.json';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ShopGroup from '../_shop-group.svelte';\n\timport ShopGroupItem from '../_shop-group-item.svelte';\n\timport NavlinkTop from '../_navlink-top.svelte';\n\timport NavlinkTopButton from '../_navlink-top-button.svelte';\n\timport CharacterItem from './_character-item.svelte';\n\n\tlet activeCurrency = 'starglitter';\n\n\tconst pricelist = {\n\t\tstarglitter: { price: 5, rarity: 5 },\n\t\tstardust: { price: 125, rarity: 4 },\n\t\tprimogem: { price: 160, rarity: 5 }\n\t};\n\n\tconst openExchangeModal = getContext('openExchangeModal');\n\tconst selectItem = (itemToExchange) => {\n\t\tplaySfx();\n\t\tconst currency = activeCurrency;\n\t\tconst { price, rarity } = pricelist[activeCurrency];\n\t\tconst data = { itemToExchange, price, rarity, currency };\n\t\topenExchangeModal(data);\n\t};\n\n\tconst selectCharacterItem = (selectedCharacter) => {\n\t\tplaySfx();\n\t\tconst currency = 'starglitter';\n\t\tconst itemToExchange = selectedCharacter.name;\n\t\tconst price = selectedCharacter.price;\n\t\tconst rarity = selectedCharacter.rarity;\n\t\tconst data = {\n\t\t\tisOwned: isCharMax(itemToExchange),\n\t\t\titemToExchange,\n\t\t\tprice,\n\t\t\trarity,\n\t\t\tcurrency,\n\t\t\tisCharacter: true\n\t\t};\n\t\topenExchangeModal(data);\n\t};\n\n\tconst handlePaimonClick = ({ detail }) => {\n\t\tif (activeCurrency === detail.selected) return;\n\t\tactiveCurrency = detail.selected;\n\t\tplaySfx('shopsubnav');\n\t};\n\n\tconst isCharMax = (name) => {\n\t\tconst { itemID } = getDetails(name) || {};\n\t\tconst { qty } = owneditem.get(itemID);\n\t\tconst isMax = qty >= 7;\n\t\treturn isMax;\n\t};\n</script>\n\n<NavlinkTop>\n\t{#each ['starglitter', 'stardust', 'primogem'] as val}\n\t\t<NavlinkTopButton on:click={handlePaimonClick} name={val} active={activeCurrency === val}>\n\t\t\t{$t(`shop.exchange.${val}`)}\n\t\t</NavlinkTopButton>\n\t{/each}\n</NavlinkTop>\n\n<ShopGroup>\n\t{#each ['intertwined', 'acquaint'] as fate, i}\n\t\t<ShopGroupItem>\n\t\t\t<button\n\t\t\t\ton:click={() => selectItem(fate)}\n\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt(i * 5000) }}\n\t\t\t>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<div class=\"picture\" style=\"background-image: url('{$assets['5star-bg.webp']}')\">\n\t\t\t\t\t\t<Icon type={fate} width=\"60%\" />\n\t\t\t\t\t\t<span> {$t(`shop.item.${fate}`)} </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"price\">\n\t\t\t\t\t\t{#each Object.keys(pricelist) as key}\n\t\t\t\t\t\t\t{#if activeCurrency === key}\n\t\t\t\t\t\t\t\t<Icon type={key} width=\"15%\" />\n\t\t\t\t\t\t\t\t<span style=\"margin-left: 5px\">{pricelist[key].price}</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</ShopGroupItem>\n\t{/each}\n\t{#if activeCurrency === 'starglitter'}\n\t\t{#each paimonBargainCharacters as character, i}\n\t\t\t<ShopGroupItem>\n\t\t\t\t<button\n\t\t\t\t\tin:fade={{ duration: 300, delay: Math.sqrt((i + 2) * 5000) }}\n\t\t\t\t\ton:click={() => selectCharacterItem(character)}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content\">\n\t\t\t\t\t\t<div class=\"picture\" style=\"background-image: url('{$assets['4star-bg.webp']}')\">\n\t\t\t\t\t\t\t<CharacterItem name={character.name} />\n\t\t\t\t\t\t\t{#if isCharMax(character.name)}\n\t\t\t\t\t\t\t\t<span class=\"unpurchasable\">\n\t\t\t\t\t\t\t\t\t{$t('shop.maxCharacter')}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<span> {$t(`${character.name}.name`)}</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"price\">\n\t\t\t\t\t\t\t<Icon type=\"starglitter\" width=\"15%\" />\n\t\t\t\t\t\t\t<span style=\"margin-left: 5px\">{character.price}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</button>\n\t\t\t</ShopGroupItem>\n\t\t{/each}\n\t{/if}\n</ShopGroup>\n\n<style>\n\tbutton {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\ttransition: all 0.2s;\n\t\tposition: relative;\n\t}\n\tbutton::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 0.8rem;\n\t\tborder: 0.3rem solid #eac343;\n\t\topacity: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\tbutton:hover::after {\n\t\topacity: 1;\n\t}\n\tbutton:active {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tborder-radius: 0.5rem;\n\t\toverflow: hidden;\n\t\ttext-align: center;\n\t\tbackground-color: #596982;\n\t}\n\n\t.content .picture {\n\t\tpadding-top: 5%;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-top: -10%;\n\t\talign-items: center;\n\t\tposition: relative;\n\t\tbackground-size: cover;\n\t\tborder-bottom-right-radius: 1.4rem;\n\t\toverflow: hidden;\n\t}\n\t.content .picture span {\n\t\tposition: absolute;\n\t\tfont-size: calc(var(--column-width) * 0.065);\n\t\tmargin-bottom: 3%;\n\t\tpadding: 0 2%;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tcolor: #fff;\n\t\t-webkit-text-stroke: 0.2px black;\n\t}\n\t.price {\n\t\twidth: 100%;\n\t\theight: 20%;\n\t\tcolor: #fff;\n\t\t-webkit-text-stroke: 0.02rem black;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t.unpurchasable {\n\t\tbackground-color: #ea6864;\n\t\tpadding-top: 0.2rem;\n\t\tmargin-bottom: 0 !important;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/paimon-bargains/_character-item.svelte",
    "content": "<script>\n\timport { getDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let name;\n\tconst { vision } = getDetails(name);\n</script>\n\n<div class=\"frame-content\" style=\"--bg:url({$assets[`character-shop-frame.webp`]})\">\n\t<div class=\"face bg-{vision}\">\n\t\t<img src={$assets[`face/${name}`]} alt={name} />\n\t</div>\n\t<div class=\"frame\" />\n</div>\n\n<style>\n\t.frame-content {\n\t\taspect-ratio: 256/311;\n\t\theight: 80%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\t.frame {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: contain;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\t.face {\n\t\twidth: 75%;\n\t\taspect-ratio: 200/270;\n\t\tdisplay: flex;\n\t\talign-items: flex-end;\n\t}\n\n\t.face img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/recomended/Recomended.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { activeVersion } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\n\timport ShopGroup from '../_shop-group.svelte';\n\timport NavlinkTop from '../_navlink-top.svelte';\n\timport NavlinkTopButton from '../_navlink-top-button.svelte';\n\timport OutfitCard from './_item-outfit.svelte';\n\timport WelkinCard from './_item-welkin.svelte';\n\n\tlet contentWidth;\n\tconst outfits = getContext('outfits');\n\tconst { patch } = $activeVersion;\n\n\tconst findOutfit = ({ release, characterName }) => {\n\t\tconst matchPatch = patch === `${release}`;\n\t\tconst { rarity } = getCharDetails(characterName) || {};\n\t\tconst isLimitedChar = rarity === 5;\n\t\treturn isLimitedChar && matchPatch;\n\t};\n\n\tlet activeIndex = 0;\n\t$: newOutfit = $outfits.filter(findOutfit);\n\tconst selectSubShop = (index) => {\n\t\tif (activeIndex === index) return;\n\t\tactiveIndex = index;\n\t\tplaySfx('shopsubnav');\n\t};\n</script>\n\n<NavlinkTop>\n\t{#if newOutfit.length > 0}\n\t\t{#each newOutfit as _, i}\n\t\t\t{@const { name = '' } = newOutfit[i] || {}}\n\t\t\t<NavlinkTopButton name=\"outfit\" active={i === activeIndex} on:click={() => selectSubShop(i)}>\n\t\t\t\t{$t('outfit.heading')}: {$t(`outfit.item.${name}.name`)}\n\t\t\t</NavlinkTopButton>\n\t\t{/each}\n\t{/if}\n\n\t<NavlinkTopButton\n\t\tname=\"welkin\"\n\t\tactive={activeIndex > newOutfit.length - 1}\n\t\ton:click={() => selectSubShop(newOutfit.length)}\n\t>\n\t\t{$t('shop.recomended.welkin')}\n\t</NavlinkTopButton>\n</NavlinkTop>\n\n<ShopGroup>\n\t<div\n\t\tclass=\"content-item\"\n\t\tbind:clientHeight={contentWidth}\n\t\tstyle=\"--content-width: {contentWidth}px\"\n\t>\n\t\t{#if activeIndex > newOutfit.length - 1}\n\t\t\t<div class=\"card welkin\" in:fade={{ duration: 400 }}>\n\t\t\t\t<WelkinCard />\n\t\t\t</div>\n\t\t{:else}\n\t\t\t{#key activeIndex}\n\t\t\t\t<div class=\"card outfit\" in:fade={{ duration: 400 }}>\n\t\t\t\t\t<OutfitCard data={newOutfit[activeIndex]} />\n\t\t\t\t</div>\n\t\t\t{/key}\n\t\t{/if}\n\t</div>\n</ShopGroup>\n\n<style>\n\t.content-item,\n\t.card {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t:global(.mobile) .content-item,\n\t:global(.mobile) .card {\n\t\tmax-width: 100%;\n\t\twidth: fit-content;\n\t\theight: 75vh;\n\t\tmax-height: 40vw;\n\t}\n\n\t.card {\n\t\tposition: relative;\n\t\tbackground-color: #f7f3eb;\n\t\tmax-width: 55rem;\n\t\tmax-height: 75vh;\n\t\taspect-ratio: 1000/561;\n\t\tborder-radius: 1rem;\n\t\toverflow: hidden;\n\t\tfont-size: calc(0.035 * var(--content-width));\n\t}\n\n\t.content-item :global(.frame) {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t\tpadding-top: 10%;\n\t\tz-index: +3;\n\t\tpadding-right: calc(0.05 * var(--content-width));\n\t}\n\n\t.content-item :global(.purchase-button) {\n\t\twidth: 48%;\n\t\ttext-align: right;\n\t\tmargin-top: auto;\n\t\tmargin-bottom: 2.5%;\n\t}\n\t.content-item :global(.purchase-button .caption) {\n\t\tfont-size: calc(0.029 * var(--content-width));\n\t}\n\t.content-item :global(.card-stroke) {\n\t\tline-height: 150%;\n\t\tmargin-bottom: 5%;\n\t}\n\n\t.outfit {\n\t\tposition: relative;\n\t}\n\t.outfit::after {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-image: linear-gradient(\n\t\t\t65deg,\n\t\t\trgba(247, 243, 235, 0) 40%,\n\t\t\trgba(247, 243, 235, 0.8) 70%\n\t\t);\n\t\tbackground-size: cover;\n\t\tz-index: +2;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/recomended/_item-outfit.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport { owneditem } from '$lib/helpers/dataAPI/api-localstore';\n\timport { positionToStyle } from '$lib/helpers/cssPosition';\n\timport { getName } from '$lib/helpers/nameText';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport ModalConfirm from '../character-outfit/_modal-confirm.svelte';\n\n\texport let data = {};\n\tlet name, offset, promoPrice, price, isOwned, characterName, rarity, itemID;\n\t$: ({ name, offset, promoPrice, price, isOwned, characterName, rarity } = data);\n\t$: ({ itemID } = getCharDetails(characterName));\n\n\tlet showConfirmModal = false;\n\tconst cancelConfirm = () => {\n\t\tshowConfirmModal = false;\n\t\tplaySfx('close');\n\t};\n\tsetContext('cancelConfirm', cancelConfirm);\n\n\tconst openExchangeModal = getContext('openExchangeModal');\n\tconst showDetailModal = () => {\n\t\tplaySfx();\n\t\tshowConfirmModal = false;\n\n\t\tconst exchangeData = {\n\t\t\trarity,\n\t\t\tisOutfit: true,\n\t\t\tprice: promoPrice,\n\t\t\tcurrency: 'genesis',\n\t\t\titemToExchange: name\n\t\t};\n\t\topenExchangeModal(exchangeData);\n\t};\n\tsetContext('showDetailModal', showDetailModal);\n\n\tconst prepareToBuy = () => {\n\t\tconst { qty } = owneditem.get(itemID);\n\t\tif (qty > 0) return showDetailModal();\n\n\t\tplaySfx();\n\t\tshowConfirmModal = true;\n\t\treturn;\n\t};\n</script>\n\n{#if showConfirmModal}\n\t<ModalConfirm />\n{/if}\n\n<img\n\tclass=\"outfit-art\"\n\tsrc={$assets[`splash-art/${name}`]}\n\talt={getName(name)}\n\tstyle={positionToStyle(offset?.storeCard || {})}\n/>\n\n<div class=\"remaining card-stroke\">{$t('shop.limitedOffer')}</div>\n<div class=\"details\">\n\t<div class=\"name stroke\">{$t(`outfit.item.${name}.name`)}</div>\n\t<div class=\"price\">\n\t\t<Icon type=\"genesis\" style=\"margin-right:-1%; width: 10%\" />\n\t\t<span class=\"dicount stroke\"> {promoPrice} </span>\n\n\t\t<del class=\"real-price\"> {price} </del>\n\t</div>\n</div>\n\n<div class=\"frame\">\n\t<div class=\"description\">\n\t\t<div class=\"title\">{$t('shop.recomended.newOutfit')}</div>\n\t\t<span class=\"name\">{$t(`outfit.item.${name}.name`)}</span>\n\t\t<p class=\"card-stroke\">\n\t\t\t{$t(`outfit.item.${name}.description`)}\n\t\t</p>\n\t</div>\n\t<div class=\"purchase-button\">\n\t\t{#if isOwned}\n\t\t\t<span class=\"owned\">{$t('outfit.owned')}</span>\n\t\t{:else}\n\t\t\t<ButtonModal text={$t('shop.purchaseButton')} type=\"confirm\" on:click={prepareToBuy} />\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.owned {\n\t\tcolor: #de2f22;\n\t}\n\n\timg.outfit-art {\n\t\tposition: absolute;\n\t\ttop: -16.5%;\n\t\tleft: -31%;\n\t\twidth: 130%;\n\t}\n\n\t.frame {\n\t\tpadding-top: 2% !important;\n\t}\n\t.remaining {\n\t\tcolor: #5391b3;\n\t\twidth: 35%;\n\t\tposition: absolute;\n\t\ttop: 2%;\n\t\tleft: 2%;\n\t\tfont-size: calc(0.03 * var(--content-width));\n\t}\n\n\t.description {\n\t\twidth: 50%;\n\t\ttext-align: right;\n\t\tcolor: #3b4152;\n\t\ttext-shadow: 0 0 1rem #f7f3eb;\n\t}\n\n\t.description p {\n\t\tline-height: 130%;\n\t\tfont-size: calc(0.04 * var(--content-width));\n\t\tmax-height: calc(0.52 * var(--content-width));\n\t\toverflow-y: auto;\n\t}\n\n\t.title {\n\t\tdisplay: block;\n\t\tmargin-left: auto;\n\t\twidth: 80%;\n\t\tcolor: #3c4b5e;\n\t\tfont-size: calc(0.07 * var(--content-width));\n\t\tline-height: 120%;\n\t}\n\tspan.name {\n\t\tcolor: #3c4b5e;\n\t\tfont-weight: bold;\n\t\tdisplay: block;\n\t\tmargin: 5% 0;\n\t}\n\n\t.details {\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tpadding-bottom: 5%;\n\t\tpadding-left: 3%;\n\t}\n\t.details .name {\n\t\tfont-size: calc(0.08 * var(--content-width));\n\t\twidth: 50%;\n\t\tline-height: 120%;\n\t\tmargin-top: auto;\n\t\tcolor: #fff;\n\t\tfilter: drop-shadow(0 0 25px #787b84);\n\t}\n\n\t.price {\n\t\tposition: relative;\n\t\tcolor: #fff;\n\t\tmargin-top: 5%;\n\t\tfilter: drop-shadow(0 0 25px #787b84);\n\t}\n\t.dicount {\n\t\tfont-size: calc(0.11 * var(--content-width));\n\t}\n\n\t.stroke {\n\t\t/* prettier-ignore */\n\t\ttext-shadow:\n    -0.025rem -0.025rem 0 #3c4b5e,\n     0   \t\t -0.025rem 0 #3c4b5e,\n     0.025rem -0.025rem 0 #3c4b5e,\n     0.025rem  0 \t\t  0 #3c4b5e,\n     0.025rem  0.025rem 0 #3c4b5e,\n     0    \t\t0.025rem 0 #3c4b5e,\n    -0.025rem  0.025rem 0 #3c4b5e,\n    -0.025rem  0\t\t    0 #3c4b5e;\n\t}\n\n\t.real-price {\n\t\tposition: absolute;\n\t\tleft: 52%;\n\t\tbottom: 0;\n\t\ttransform: translateY(-50%);\n\t\tcolor: #fff;\n\t\tbackground-color: #88ba59;\n\t\tpadding: 0.1rem 1rem 0.1rem 0.7rem;\n\t\tborder-bottom-left-radius: 1rem;\n\t\tborder-top-left-radius: 1rem;\n\t\tborder-bottom-right-radius: 2rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/recomended/_item-welkin.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { welkinReward } from '$lib/data/wish-setup.json';\n\timport { assets, genesis, pricelist, primogem } from '$lib/store/app-stores';\n\timport { dailyWelkin, localBalance } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalWelkin from './_modal-welkin.svelte';\n\n\tlet showWelkinModal = false;\n\tconst handleModal = () => {\n\t\tplaySfx(showWelkinModal ? 'close' : 'click');\n\t\tshowWelkinModal = !showWelkinModal;\n\t};\n\tsetContext('handleModal', handleModal);\n\n\tconst { welkin: welkinPrice } = $pricelist;\n\tconst { genesis: genesisReward, primogem: dailyPrimo } = welkinReward;\n\tconst { remaining } = dailyWelkin.getData();\n\n\tlet dayRemaining = remaining || 0;\n\tconst showObtained = getContext('openObtained');\n\n\tconst buyWelkin = () => {\n\t\tshowWelkinModal = false;\n\t\tgenesis.update((n) => {\n\t\t\tconst newQty = n + genesisReward;\n\t\t\tlocalBalance.set('genesis', newQty);\n\t\t\treturn newQty;\n\t\t});\n\t\tprimogem.update((n) => {\n\t\t\tconst newQty = n + dailyPrimo;\n\t\t\tlocalBalance.set('primogem', newQty);\n\t\t\treturn newQty;\n\t\t});\n\t\tshowObtained([{ item: 'genesis', qty: genesisReward }]);\n\t\tconst checkin = dailyWelkin.checkin('welkin');\n\t\tdayRemaining = checkin.remaining;\n\t};\n\tsetContext('buyWelkin', buyWelkin);\n</script>\n\n{#if showWelkinModal}\n\t<ModalWelkin />\n{/if}\n\n<img src={$assets['welkin-card.webp']} alt=\"Welkin of the Blessing Moon\" />\n<div class=\"welkin-item\">\n\t<img src={$assets['welkin.webp']} alt=\"Welkin Item\" in:fly={{ y: -50, duration: 400 }} />\n</div>\n\n<h1>{$t('shop.recomended.welkin')}</h1>\n{#if dayRemaining > 0}\n\t<div class=\"remaining\">\n\t\t{@html $t('shop.recomended.dayRemaining', {\n\t\t\tvalues: { days: `<strong>${dayRemaining}</strong>` }\n\t\t})}\n\t\t<span>({$t('shop.recomended.alreadyClaimed')})</span>\n\t</div>\n{/if}\n\n<h2 class=\"price\">{welkinPrice}</h2>\n<div class=\"note\">{$t('shop.welkinNote')}</div>\n\n<div class=\"frame\">\n\t<div class=\"parent-amount\">\n\t\t<span>{$t('shop.recomended.instantlyGet')}</span>\n\t\t<span class=\"amount\">\n\t\t\t{genesisReward}\n\t\t\t<Icon type=\"genesis\" style=\"margin-bottom:-5%; width: 20%\" />\n\t\t</span>\n\t</div>\n\t<div class=\"parent-amount\">\n\t\t<span>{$t('shop.recomended.dailyGift')}</span>\n\t\t<span class=\"amount\">\n\t\t\t{dailyPrimo}\n\t\t\t<Icon type=\"primogem\" style=\"margin-bottom:-5%; width: 20%\" />\n\t\t</span>\n\t</div>\n\n\t<!-- Button -->\n\t<div class=\"purchase-button\">\n\t\t<div class=\"caption card-stroke\">\n\t\t\t{@html $t('shop.recomended.obtainTotal', {\n\t\t\t\tvalues: {\n\t\t\t\t\ttotalGenesis: `<strong>${genesisReward}</strong>`,\n\t\t\t\t\ttotalPrimo: `<strong>${dailyPrimo * 30}</strong>`\n\t\t\t\t}\n\t\t\t})}\n\t\t</div>\n\t\t<ButtonModal type=\"confirm\" on:click={handleModal}>\n\t\t\t{$t('shop.purchaseButton')}\n\t\t</ButtonModal>\n\t</div>\n</div>\n\n<style>\n\timg {\n\t\twidth: 100%;\n\t}\n\t.welkin-item {\n\t\tposition: absolute;\n\t\ttop: 8%;\n\t\tleft: 8%;\n\t\twidth: 47.5%;\n\t\tanimation: welkinItem 2s infinite alternate ease-in-out;\n\t}\n\n\t@keyframes welkinItem {\n\t\t0% {\n\t\t\ttransform: translateY(0);\n\t\t}\n\t\t100% {\n\t\t\ttransform: translateY(-3%);\n\t\t}\n\t}\n\n\th1 {\n\t\tposition: absolute;\n\t\tright: 2%;\n\t\ttop: 7.5%;\n\t\tcolor: #4c505e;\n\t\tfont-size: calc(0.065 * var(--content-width));\n\t}\n\n\th2 {\n\t\tposition: absolute;\n\t\tleft: 2%;\n\t\tbottom: 8%;\n\t\tfont-size: calc(0.115 * var(--content-width));\n\t\tcolor: #fff;\n\t}\n\n\t.note {\n\t\tposition: absolute;\n\t\tleft: 6%;\n\t\tbottom: 3.7%;\n\t\tcolor: #fff;\n\t\tfont-size: calc(0.026 * var(--content-width));\n\t}\n\n\t.remaining {\n\t\twidth: 35%;\n\t\tposition: absolute;\n\t\ttop: 2%;\n\t\tleft: 2%;\n\t\tcolor: #b3c4e3;\n\t\tfont-size: calc(0.03 * var(--content-width));\n\t}\n\t.remaining span {\n\t\tcolor: #ffc107;\n\t}\n\n\t.parent-amount {\n\t\tmargin: 2% 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t}\n\t.parent-amount span {\n\t\tdisplay: block;\n\t\ttext-align: right;\n\t}\n\t.parent-amount span:not(.amount),\n\t.purchase-button {\n\t\tcolor: #787b84;\n\t}\n\t.amount {\n\t\tpadding: 5% 8%;\n\t\tbackground-color: #8e9cc0;\n\t\tcolor: #fff;\n\t\tborder-radius: 2rem;\n\t\tmargin-top: 5%;\n\t\tborder: 0.1rem solid #fff;\n\t\toutline: 0.135rem solid #8e9cc0;\n\t\twidth: calc(0.3 * var(--content-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_shop/recomended/_modal-welkin.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { welkinReward } from '$lib/data/wish-setup.json';\n\timport { assets, mobileMode, pricelist } from '$lib/store/app-stores';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport ModalBalance from '../_modal-balance.svelte';\n\n\tconst { welkin: welkinPrice } = $pricelist;\n\tconst { genesis: genesisReward, primogem: dailyPrimo } = welkinReward;\n\n\tconst handleModal = getContext('handleModal');\n\tconst buyWelkin = getContext('buyWelkin');\n</script>\n\n<ModalBalance />\n\n<ModalTpl title={$t('shop.purchaseHeading')} on:confirm={buyWelkin} on:cancel={handleModal}>\n\t<span slot=\"confirmtext\"> {$t('shop.purchaseButton')} </span>\n\t<div class=\"content\">\n\t\t<div class=\"img-content\">\n\t\t\t<div class=\"thumbnail\">\n\t\t\t\t<picture>\n\t\t\t\t\t<img src={$assets['welkin.webp']} alt=\"Welkin\" />\n\t\t\t\t\t<caption> {$t('shop.recomended.welkin')} </caption>\n\t\t\t\t</picture>\n\t\t\t\t<div class=\"price\">\n\t\t\t\t\t<span>{welkinPrice}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"description-content\">\n\t\t\t<div class=\"item\">\n\t\t\t\t<div class=\"name\">{$t('shop.recomended.issuedPurchase')}</div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<Icon type=\"genesis\" width={$mobileMode ? '20px' : '30px'} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"detail\">\n\t\t\t\t\t\t<span>{$t('shop.item.genesis')}</span>\n\t\t\t\t\t\t<span class=\"amount\">x{genesisReward}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"item\" style=\"margin-top: 1rem ;\">\n\t\t\t\t<div class=\"name\">{$t('shop.recomended.collect')}</div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<div class=\"icon\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<Icon type=\"primogem\" width={$mobileMode ? '20px' : '30px'} />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"detail\">\n\t\t\t\t\t\t<span>{$t('shop.item.primogem')}</span>\n\t\t\t\t\t\t<span class=\"amount\">x{dailyPrimo}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ModalTpl>\n\n<style>\n\t.content {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tpadding: 0 1.2rem;\n\t\tcolor: #545259;\n\t}\n\n\t.img-content {\n\t\twidth: 40%;\n\t\tpadding: 2% 1rem;\n\t}\n\n\t.thumbnail {\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #fff;\n\t\tborder-radius: 8%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tbackground-color: #ffe4af;\n\t\talign-items: center;\n\t\toverflow: hidden;\n\t\tbox-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.25);\n\t}\n\n\tpicture {\n\t\twidth: 100%;\n\t\theight: 80%;\n\t\tbackground-color: #f8f3f4;\n\t\tposition: relative;\n\t}\n\n\tpicture::after,\n\tpicture::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\tbottom: 0;\n\t\tdisplay: block;\n\t\ttransform: translateX(-50%);\n\t}\n\tpicture::after {\n\t\tbackground-image: linear-gradient(to top, rgba(243, 232, 227, 1) 20%, rgba(243, 232, 227, 0));\n\t\theight: 70%;\n\t\twidth: 100%;\n\t}\n\tpicture::before {\n\t\theight: calc(100% - 0.35rem);\n\t\twidth: calc(100% - 0.7rem);\n\t\tborder: 0.1rem solid #ddc295;\n\t\tborder-top-left-radius: 8%;\n\t\tborder-top-right-radius: 8%;\n\t}\n\n\t.thumbnail img {\n\t\twidth: 75%;\n\t}\n\n\tcaption {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tz-index: +2;\n\t\tline-height: 120%;\n\t\tfont-size: 65%;\n\t\tpadding: 0.4rem;\n\t}\n\n\t.price {\n\t\tfont-size: 80%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\theight: 20%;\n\t\twidth: 100%;\n\t\tborder-top: 0.1rem solid #ddc295;\n\t}\n\n\t@media screen and (min-width: 474px) {\n\t\t.price,\n\t\tcaption {\n\t\t\tfont-size: medium;\n\t\t}\n\t\t:global(.mobile) .price {\n\t\t\tfont-size: 80%;\n\t\t}\n\t\t:global(.mobile) caption {\n\t\t\tfont-size: 65%;\n\t\t}\n\t}\n\n\t.description-content {\n\t\twidth: 60%;\n\t\tpadding: 2% 0 1rem 0.5rem;\n\t\ttext-align: left;\n\t\tfont-size: 65%;\n\t}\n\n\t.item {\n\t\tbackground-color: #f8f3f4;\n\t\tborder-bottom: 0.1rem solid #ddc295;\n\t}\n\t.icon span {\n\t\tdisplay: inline-block;\n\t\tpadding: 0.2rem;\n\t\taspect-ratio: 1/1;\n\t\tbackground-color: #d38b4c;\n\t\tmargin-right: 1rem;\n\t\tmargin-top: 0.3rem;\n\t}\n\n\t.item .name {\n\t\tbackground-color: #d38b4c;\n\t\tcolor: #fff;\n\t\tpadding: 2% 1rem;\n\t\tline-height: 120%;\n\t}\n\t.item .content {\n\t\tpadding: 2% 1rem;\n\t}\n\n\tspan.amount {\n\t\tdisplay: block;\n\t\tpadding-top: 1%;\n\t\tfont-size: 120%;\n\t\tcolor: #d38b4c;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/_banner-button.svelte",
    "content": "<script>\n\timport { createEventDispatcher } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { activeVersion, isFatepointSystem, assets } from '$lib/store/app-stores';\n\timport { positionToStyle } from '$lib/helpers/cssPosition';\n\timport { noticeMark } from '$lib/helpers/noticeMark';\n\timport { getCharDetails, getWpDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport NoticeMark from '$lib/components/NoticeMark.svelte';\n\n\texport let active = false;\n\texport let type = 'beginner';\n\texport let featured = [];\n\texport let character = '';\n\texport let index = 0;\n\n\tconst buttonOffset = (itemName, buttonPosition = {}) => {\n\t\tconst getDetails = type === 'weapon-event' ? getWpDetails : getCharDetails;\n\t\tconst { offset = {} } = getDetails(itemName) || {};\n\t\tconst { button = {} } = offset;\n\t\tObject.keys(buttonPosition).forEach((key) => (button[key] = buttonPosition[key]));\n\t\treturn button;\n\t};\n\n\tlet patch, phase;\n\t$: ({ patch, phase } = $activeVersion);\n\t$: baseNoticeName = `${patch}-${phase}-${index}`;\n\t$: isWeapon = type === 'weapon-event' && $isFatepointSystem;\n\t$: noticeName = isWeapon ? `fatepoint${patch}-${phase}` : baseNoticeName;\n\n\tconst setNotice = () => {\n\t\tif (!active || !type.match(/event|chronicled/)) return;\n\t\tnoticeMark.openNotice(baseNoticeName);\n\t};\n\tconst dispatch = createEventDispatcher();\n\tconst buttonClick = () => dispatch('click');\n\t$: setNotice(active);\n</script>\n\n<button class=\"button {type}\" class:active on:click={buttonClick}>\n\t{#if type.match(/event|chronicled/)}\n\t\t<NoticeMark\n\t\t\tname={noticeName}\n\t\t\tstyle=\"transform: translateY(-130%) translateX(50%); z-index:+10\"\n\t\t/>\n\t{/if}\n\t<i class=\"gi-primo-star\" />\n\t<i class=\"gi-companion\" />\n\t<div class=\"picture\">\n\t\t<div class=\"wrapper\">\n\t\t\t{#if type === 'chronicled'}\n\t\t\t\t<img\n\t\t\t\t\tin:fade\n\t\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t\t\tsrc={$assets[`chronicled-${featured}.webp`]}\n\t\t\t\t\talt=\"Chronicled Wish\"\n\t\t\t\t\tclass=\"chronicled\"\n\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t/>\n\t\t\t{:else if type === 'weapon-event'}\n\t\t\t\t{#each featured as { name, buttonPosition }}\n\t\t\t\t\t<img\n\t\t\t\t\t\tin:fade\n\t\t\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t\t\t\tsrc={$assets[name]}\n\t\t\t\t\t\tstyle={positionToStyle(buttonOffset(name, buttonPosition))}\n\t\t\t\t\t\talt=\"Weapon Wish\"\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t/>\n\t\t\t\t{/each}\n\t\t\t{:else}\n\t\t\t\t<img\n\t\t\t\t\tin:fade\n\t\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t\t\tsrc={$assets[`button/${character}`]}\n\t\t\t\t\tstyle={positionToStyle(buttonOffset(character))}\n\t\t\t\t\talt=\"{type} Wish\"\n\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t/>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n\t{#if type === 'beginner'}\n\t\t<div class=\"discount\">-20%</div>\n\t{/if}\n</button>\n\n<style>\n\tbutton {\n\t\tdisplay: block;\n\t\tbackground-color: var(--secondary-color);\n\t\tborder-radius: 0.25rem;\n\t\twidth: 90px;\n\t\tmin-width: 50px;\n\t\taspect-ratio: 2.4/1;\n\t\tmargin: 0.6em 0.5em;\n\t\tposition: relative;\n\t\ttransition: all.2s;\n\t}\n\tbutton::after,\n\tbutton::before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 90%;\n\t\theight: 75%;\n\t\tborder: 2.5px solid #6d8fbb;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\ttransition: all 0.2s;\n\t}\n\n\tbutton::after {\n\t\tborder-radius: 0.4rem;\n\t}\n\n\tbutton::before {\n\t\tborder-radius: 40px;\n\t}\n\n\tbutton.active,\n\tbutton:hover {\n\t\tbackground-color: var(--tertiary-color);\n\t}\n\n\tbutton.active::before,\n\tbutton.active::after,\n\tbutton:hover::before,\n\tbutton:hover::after {\n\t\tborder: 2.5px solid #eee2c8;\n\t}\n\n\tbutton.active,\n\tbutton:hover {\n\t\ttransform: scale(1.1);\n\t}\n\n\t.gi-primo-star {\n\t\tleft: 15px;\n\t\tfont-size: 0.7rem;\n\t}\n\t.gi-companion {\n\t\tright: 5px;\n\t\tfont-size: 3rem;\n\t\tline-height: 0;\n\t\ttop: 55% !important;\n\t}\n\n\t.gi-primo-star,\n\t.gi-companion {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tcolor: #6d8fbb;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.active .gi-primo-star,\n\t.active .gi-companion,\n\tbutton:hover .gi-primo-star,\n\tbutton:hover .gi-companion {\n\t\tcolor: #eee2c8;\n\t}\n\n\t.picture {\n\t\twidth: 100%;\n\t\theight: 150%;\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\toverflow: hidden;\n\t\tpointer-events: none;\n\t\tborder-bottom-left-radius: 7px;\n\t\tborder-bottom-right-radius: 7px;\n\t}\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t\ttransition: all 0.2s;\n\t\ttransform: translateY(-10%);\n\t}\n\t:global(.mobile) .wrapper {\n\t\ttransform: translateY(0);\n\t}\n\n\t.active .wrapper {\n\t\ttransform: translateY(-25%);\n\t}\n\n\t:global(.mobile) .active .wrapper {\n\t\ttransform: translateY(-15%);\n\t}\n\n\timg {\n\t\tposition: absolute;\n\t\tz-index: +1;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\timg.chronicled {\n\t\twidth: 75%;\n\t\ttop: 35%;\n\t}\n\n\t.discount {\n\t\tbackground-color: #8ab958;\n\t\tposition: absolute;\n\t\tz-index: +2;\n\t\tleft: 50%;\n\t\tbottom: -5px;\n\t\tborder-radius: 20px;\n\t\tcolor: #fff;\n\t\ttransform: scale(0.65) translateX(-50%);\n\t\tpadding: 0.2rem 0.5rem;\n\t}\n\n\t@media screen and (min-width: 750px) {\n\t\t.discount {\n\t\t\tfont-size: 0.7rem;\n\t\t}\n\t}\n\n\t/* mobile */\n\t:global(.mobile) button {\n\t\ttransform: scale(0.88);\n\t\tmargin: 2.5% 0;\n\t\taspect-ratio: 2.2/1;\n\t}\n\n\t:global(.mobile) button.active {\n\t\ttransform: scale(0.9);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/_banner-item.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fly, fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { localrate } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport {\n\t\tactiveBanner,\n\t\tbannerList,\n\t\teditID,\n\t\teditorMode as editBanner,\n\t\tisMobile,\n\t\tmobileMode,\n\t\tviewportHeight,\n\t\tviewportWidth,\n\t\tcustomData\n\t} from '$lib/store/app-stores';\n\timport { pushToast } from '$lib/helpers/toast';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\timport BannerCard from './banner-card/BannerCard.svelte';\n\timport CustomEditor from '../_custom-banner/CustomEditor.svelte';\n\timport ModalDelete from '../_custom-banner/ModalDelete.svelte';\n\n\t$: landscape = $viewportWidth / 2.1 > $viewportHeight;\n\t$: tabletBannerStyle = landscape ? 'width: 90vh' : '';\n\n\t$: mobileBannerStyle = $mobileMode\n\t\t? `max-width: ${(150 / 100) * $viewportHeight}px;`\n\t\t: tabletBannerStyle;\n\n\t$: style =\n\t\t$viewportHeight > 800 ||\n\t\t$viewportHeight > $viewportWidth ||\n\t\t$viewportHeight / $viewportWidth > 0.5\n\t\t\t? 'align-items:center;'\n\t\t\t: '';\n\n\tconst navigateBanner = (target) => {\n\t\tif (target === 'right') {\n\t\t\tif ($activeBanner >= $bannerList.length - 1) return;\n\t\t\tplaySfx('changebanner');\n\t\t\treturn activeBanner.update((n) => n + 1);\n\t\t}\n\n\t\tif (target === 'left') {\n\t\t\tif ($activeBanner <= 0) return;\n\t\t\tplaySfx('changebanner');\n\t\t\treturn activeBanner.update((n) => n - 1);\n\t\t}\n\t};\n\n\t// Probability Editor\n\tlet editor = false;\n\t$: banner = $bannerList[$activeBanner]?.type;\n\t$: if (banner === 'beginner') editor = false;\n\n\tconst editProb = () => {\n\t\tplaySfx('bookflip');\n\t\teditor = !editor;\n\t};\n\tsetContext('editprob', editProb);\n\n\tlet showModalReset = false;\n\tlet ModalDeleteCustom = false;\n\n\tsetContext('showModalReset', () => {\n\t\tshowModalReset = true;\n\t});\n\n\tconst confirmModal = () => {\n\t\tplaySfx('modal');\n\t\tplaySfx('bookflip');\n\t\tlocalrate.reset(banner);\n\t\tshowModalReset = false;\n\t\teditor = false;\n\t};\n\n\tconst cancelModal = () => {\n\t\tplaySfx('close');\n\t\tshowModalReset = false;\n\t\tModalDeleteCustom = false;\n\t};\n\n\t// Modal to Delete Custom banner\n\tsetContext('deleteBanner', () => {\n\t\tModalDeleteCustom = true;\n\t\tplaySfx();\n\t});\n\n\tconst deleteDone = () => {\n\t\tconst message = 'Banner Removed';\n\t\tpushToast({ message, type: 'success' });\n\t\tModalDeleteCustom = false;\n\t};\n\tconst deleteError = () => {\n\t\tconst message = 'Failed to Remove';\n\t\tpushToast({ message, type: 'error' });\n\t};\n\n\t// Shortcut\n\tconst onWish = getContext('onWish');\n\thotkeys('right,left,up,down', 'index', (e) => {\n\t\tif ($onWish) return;\n\t\te.preventDefault();\n\t\tconst [to] = hotkeys.getPressedKeyString();\n\t\tif (to === 'up') return navigateBanner('left');\n\t\tif (to === 'down') return navigateBanner('right');\n\t\tnavigateBanner(to);\n\t});\n\n\thotkeys('1,2,3,4,5', 'index', (e) => {\n\t\tif ($onWish) return;\n\t\te.preventDefault();\n\t\tconst to = hotkeys.getPressedKeyString();\n\t\tconst bannerIndex = parseInt(to) - 1;\n\t\tif (to > $bannerList.length) return;\n\t\tactiveBanner.set(bannerIndex);\n\t\tplaySfx('changebanner');\n\t});\n</script>\n\n<div class=\"banner-container\" {style} class:editMode={$editBanner}>\n\t{#if $editBanner}\n\t\t{#key $editID}\n\t\t\t<div class=\"banner-item\" style={mobileBannerStyle} in:fly={{ x: 25, duration: 580 }}>\n\t\t\t\t<CustomEditor />\n\t\t\t</div>\n\t\t{/key}\n\t{:else}\n\t\t{#each $bannerList as data, index}\n\t\t\t{#if $activeBanner === index}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"banner-item\"\n\t\t\t\t\tclass:editorOpen={editor}\n\t\t\t\t\tclass:fullscreen={$isMobile && $mobileMode}\n\t\t\t\t\tstyle={mobileBannerStyle}\n\t\t\t\t\tin:fly={{ x: 25, duration: 580 }}\n\t\t\t\t>\n\t\t\t\t\t<BannerCard {data} {editor} {index} fullscreenEditor={$isMobile && $mobileMode} />\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t{/each}\n\n\t\t<div class=\"navigate\">\n\t\t\t{#if $activeBanner > 0}\n\t\t\t\t<button\n\t\t\t\t\tclass=\"left\"\n\t\t\t\t\tstyle=\"margin-right: auto;\"\n\t\t\t\t\ton:click={() => navigateBanner('left')}\n\t\t\t\t\ttransition:fade|local={{ duration: 200 }}\n\t\t\t\t>\n\t\t\t\t\t<i class=\"gi-arrow-left\" />\n\t\t\t\t</button>\n\t\t\t{/if}\n\n\t\t\t{#if $activeBanner < $bannerList.length - 1}\n\t\t\t\t<button\n\t\t\t\t\tclass=\"left\"\n\t\t\t\t\tstyle=\"margin-left: auto;\"\n\t\t\t\t\ton:click={() => navigateBanner('right')}\n\t\t\t\t\ttransition:fade|local={{ duration: 200 }}\n\t\t\t\t>\n\t\t\t\t\t<i class=\"gi-arrow-right\" />\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</div>\n\t{/if}\n</div>\n\n{#if showModalReset}\n\t<ModalTpl title=\"Back to Default\" on:cancel={cancelModal} on:confirm={confirmModal}>\n\t\t<div class=\"modal-content\">\n\t\t\t<p>\n\t\t\t\t{@html $t('editor.resetPrompt', { values: { banner: $t(`wish.banner.${banner}`) } })}\n\t\t\t</p>\n\t\t</div>\n\t</ModalTpl>\n{/if}\n\n{#if ModalDeleteCustom}\n\t<ModalDelete\n\t\tidToDelete={$customData.itemID}\n\t\ton:cancel={cancelModal}\n\t\ton:done={deleteDone}\n\t\ton:error={deleteError}\n\t/>\n{/if}\n\n<style>\n\t.modal-content {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tfont-family: var(--genshin-font);\n\t\tpadding: 3%;\n\t}\n\n\t.banner-container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\t:global(.mobile) .banner-container {\n\t\talign-items: flex-end;\n\t\tpadding: 0;\n\t}\n\n\t.banner-item {\n\t\tmax-width: 900px;\n\t\twidth: 80%;\n\t\tmax-height: 75vh;\n\t\taspect-ratio: 27/14;\n\t\tperspective: 1000px;\n\t}\n\n\t.editMode .banner-item {\n\t\taspect-ratio: 1080/533;\n\t\tperspective: unset;\n\t\tposition: relative;\n\t}\n\n\t.fullscreen.banner-item {\n\t\tperspective: unset;\n\t}\n\n\t.banner-item.editorOpen {\n\t\tz-index: +10;\n\t}\n\n\t.navigate {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\twidth: 85%;\n\t\ttransform: translate(-50%, -50%);\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\ttransition: all 0.2s;\n\t\tpointer-events: none;\n\t}\n\n\t@media screen and (max-width: 1200px) {\n\t\t.navigate {\n\t\t\twidth: 90%;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 800px) {\n\t\t.navigate {\n\t\t\twidth: 95%;\n\t\t}\n\t}\n\n\t.navigate button {\n\t\tcolor: #ece5d8;\n\t\tfont-size: 2rem;\n\t\tline-height: 0;\n\t\tpointer-events: initial;\n\t}\n\n\t:global(.mobile) .navigate {\n\t\tdisplay: none;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/_footer.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\timport {\n\t\tacquaint,\n\t\tassets,\n\t\tmobileMode,\n\t\tstardust,\n\t\tstarglitter,\n\t\tintertwined,\n\t\twishAmount,\n\t\tactiveVersion,\n\t\tmultipull,\n\t\teditorMode,\n\t\tpreloadVersion,\n\t\teditID,\n\t\tchronicledCourse\n\t} from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { isNewOutfitReleased } from '$lib/helpers/outfit';\n\timport { localBanner, maintenance } from '$lib/helpers/banner-custom';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\timport Icon from '$lib/components/Icon.svelte';\n\timport NoticeMark from '$lib/components/NoticeMark.svelte';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\timport EpitomizedButton from './epitomized-path/WeaponButton.svelte';\n\timport BannerPublisher from '../_custom-banner/Publisher.svelte';\n\n\texport let bannerType = 'beginner';\n\n\t$: isBeginner = bannerType === 'beginner';\n\t$: isEvent = bannerType.match(/(event|chronicled)/);\n\t$: currencyUsed = isEvent ? $intertwined : $acquaint;\n\t$: fateType = isEvent ? 'intertwined' : 'acquaint';\n\t$: isUnlimited = $wishAmount === 'unlimited';\n\n\t// Notice Mark\n\t$: patch = $activeVersion.patch;\n\t$: openedNotices = [`outfits-${patch}`, `recomended-${patch}`];\n\t$: hasNewOutfit = isNewOutfitReleased(patch);\n\n\tconst onWish = getContext('onWish');\n\tconst readyToPull = getContext('readyToPull');\n\n\tconst navigate = getContext('navigate');\n\tconst changePage = (page) => {\n\t\tnavigate(page);\n\t\tif (['inventory', 'history'].includes(page)) return playSfx(page);\n\t\tif (page === 'shop') return playSfx('shopopen');\n\t\treturn playSfx();\n\t};\n\n\tconst roll = getContext('doRoll');\n\tconst handleSingleRollClick = () => {\n\t\tplaySfx('roll');\n\t\troll(1, bannerType);\n\t};\n\tconst handleMultiRollClick = () => {\n\t\tplaySfx('roll');\n\t\troll(isBeginner ? 10 : $multipull || 1, bannerType);\n\t};\n\n\t// Footer for Editor\n\tconst finishAndWish = async () => {\n\t\tplaySfx();\n\t\tconst isComplete = await localBanner.isComplete($editID);\n\t\tif (isComplete) return preloadVersion.set({ patch: 'Custom', phase: $editID });\n\n\t\t// Benner not Complete\n\t\tconst toastMsg = $t('customBanner.completeAllField');\n\t\tpushToast({ message: toastMsg, type: 'error' });\n\t\treturn;\n\t};\n\n\tlet showUploader = false;\n\tconst publishBanner = async () => {\n\t\tplaySfx();\n\t\tconst isComplete = await localBanner.isComplete($editID);\n\t\tif (isComplete) return (showUploader = true);\n\t\tconst toastMsg = $t('customBanner.completeAllField');\n\t\tpushToast({ message: toastMsg, type: 'error' });\n\t};\n\n\tsetContext('closePublisher', () => (showUploader = false));\n\tsetContext('publishDone', () => {\n\t\tpreloadVersion.set({ patch: 'Custom', phase: $editID });\n\t\tshowUploader = false;\n\t\tplaySfx('close');\n\t});\n\n\tsetContext('publishError', () => {\n\t\tconst toastMsg = $t('customBanner.networkError');\n\t\tpushToast({ message: toastMsg, type: 'error' });\n\t\tshowUploader = false;\n\t});\n\n\t// ShortCut\n\tconst appReady = getContext('appReady');\n\thotkeys('enter', 'index', (e) => {\n\t\tif (!$appReady || $onWish || $editorMode) return;\n\t\te.preventDefault();\n\t\thandleMultiRollClick();\n\t});\n\n\thotkeys('shift+enter', 'index', (e) => {\n\t\tif (!$appReady || $onWish || isBeginner || $editorMode) return;\n\t\te.preventDefault();\n\t\thandleSingleRollClick();\n\t});\n\n\thotkeys('s,c,h,d', 'index', (e) => {\n\t\tif (!$appReady || $onWish || $editorMode) return;\n\t\te.preventDefault();\n\t\tconst [key] = hotkeys.getPressedKeyString();\n\t\tconst to = key.toLocaleLowerCase();\n\t\tif (to === 's') return changePage('shop');\n\t\tif (to === 'c') return changePage('inventory');\n\t\tif (to === 'h') return changePage('history');\n\t\tif (to === 'd') return changePage('details');\n\t});\n</script>\n\n{#if showUploader}\n\t<BannerPublisher />\n{/if}\n\n<div id=\"footer\" style=\"width: 100%; height: 100%\">\n\t{#if !$editorMode}\n\t\t<div class=\"footer-info\">\n\t\t\t{#if !$mobileMode}\n\t\t\t\t{#if bannerType === 'weapon-event'}\n\t\t\t\t\t<EpitomizedButton />\n\t\t\t\t{/if}\n\t\t\t\t<div class=\"wish\">\n\t\t\t\t\t<div class=\"starglitter\">\n\t\t\t\t\t\t<Icon type=\"starglitter\" />\n\t\t\t\t\t\t<span> {$starglitter} </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"stardust\">\n\t\t\t\t\t\t<Icon type=\"stardust\" />\n\t\t\t\t\t\t<span> {$stardust} </span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t</div>\n\t{/if}\n\n\t<div class=\"row\" style=\"--bg:url({$assets['button.webp']})\">\n\t\t{#if !$editorMode}\n\t\t\t<div class=\"left menu-button\">\n\t\t\t\t<ButtonGeneral on:click={() => changePage('shop')}>\n\t\t\t\t\t{#if hasNewOutfit}\n\t\t\t\t\t\t<NoticeMark name={openedNotices} style=\"transform: translateX(70%) translateY(-80%)\" />\n\t\t\t\t\t{/if}\n\t\t\t\t\t{$t('shop.text')}\n\t\t\t\t</ButtonGeneral>\n\n\t\t\t\t<ButtonGeneral on:click={() => changePage('inventory')}>\n\t\t\t\t\t{$t('inventory.text')}\n\t\t\t\t</ButtonGeneral>\n\t\t\t\t<ButtonGeneral on:click={() => changePage('history')}>\n\t\t\t\t\t{$t('history.text')}\n\t\t\t\t</ButtonGeneral>\n\t\t\t</div>\n\n\t\t\t{#if (bannerType === 'chronicled' && $chronicledCourse.selected) || bannerType !== 'chronicled'}\n\t\t\t\t<div class=\"right roll-button\">\n\t\t\t\t\t{#if !isBeginner}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"single wish-button\"\n\t\t\t\t\t\t\ton:click={handleSingleRollClick}\n\t\t\t\t\t\t\tdisabled={$onWish || !$readyToPull}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"top\">{$t('wish.rollButton', { values: { count: '×1' } })}</div>\n\t\t\t\t\t\t\t<div class=\"bottom\">\n\t\t\t\t\t\t\t\t<Icon type={fateType} />\n\t\t\t\t\t\t\t\t<span style=\"margin-left: 7px\" class:red={currencyUsed < 1 && !isUnlimited}>\n\t\t\t\t\t\t\t\t\tx 1\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"ten wish-button\"\n\t\t\t\t\t\ton:click={handleMultiRollClick}\n\t\t\t\t\t\tdisabled={$onWish || !$readyToPull}\n\t\t\t\t\t>\n\t\t\t\t\t\t{#if bannerType === 'beginner'}\n\t\t\t\t\t\t\t<span class=\"discount\">-20%</span>\n\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t<div class=\"top\">\n\t\t\t\t\t\t\t{$t('wish.rollButton', { values: { count: `×${isBeginner ? 10 : $multipull}` } })}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"bottom\">\n\t\t\t\t\t\t\t<Icon type={fateType} />\n\t\t\t\t\t\t\t{#if isBeginner}\n\t\t\t\t\t\t\t\t<span style=\"margin-left: 7px\" class:red={currencyUsed < 8 && !isUnlimited}>\n\t\t\t\t\t\t\t\t\tx 8\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tstyle=\"margin-left: 7px\"\n\t\t\t\t\t\t\t\t\tclass:red={currencyUsed < $multipull && !isUnlimited}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tx {$multipull}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t{:else}\n\t\t\t<div class=\"left menu-button\" />\n\t\t\t<div class=\"right roll-button\">\n\t\t\t\t<button\n\t\t\t\t\tclass=\"wish-button\"\n\t\t\t\t\tstyle=\"flex-direction: row; line-height: 0;\"\n\t\t\t\t\ton:click={finishAndWish}\n\t\t\t\t>\n\t\t\t\t\t<i class=\"gi-primo-star\" style=\"transform: translateX(-50%);\" />\n\t\t\t\t\t<span> {$t('customBanner.finishAndWish')} </span>\n\t\t\t\t</button>\n\n\t\t\t\t{#if !maintenance}\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"wish-button\"\n\t\t\t\t\t\tstyle=\"flex-direction: row; line-height: 0;\"\n\t\t\t\t\t\ton:click={publishBanner}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i class=\"gi-share\" style=\"transform: translateX(-50%);\" />\n\t\t\t\t\t\t{#await localBanner.isHostedBanner($editID)}\n\t\t\t\t\t\t\t<span> {$t('customBanner.publish')} </span>\n\t\t\t\t\t\t{:then isHosted}\n\t\t\t\t\t\t\t{#if isHosted}\n\t\t\t\t\t\t\t\t<span> {$t('customBanner.updateAndShare')} </span>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<span> {$t('customBanner.publish')} </span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/await}\n\t\t\t\t\t</button>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t#footer {\n\t\tposition: relative;\n\t}\n\n\t.red {\n\t\tcolor: #de2f22 !important;\n\t}\n\n\t.footer-info {\n\t\tposition: absolute;\n\t\tleft: 5%;\n\t\tbottom: 75%;\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpointer-events: none;\n\t}\n\n\t.wish > div {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tmargin-right: 5px;\n\t\tpadding: 2px 20px 2px 2px;\n\t\tfont-size: 0.9rem;\n\t}\n\t.wish span {\n\t\tmargin-left: 10px;\n\t\tcolor: #fff;\n\t\ttext-shadow: 0 0 3px rgba(0, 0, 0, 0.5);\n\t}\n\n\t.wish-button {\n\t\ttransform: scale(1);\n\t\ttransition: all 0.2s;\n\t\tcolor: #4a5265;\n\t\ttext-decoration: none;\n\t\tz-index: +5;\n\t\tposition: relative;\n\t}\n\n\t.wish-button:active {\n\t\tfilter: brightness(85%);\n\t}\n\tbutton:active:not(:disabled) {\n\t\ttransform: scale(0.95);\n\t}\n\n\t.row {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tpadding: 0 5%;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t}\n\n\t.roll-button {\n\t\ttext-align: right;\n\t}\n\n\t.roll-button button {\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\twidth: 230px;\n\t\taspect-ratio: 355/88;\n\t\tmargin: 0 5px;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tflex-direction: column;\n\t\tcolor: #a49a90;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.roll-button button:disabled {\n\t\tfilter: brightness(0.5);\n\t}\n\n\t.roll-button button .bottom {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.discount {\n\t\tbackground-color: #8ab958;\n\t\tposition: absolute;\n\t\tz-index: +2;\n\t\tleft: 15%;\n\t\ttop: -5%;\n\t\tborder-radius: 20px;\n\t\tcolor: #fff;\n\t\ttransform: scale(0.8) translateX(-50%);\n\t\tpadding: 0.2rem 0.5rem;\n\t}\n\n\t@media screen and (min-width: 750px) {\n\t\t.discount {\n\t\t\tfont-size: 0.7rem;\n\t\t}\n\t\t.roll-button {\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n\n\t/* mobile */\n\t:global(.mobile) .row {\n\t\tpadding: 1rem 0;\n\t\talign-items: flex-end;\n\t}\n\n\t:global(.mobile .menu-button) {\n\t\tpadding-left: 1%;\n\t\twhite-space: nowrap;\n\t}\n\t:global(.mobile) .roll-button {\n\t\tmargin-right: 40px !important;\n\t\twhite-space: nowrap;\n\t}\n\t:global(.mobile) .roll-button button {\n\t\tfont-size: 0.75rem;\n\t}\n\t:global(.mobile) .roll-button :global(img) {\n\t\ttransform: scale(0.7);\n\t}\n\t:global(.mobile) .bottom {\n\t\tmargin-top: -3px;\n\t}\n\n\t/* Media Query */\n\n\t@media screen and (max-width: 925px) {\n\t\tbutton {\n\t\t\tpadding: 2px 15px;\n\t\t\tmargin: 2px 5px;\n\t\t}\n\n\t\t.roll-button button {\n\t\t\twidth: 175px;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.roll-button :global(img) {\n\t\t\ttransform: scale(0.8);\n\t\t}\n\t}\n\n\t@media screen and (max-width: 700px) {\n\t\t.roll-button {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\t@media screen and (max-width: 550px) {\n\t\t.menu-button {\n\t\t\twidth: 100%;\n\t\t}\n\t\t.roll-button {\n\t\t\twidth: auto;\n\t\t}\n\t}\n\n\t@media screen and (max-width: 400px) {\n\t\t.roll-button button {\n\t\t\twidth: 140px;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.roll-button :global(img) {\n\t\t\ttransform: scale(0.7);\n\t\t}\n\t\t.roll-button .bottom {\n\t\t\tmargin-top: -3px;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/_header.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport {\n\t\tacquaint,\n\t\tintertwined,\n\t\tmobileMode,\n\t\tprimogem,\n\t\tstardust,\n\t\tstarglitter,\n\t\tviewportHeight,\n\t\tassets,\n\t\tisPWA,\n\t\tisMobile,\n\t\twishAmount,\n\t\tbannerList,\n\t\tactiveBanner,\n\t\teditorMode,\n\t\tisCustomBanner\n\t} from '$lib/store/app-stores';\n\n\timport MyFund from '$lib/components/MyFund.svelte';\n\timport BannerButton from './_banner-button.svelte';\n\n\texport let bannerType = '';\n\n\t$: isEvent = bannerType.match(/(event|chronicled)/);\n\t$: balance = isEvent ? $intertwined : $acquaint;\n\t$: unlimitedWish = $wishAmount === 'unlimited';\n\n\tconst inTransition = (node, args) => {\n\t\treturn args.mobile\n\t\t\t? fly(node, { x: -20, duration: 1000 })\n\t\t\t: fly(node, { y: -20, duration: 1000 });\n\t};\n\n\tconst selectBanner = (banner) => {\n\t\tif ($activeBanner === banner) return;\n\t\tactiveBanner.set(banner);\n\t\tplaySfx('changebanner');\n\t};\n\n\tconst chatToggle = getContext('chatToggle');\n\tconst navigate = getContext('navigate');\n\n\tconst previousClick = () => {\n\t\tnavigate('allbanners');\n\t\tplaySfx();\n\t};\n\n\tconst handleMenu = getContext('handleMenu');\n\t$: headerHeightstyle = $mobileMode ? `height: ${$viewportHeight}px` : '';\n\t$: fullscreen = $viewportHeight === window.screen.height;\n\n\tconst handleFullscreen = () => {\n\t\tif (!fullscreen) {\n\t\t\tconst body = document.body;\n\t\t\tif (body.requestFullscreen) return body.requestFullscreen();\n\t\t\tif (body.webkitRequestFullscreen) return body.webkitRequestFullscreen();\n\t\t\tif (body.msRequestFullscreen) return body?.msRequestFullscreen();\n\t\t} else {\n\t\t\tif (document.exitFullscreen) return document?.exitFullscreen();\n\t\t\tif (document.webkitExitFullscreen) return document?.webkitExitFullscreen();\n\t\t\tif (document.msExitFullscreen) return document?.msExitFullscreen();\n\t\t}\n\t};\n\n\t// Shortcut\n\tconst onWish = getContext('onWish');\n\thotkeys('esc', 'index', (e) => {\n\t\tif ($onWish) return;\n\t\te.preventDefault();\n\t\tpreviousClick();\n\t});\n\n\thotkeys('m', 'index', (e) => {\n\t\tif ($onWish) return;\n\t\te.preventDefault();\n\t\thandleMenu();\n\t});\n</script>\n\n<div id=\"header\" style={headerHeightstyle}>\n\t<div class=\"top\" in:fly={{ y: -20, duration: 800 }}>\n\t\t<h1 class=\"wish-title\">\n\t\t\t<img src={$assets['brand.png']} alt=\"Brand\" crossorigin=\"anonymous\" />\n\n\t\t\t{#if !$editorMode}\n\t\t\t\t<span> {$t('wish.wishTitle')} </span>\n\t\t\t{:else}\n\t\t\t\t<span> {$t('customBanner.title')} </span>\n\t\t\t{/if}\n\n\t\t\t<button class=\"help\" on:click={handleMenu} title=\"Setting\" aria-label=\"Setting\">\n\t\t\t\t<i class=\"gi-help\" />\n\t\t\t</button>\n\t\t\t<button class=\"chat\" on:click={chatToggle} title=\"Chats\" aria-label=\"Chats\">\n\t\t\t\t<i class=\"gi-chat\" />\n\t\t\t</button>\n\n\t\t\t{#if !$isPWA || !$isMobile}\n\t\t\t\t<button\n\t\t\t\t\tclass=\"fullscreen\"\n\t\t\t\t\ton:click={handleFullscreen}\n\t\t\t\t\ttitle=\"FullScreen\"\n\t\t\t\t\taria-label=\"Fullscreen\"\n\t\t\t\t>\n\t\t\t\t\t<i class=\"gi-{!fullscreen ? 'fullscreen' : 'shrink'}\" />\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</h1>\n\t\t<div class=\"budget\">\n\t\t\t{#if !$editorMode}\n\t\t\t\t<div class=\"fates\">\n\t\t\t\t\t{#if $mobileMode}\n\t\t\t\t\t\t<MyFund type=\"starglitter\">\n\t\t\t\t\t\t\t{$starglitter}\n\t\t\t\t\t\t</MyFund>\n\t\t\t\t\t\t<MyFund type=\"stardust\">\n\t\t\t\t\t\t\t{$stardust}\n\t\t\t\t\t\t</MyFund>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<MyFund type=\"primogem\" plusbutton>\n\t\t\t\t\t\t{unlimitedWish ? '∞' : $primogem}\n\t\t\t\t\t</MyFund>\n\t\t\t\t\t<MyFund type={isEvent ? 'intertwined' : 'acquaint'}>\n\t\t\t\t\t\t{unlimitedWish ? '∞' : balance}\n\t\t\t\t\t</MyFund>\n\t\t\t\t</div>\n\n\t\t\t\t<button class=\"close\" on:click={previousClick} title=\"Change Banner\">\n\t\t\t\t\t<i class=\"gi-close\" />\n\t\t\t\t</button>\n\t\t\t{:else}\n\t\t\t\t<button\n\t\t\t\t\tclass=\"close\"\n\t\t\t\t\ttitle=\"Cancel Edit\"\n\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\teditorMode.set(false);\n\t\t\t\t\t\tplaySfx('close');\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<i class=\"gi-close\" />\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n\n\t{#if !$editorMode && !$isCustomBanner}\n\t\t<div class=\"banner-button\" in:inTransition={{ mobile: $mobileMode }}>\n\t\t\t<div class=\"bg\" style={headerHeightstyle}>\n\t\t\t\t<img src={$assets['brand.png']} alt=\"Brand\" crossorigin=\"anonymous\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"button-wrapper\" style={$bannerList.length > 5 ? 'flex-wrap: wrap' : ''}>\n\t\t\t\t{#each $bannerList as { type, featured, character, region }, i}\n\t\t\t\t\t<BannerButton\n\t\t\t\t\t\t{type}\n\t\t\t\t\t\t{character}\n\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\tfeatured={featured || region}\n\t\t\t\t\t\tactive={$activeBanner === i}\n\t\t\t\t\t\ton:click={() => selectBanner(i)}\n\t\t\t\t\t/>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t</div>\n\t{:else}\n\t\t<div class=\"banner-button\" in:inTransition={{ mobile: $mobileMode }}>\n\t\t\t<div class=\"bg\" />\n\t\t\t<div class=\"button-wrapper\" />\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t#header {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tpadding: 30px 2%;\n\t\tz-index: 5;\n\t}\n\n\th1 button {\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tcolor: #fff;\n\t\tmargin-left: 0.7rem;\n\t\tline-height: 0;\n\t\ttransition: all 0.2s;\n\t}\n\n\th1 button:hover {\n\t\tbackground-color: var(--tertiary-color);\n\t\tcolor: #3a4156;\n\t}\n\n\t.help {\n\t\tborder-radius: 50px;\n\t\tborder: 0.15rem solid #fff;\n\t\twidth: 1.7rem;\n\t\theight: 1.7rem;\n\t}\n\n\t.fullscreen,\n\t.chat {\n\t\tborder-color: transparent;\n\t\ttransform: scale(1.3);\n\t\twidth: 1.3rem;\n\t\theight: 1.3rem;\n\t}\n\n\t.chat {\n\t\tborder-radius: 100%;\n\t}\n\n\t.bg {\n\t\tdisplay: none;\n\t}\n\t.top {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t}\n\n\t.wish-title {\n\t\tcolor: #fff;\n\t\ttext-transform: capitalize;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\ttext-align: left;\n\t\tfont-size: 110%;\n\t}\n\n\t.wish-title img {\n\t\twidth: 30px;\n\t\tmargin-right: 15px;\n\t}\n\n\t.budget {\n\t\ttext-align: right;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t}\n\n\t.banner-button,\n\t.button-wrapper {\n\t\ttext-align: center;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t\tz-index: 10;\n\t}\n\n\t/* mobile */\n\n\t:global(.mobile) #header {\n\t\tpadding: 0 !important;\n\t}\n\n\t:global(.mobile) .top {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tright: 2%;\n\t\twidth: calc(100% - 100px);\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding-right: 4%;\n\t}\n\n\t:global(.mobile) .wish-title img {\n\t\tdisplay: none;\n\t}\n\n\t:global(.mobile) .button-wrapper {\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 120px;\n\t\tmargin-top: 0;\n\t\theight: 100%;\n\t\tjustify-content: flex-start;\n\t\tpadding-top: 2.5rem;\n\t}\n\n\t:global(.mobile) .bg {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 50%;\n\t\twidth: 40px;\n\t\tbackground-color: rgba(0, 0, 0, 0.4);\n\t\tz-index: -1;\n\t\ttransform: translateX(-50%);\n\t\ttext-align: center;\n\t\tborder: solid rgba(207, 186, 143, 0.5);\n\t\tborder-width: 0 2px;\n\t}\n\t.bg > img {\n\t\twidth: 60%;\n\t\tmargin-top: 3px;\n\t}\n\n\t@media screen and (min-width: 975px) {\n\t\t:global(main):not(.mobile) .banner-button {\n\t\t\tposition: absolute;\n\t\t\tmax-width: 50%;\n\t\t\ttop: 20px;\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\t@media screen and (max-width: 975px) {\n\t\t:global(main):not(.mobile) .button-wrapper {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/_out-of-primogem.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { acquaint, intertwined, multipull, primogem } from '$lib/store/app-stores';\n\timport { localBalance } from '$lib/helpers/dataAPI/api-localstore';\n\timport ModalTpl from '$lib/components/ModalTpl.svelte';\n\n\texport let isEventBanner = false;\n\texport let rollCost = 0;\n\n\tconst closeModal = getContext('closeModal');\n\tconst reroll = getContext('reroll');\n\n\tconst currencyUsed = isEventBanner ? $intertwined : $acquaint;\n\tconst currencyName = isEventBanner ? $t('shop.item.intertwined') : $t('shop.item.acquaint');\n\n\tconst fateNeeded = rollCost - currencyUsed;\n\tconst primoNeeded = fateNeeded * 160;\n\tconst insufficientPrimo = $primogem < primoNeeded;\n\n\tconst convertAndRoll = async () => {\n\t\tawait updateBalance();\n\t\treturn reroll($multipull);\n\t};\n\n\tconst updateBalance = async () => {\n\t\tnew Promise((resolve, reject) => {\n\t\t\tif (insufficientPrimo) return reject('not enough Primogem');\n\t\t\tprimogem.update((n) => {\n\t\t\t\tconst v = n - primoNeeded;\n\t\t\t\tlocalBalance.set('primogem', v);\n\t\t\t\tresolve('ok');\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\t\tif (isEventBanner) {\n\t\t\t\tintertwined.update((n) => {\n\t\t\t\t\tconst v = n + fateNeeded;\n\t\t\t\t\tlocalBalance.set('intertwined', v);\n\t\t\t\t\tresolve('ok');\n\t\t\t\t\treturn v;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tacquaint.update((n) => {\n\t\t\t\t\tconst v = n + fateNeeded;\n\t\t\t\t\tlocalBalance.set('acquaint', v);\n\t\t\t\t\tresolve('ok');\n\t\t\t\t\treturn v;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n</script>\n\n<ModalTpl\n\ttitle={$t('shop.paimonBargains')}\n\ton:cancel={closeModal}\n\ton:confirm={convertAndRoll}\n\tdisabled={insufficientPrimo}\n>\n\t<div class=\"exchange\">\n\t\t<div>\n\t\t\t{@html $t('shop.fateNeeded', {\n\t\t\t\tvalues: {\n\t\t\t\t\trollQty: `<span class=\"yellow\">${fateNeeded}</span>`,\n\t\t\t\t\tcurrency: currencyName\n\t\t\t\t}\n\t\t\t})}\n\t\t\t<br />\n\n\t\t\t{@html $t('shop.primoNeeded', {\n\t\t\t\tvalues: {\n\t\t\t\t\tprimoPrice: `\n\t\t\t\t\t\t<span class=\"${insufficientPrimo ? 'red' : 'yellow'}\">\n\t\t\t\t\t\t\t${primoNeeded}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t`\n\t\t\t\t}\n\t\t\t})}\n\n\t\t\t{#if insufficientPrimo}\n\t\t\t\t<br />\n\t\t\t\t<br />\n\t\t\t\t<span class=\"red\">{$t('shop.insufficient')}</span>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</ModalTpl>\n\n<style>\n\t.exchange :global(.red) {\n\t\tcolor: #de2f22 !important;\n\t}\n\t.exchange :global(.yellow) {\n\t\tcolor: rgb(218, 177, 45) !important;\n\t}\n\t.exchange {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/BannerCard.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets, isCustomBanner } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport FrameBeginner from './_frame-beginner.svelte';\n\timport FrameCharacter from './_frame-character.svelte';\n\timport FrameWeapon from './_frame-weapon.svelte';\n\timport FrameStandard from './_frame-standard.svelte';\n\timport FrameCustom from './_frame-custom.svelte';\n\timport BannerImage from './_banner-image.svelte';\n\timport ProbEditor from './_probability-editor.svelte';\n\timport ChronicledSpace from './_chronicled/bannerSpace.svelte';\n\timport { isSafari } from '$lib/helpers/mobileDetect';\n\n\texport let data = {};\n\texport let index = -1;\n\texport let fullscreenEditor = false;\n\texport let editor = false;\n\n\t// prettier-ignore\n\tlet type, featured, character, bannerName, rateup, textOffset, charTitle, vision, images, artPosition;\n\t// prettier-ignore\n\t$: ({ type, featured, character, bannerName, rateup, textOffset, charTitle, vision, images, artPosition, watermark } = data);\n\n\tlet clientWidth;\n\tlet clientHeight;\n\n\tlet animate = !!editor;\n\tlet imageError = false;\n\tsetContext('imageError', () => (imageError = true));\n\tconst editProb = getContext('editprob');\n\tconst openRateEditor = () => {\n\t\tanimate = true;\n\t\teditProb();\n\t};\n\tconst closeRateEditor = () => {\n\t\tif (editor) return;\n\t\tanimate = false;\n\t};\n\n\tconst navigate = getContext('navigate');\n\tconst openDetails = () => {\n\t\tnavigate('details');\n\t\treturn playSfx();\n\t};\n</script>\n\n<div\n\tclass=\"card\"\n\tclass:editor\n\tclass:fullscreenEditor\n\tclass:animate\n\tclass:safari={isSafari()}\n\tbind:clientWidth\n\tbind:clientHeight\n\tstyle=\"--content-width:{clientWidth}px; --content-height:{clientHeight}px\"\n\ton:transitionend|self={closeRateEditor}\n>\n\t<div class=\"back\" on:mousedown|self={openRateEditor}>\n\t\t{#if editor}\n\t\t\t<ProbEditor {fullscreenEditor} element={vision} />\n\t\t{/if}\n\t</div>\n\t<div class=\"front\">\n\t\t<!-- Custom Banner -->\n\t\t{#if $isCustomBanner}\n\t\t\t<BannerImage\n\t\t\t\tcustom\n\t\t\t\tsrc={images?.artURL}\n\t\t\t\talt={bannerName}\n\t\t\t\twrapperClass=\"card-image skeleton\"\n\t\t\t\t{artPosition}\n\t\t\t\t{vision}\n\t\t\t\t{rateup}\n\t\t\t/>\n\t\t\t<div class=\"frame skeleton\">\n\t\t\t\t<FrameCustom {bannerName} {character} {charTitle} {vision} {watermark} />\n\t\t\t</div>\n\n\t\t\t<!-- Beginner Banner -->\n\t\t{:else if type === 'beginner'}\n\t\t\t<BannerImage\n\t\t\t\tsrc={$assets['beginner']}\n\t\t\t\tisError={imageError}\n\t\t\t\talt=\"Weapon Banner\"\n\t\t\t\twrapperClass=\"card-image skeleton\"\n\t\t\t/>\n\t\t\t<div class=\"frame skeleton\">\n\t\t\t\t<FrameBeginner {character} />\n\t\t\t</div>\n\n\t\t\t<!-- Weapon Banner -->\n\t\t{:else if type === 'weapon-event'}\n\t\t\t<BannerImage\n\t\t\t\tisError={imageError}\n\t\t\t\tsrc={$assets[bannerName]}\n\t\t\t\talt=\"Weapon Banner\"\n\t\t\t\twrapperClass=\"card-image skeleton-event\"\n\t\t\t/>\n\t\t\t<div class=\"frame skeleton-event\">\n\t\t\t\t<FrameWeapon {featured} {rateup} {textOffset} />\n\t\t\t</div>\n\n\t\t\t<!-- Character Banner -->\n\t\t{:else if type === 'character-event'}\n\t\t\t<BannerImage\n\t\t\t\tisError={imageError}\n\t\t\t\tsrc={$assets[bannerName]}\n\t\t\t\talt=\"Character Event Banner\"\n\t\t\t\twrapperClass=\"card-image skeleton-event\"\n\t\t\t/>\n\t\t\t{#if !bannerName || imageError}\n\t\t\t\t<div class=\"character\" in:fly={{ x: 20, duration: 850 }}>\n\t\t\t\t\t<img\n\t\t\t\t\t\tclass=\"splash-art\"\n\t\t\t\t\t\tsrc={$assets[`splash-art/${character}`]}\n\t\t\t\t\t\talt=\"character\"\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t\ton:error={(e) => e.target.remove()}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t\t<div class=\"frame skeleton-event\">\n\t\t\t\t<FrameCharacter {character} {textOffset} {bannerName} event2={index === 2} />\n\t\t\t</div>\n\n\t\t\t<!-- Chronicled Banner -->\n\t\t{:else if type === 'chronicled'}\n\t\t\t<ChronicledSpace />\n\n\t\t\t<!-- Standard Banner -->\n\t\t{:else if type === 'standard'}\n\t\t\t<BannerImage\n\t\t\t\tisError={imageError}\n\t\t\t\tsrc={$assets[bannerName]}\n\t\t\t\talt=\"Standard Banner\"\n\t\t\t\twrapperClass=\"card-image {imageError ? 'skeleton' : ''}\"\n\t\t\t/>\n\t\t\t<div class=\"frame\">\n\t\t\t\t<FrameStandard {bannerName} />\n\t\t\t</div>\n\t\t{/if}\n\n\t\t<div class=\"info\">\n\t\t\t<button class=\"detail\" on:click={openDetails}> {$t('details.text')} </button>\n\t\t\t{#if type !== 'beginner'}\n\t\t\t\t<button class=\"gear\" on:click={openRateEditor}><i class=\"gi-gear\" /></button>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.card,\n\t.front,\n\t.back,\n\t.card :global(.frame) {\n\t\twidth: 100%;\n\t\theight: fit-content;\n\t\taspect-ratio: 27/14;\n\t}\n\n\t.back {\n\t\tposition: absolute;\n\t\ttransform: rotateX(180deg);\n\t\tz-index: +9;\n\t\ttransition: all 0.5s;\n\t}\n\n\t.editor.fullscreenEditor .back {\n\t\tposition: fixed;\n\t\ttransform: unset;\n\t\taspect-ratio: unset;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: rgba(0, 0, 0, 0.25);\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackdrop-filter: blur(8px);\n\t\tz-index: +15;\n\t}\n\n\t.front,\n\t.back {\n\t\t-webkit-backface-visibility: hidden;\n\t\tbackface-visibility: hidden;\n\t}\n\n\t.editor .front {\n\t\ttransform: rotateX(0deg);\n\t}\n\n\t.card :global(.skeleton-event) {\n\t\taspect-ratio: 1080/533;\n\t}\n\t.card :global(.skeleton) {\n\t\taspect-ratio: 738.55/382.95;\n\t}\n\t.card :global(h1 .block) {\n\t\tdisplay: block;\n\t}\n\n\t.card {\n\t\tposition: relative;\n\t}\n\n\t.card.animate:not(.fullscreenEditor) {\n\t\ttransition: transform 0.5s;\n\t\ttransform-style: preserve-3d;\n\t}\n\n\t.card.editor:not(.fullscreenEditor) {\n\t\ttransform: rotateX(180deg);\n\t}\n\n\t.card.editor.safari:not(.fullscreenEditor) .front {\n\t\tdisplay: none;\n\t}\n\n\t.editor .front {\n\t\tpointer-events: none;\n\t}\n\n\t.card :global(.frame),\n\t.card :global(.card-image) {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t}\n\t.card:not(.fullscreenEditor) :global(.frame),\n\t.card:not(.fullscreenEditor) :global(.card-image) {\n\t\tz-index: +10;\n\t}\n\n\t.character {\n\t\tposition: absolute;\n\t\tz-index: +10;\n\t\theight: 100%;\n\t\tright: 0;\n\t\ttop: 0;\n\t\toverflow: hidden;\n\t}\n\n\timg.splash-art {\n\t\theight: 150%;\n\t}\n\n\t.info {\n\t\tposition: absolute;\n\t\tleft: 5%;\n\t\tbottom: 4%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tz-index: +10;\n\t}\n\n\t:global(.mobile) .info {\n\t\tz-index: +10;\n\t}\n\n\t.info button {\n\t\tbackground-color: #eee8e3;\n\t\tcolor: rgba(0, 0, 0, 0.65);\n\t\tborder-radius: 50px;\n\t\tborder: #e2d7b6 0.12rem solid;\n\t\tfont-size: calc(1.75 / 100 * var(--content-width));\n\t\ttransition: background 0.25s, color 0.25s;\n\t}\n\n\t.info button:hover {\n\t\tbackground-color: #e0ddd4;\n\t\tcolor: rgba(0, 0, 0, 1);\n\t}\n\n\t.info button.gear {\n\t\twidth: calc(3.5 / 100 * var(--content-width));\n\t\tfont-size: calc(2.7 / 100 * var(--content-width));\n\t\taspect-ratio: 1/1;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tmargin-left: calc(1 / 100 * var(--content-width));\n\t}\n\n\t.info button.detail {\n\t\tpadding: calc(0.5 / 100 * var(--content-width)) calc(2.5 / 100 * var(--content-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/__dropnotes.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\n\texport let element = '';\n\texport let banner = '';\n</script>\n\n<div class=\"dropNotes\" class:chronicle={banner === 'chronicled'}>\n\t<div class=\"scrollable\">\n\t\t<div class=\"set card-stroke\">\n\t\t\t{#if banner === 'beginner'}\n\t\t\t\t{$t('wish.banner.beginnerSet', { values: { character: $t('noelle.name') } })}\n\t\t\t{:else}\n\t\t\t\t{$t('wish.banner.probIncreased')}\n\t\t\t{/if}\n\t\t</div>\n\t\t<div class=\"desc bg-{element}\" style=\"opacity: 90%;\">\n\t\t\t<div class=\"icon\">\n\t\t\t\t<i class=\"gi-primo-star\" />\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t{$t('wish.banner.wishDescription')}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"note card-stroke\">\n\t\t\t{#if banner !== 'chronicled'}\n\t\t\t\t{#if banner.match('character')}\n\t\t\t\t\t{$t('wish.banner.eventNote')}\n\t\t\t\t{/if}\n\t\t\t\t{#if banner === 'standard'}\n\t\t\t\t\t{$t('wish.banner.standardNote')}\n\t\t\t\t{/if}\n\n\t\t\t\t{#if banner === 'beginner'}\n\t\t\t\t\t{$t('wish.banner.beginnerNote')}\n\t\t\t\t{:else}\n\t\t\t\t\t{$t('wish.banner.viewDetails')}\n\t\t\t\t{/if}\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.dropNotes {\n\t\tposition: relative;\n\t}\n\t.dropNotes.chronicle .scrollable {\n\t\tmax-height: calc(22 / 100 * var(--content-height));\n\t\toverflow: auto;\n\t}\n\n\t.dropNotes::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\theight: 100%;\n\t\twidth: calc(0.55 / 100 * var(--content-width));\n\t\tleft: calc(-3.045 / 100 * var(--content-width));\n\t\tbackground-color: #565654;\n\t}\n\n\t.set {\n\t\tfont-size: calc(2.2 / 100 * var(--content-width));\n\t\tline-height: 110%;\n\t}\n\n\t.desc {\n\t\tcolor: #fff;\n\t\tmin-height: calc(9 / 100 * var(--content-height));\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmargin: calc(0.7 / 100 * var(--content-width)) 0;\n\t}\n\t.desc.bg-beginner {\n\t\tbackground-color: rgba(224, 85, 94, 0.85);\n\t}\n\t.desc.bg-standard {\n\t\tbackground-color: rgba(101, 107, 202, 0.9);\n\t}\n\t:global(.old) .desc.bg-standard {\n\t\tbackground-color: rgba(48, 143, 148, 0.9);\n\t}\n\n\t.icon {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tpadding: calc(1 / 100 * var(--content-width));\n\t\tfont-size: calc(1.1 / 100 * var(--content-width));\n\t}\n\n\t.desc .text {\n\t\twidth: calc(34 / 100 * var(--content-width));\n\t\tpadding: calc(0.3 / 100 * var(--content-width));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_banner-image.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { assets } from '$lib/store/app-stores';\n\timport BannerArt from '../../_custom-banner/BannerEditor/BannerArt.svelte';\n\n\texport let src = '';\n\texport let alt = '';\n\texport let wrapperClass = '';\n\texport let isError = false;\n\n\texport let custom = false;\n\texport let vision = '';\n\texport let artPosition = {};\n\texport let rateup = [];\n\n\tconst imageError = getContext('imageError');\n</script>\n\n<div\n\tclass:image-error={isError}\n\tclass=\"wrapper {wrapperClass}\"\n\tstyle=\"min-height: 100px; width: 100%;\"\n>\n\t{#if !isError}\n\t\t{#if custom}\n\t\t\t<img\n\t\t\t\tsrc={$assets[`blank/character-${vision}`]}\n\t\t\t\talt=\"background banner\"\n\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\tclass=\"art-bg\"\n\t\t\t/>\n\t\t\t{#key artPosition}\n\t\t\t\t<BannerArt artURL={src} bannerPosition={artPosition?.banner} {rateup} />\n\t\t\t{/key}\n\t\t{:else}\n\t\t\t<picture style=\"position: relative; width: 100%; overflow: hidden\">\n\t\t\t\t<img {src} {alt} on:error={imageError} crossorigin=\"anonymous\" />\n\t\t\t</picture>\n\t\t{/if}\n\t{/if}\n</div>\n\n<style>\n\tpicture,\n\timg {\n\t\twidth: 100%;\n\t\tdisplay: block;\n\t}\n\t.art-bg {\n\t\taspect-ratio: 1080/533;\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t}\n\t.image-error {\n\t\tbackground-image: linear-gradient(to top, #eee8e3 50%, #f7f5f4);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/_epitomized.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport EpitomizedIcon from '../../epitomized-path/_icon.svelte';\n\n\texport let courseData = {};\n\tlet selected, type, point;\n\t$: ({ type, weaponType, selected, point } = courseData);\n\t$: src = type === 'weapon' ? $assets[selected] : $assets[`face/${selected}`];\n\n\tconst openModal = getContext('handleEpitomizedModal');\n\tconst openDetail = () => {\n\t\tplaySfx();\n\t\topenModal();\n\t};\n</script>\n\n<div class=\"courseActive\">\n\t<button class=\"box\" on:click={openDetail}>\n\t\t<div class=\"icon\" class:active={point > 0}>\n\t\t\t<EpitomizedIcon blank responsive steps=\"1\" {point} />\n\t\t\t<picture class=\"{type} {weaponType}\">\n\t\t\t\t<img {src} alt=\"Item Icon\" />\n\t\t\t</picture>\n\t\t</div>\n\n\t\t<div class=\"point\">\n\t\t\t<div class=\"frame\">\n\t\t\t\t<span> {$t('epitomizedPath.fatePoint')}:</span>\n\t\t\t\t<div class=\"number\"><span>{point || 0}</span>/1</div>\n\t\t\t\t<i class=\"gi-refresh\" />\n\t\t\t</div>\n\t\t</div>\n\t</button>\n</div>\n\n<style>\n\t.courseActive {\n\t\tmargin-top: auto;\n\t\twidth: 100%;\n\t\theight: calc(0.125 * var(--content-width));\n\t\tmargin-bottom: 2.75%;\n\t}\n\t.box {\n\t\theight: inherit;\n\t\tposition: relative;\n\t}\n\t.icon {\n\t\theight: 100%;\n\t\taspect-ratio: 1/1;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\t.icon:not(.active)::after {\n\t\tcontent: '';\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%) scale(1.05);\n\t\tborder-radius: 100%;\n\t\tborder: calc(0.002 * var(--content-width)) solid #edd8ab;\n\t}\n\tpicture {\n\t\theight: 60%;\n\t\taspect-ratio: 1/1;\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tborder-radius: 100%;\n\t\toverflow: hidden;\n\t}\n\timg {\n\t\twidth: 100%;\n\t}\n\t.weapon:not(.catalyst) img {\n\t\ttransform: translate(-5%, -10%) rotate(13deg);\n\t}\n\n\t/* Point */\n\t.point {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translate(10%, -50%);\n\t\taspect-ratio: 708/156;\n\t\twidth: calc(0.3 * var(--content-width));\n\t\tfont-size: calc(0.02 * var(--content-width));\n\t\tbackground-color: #ece5db;\n\t\tcolor: var(--text-color);\n\t\tfilter: drop-shadow(0 0 calc(0.002 * var(--content-width)) rgba(179, 140, 81, 1));\n\t}\n\n\t.point .frame {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tpadding-right: 2%;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\t\tline-height: 0;\n\t\tposition: relative;\n\t}\n\n\t.frame::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tright: -3%;\n\t\tborder-radius: 2rem;\n\t\tbackground-color: #ece5db;\n\t\ttransform: translateY(-50%);\n\t\tz-index: -1;\n\t}\n\t.frame::after {\n\t\tcontent: '';\n\t\topacity: 0.4;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tright: -1.5%;\n\t\twidth: 100%;\n\t\theight: 90%;\n\t\ttransform: translateY(-50%) rotate(180deg);\n\t\tbackground-size: contain;\n\t\tbackground-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAACcCAMAAABPyU0CAAAAOVBMVEUAAADTu4vUvI7Uuo3TvI7TvI7UvI7TvozTu43TvI7Su47Pv4/fv43TvI7Tu43SvIzVuo3UvI/TvI7Io+VzAAAAEnRSTlMAQL9goL/eIHDvsBAQkIBQML8hIpUyAAADO0lEQVR42uzd22oCMRSG0dixM2oVZb//wzaOhzoWerjzh7VAxfuPkExibD9ZF7yg97YgYvKImHj/jHho8FJWIiadiIknYuKJmHgiJp6IiSdi4omYeL9G/FYLIublrOqZiAkjYuL9JeJVgxwiJp6IiSdi4omYeCImnoiJJ2LiiZh4IiaeiIknYuKJmHgiJp6IiSdi4omYeCImnoiJJ2LiiZh4Iibet4inrYjJ8hzxfqwaPxrkeI74ULWdGgR5injo3zcNkiwjnsaqdYMoy4jXVaPJBGEWEQ+uDyTQImKTCRI9RrwxmSDRQ8TTaDJBoh7x46quQZyviCerOjL1cg3EZLtHPG0NxGS6RzwYiAl1j9ijCVLdIj4aiEl1i3hns45U14in/mmzjkzXiIeq9waRrhG/WdYRq0dsNkG2Xq/ZBNkuEe/8so5cl4jHqlODTHPEJzsdBJsjHqp2DULNEa9NiQk2Rzy6fo1gPeL5bd8gVO/Xuo5s54iPtjpIdo54U3VokOoc8cHDCZKdI95VHRuk6hH7lw6y9YidnCDbHLHDxCTrEc8viCVi4omYeCImnoiJJ2LiecRGPBETz7Yz8eYDQO6wIpmjmMT7bO8OU1oHwgCKpiCtIdDHy/4XKxOjOFUQ//XCOWu4hJkk34yf4sk7xpMcO0HZiPhmUJQyI/vkOTyFPMdYkXdE/GpnR9gR8W3f1wWijoiX1agoXSNii2LSXDxD3nvEmzfFdJ1THf+tJ8g6I361niDrjHhzpShZI+JzPXFfoOgj4su+r7Z2JI2ID6sZJaI+I77b2hH1GfG2+h+TphGxRzFpI2KPYtJGxKe7UTuSvkS8rb49UzQi/nD3rpii6VjX676/LBAzRXzZ7e3omSIeRwteLSiImSPeVgsKcuaIl3+7NxTUPEQ8jnld/VhMymPE29WymJgR8eTm6zMx3yJ2gwc1IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8kRMnojJEzF5IiZPxOSJmDwRkydi8n6KeOJSJZ7OZZ+ImB4Rk/drxLMXEfN0Lt9u+hIxMSImT8TkiZg8EZMnYvJETJ6IyftzxPCEREyeiMl7iPgNPx9ffAKGWGIAAAAASUVORK5CYII=');\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t.number {\n\t\tmargin: 0 5% 0 2%;\n\t}\n\t.number span {\n\t\tcolor: #f08f00;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/_rateup-item.svelte",
    "content": "<script>\n\timport { assets } from '$lib/store/app-stores';\n\timport { t } from 'svelte-i18n';\n\timport { fly } from 'svelte/transition';\n\n\texport let active = false;\n\texport let data = {};\n\tconst { type, name, weaponType } = data;\n</script>\n\n<div class=\"item-wrapper wd {type}\" class:active>\n\t{#if active}\n\t\t<div class=\"indicator\" transition:fly|local={{ y: -20 }}>\n\t\t\t<img\n\t\t\t\talt=\"Active Indicator\"\n\t\t\t\tstyle=\"width: 100%;\"\n\t\t\t\tsrc=\"data:image/octet-stream;base64,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\"\n\t\t\t/>\n\t\t</div>\n\t{/if}\n\n\t<div class=\"artbox wd\">\n\t\t<i class=\"gi-primo-star top\" />\n\t\t<i class=\"gi-primo-star bottom\" />\n\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\txml:space=\"preserve\"\n\t\t\tversion=\"1.1\"\n\t\t\tstyle=\"shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd\"\n\t\t\tviewBox=\"0 0 66.21 129.27\"\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"rateup-item-bg\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t\tx1=\"30.95\"\n\t\t\t\t\ty1=\"117.73\"\n\t\t\t\t\tx2=\"30.16\"\n\t\t\t\t\ty2=\"6.36\"\n\t\t\t\t>\n\t\t\t\t\t<stop offset=\"0\" style=\"stop-opacity:0; stop-color:#dcd3c1\" />\n\t\t\t\t\t<stop offset=\"0.2\" style=\"stop-opacity:0.4; stop-color:#dcd3c1\" />\n\t\t\t\t\t<stop offset=\"1\" style=\"stop-opacity:1; stop-color:#dcd3c1\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t\t<g id=\"Layer_x0020_1\">\n\t\t\t\t<path\n\t\t\t\t\tclass=\"fil0\"\n\t\t\t\t\td=\"M-0 63.43c0.99,-11.34 5.72,-22.43 14.02,-33.53 -3.96,-3.39 -8.32,-6.81 -13.08,-10.26 -0.61,2.51 -0.94,5.13 -0.94,7.83l0 35.96zm33.34 65.84c31.22,-33.57 42.6,-65.64 11.51,-101.13 4.61,-4.61 12.57,-10.59 18.26,-14.61 -2.57,-5.49 -6.6,-10.17 -11.59,-13.53 -6.19,4.38 -14.87,11.29 -19.72,16.14l0 0c-38.4,35.99 -38.63,71.68 1.53,113.13zm31.07 -112.55c-5.56,4 -10.58,7.94 -15.08,11.84 10.47,12.83 16.18,25.62 16.88,38.76l0 -39.85c0,-3.76 -0.63,-7.37 -1.8,-10.75zm-62.44 -0.48c5.18,3.69 9.89,7.34 14.15,10.95 3.76,-4.7 8.16,-9.39 13.19,-14.12 -4.75,-4 -10.05,-8.05 -15.93,-12.16 -5.17,3.85 -9.18,9.17 -11.42,15.33z\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\n\t\t<picture class=\"wd\">\n\t\t\t{#if type === 'weapon'}\n\t\t\t\t<img class={weaponType} src={$assets[name]} alt={$t(name)} />\n\t\t\t{:else}\n\t\t\t\t<img src={$assets[`wishcard/${name}`]} alt={$t(`${name}.name`)} />\n\t\t\t{/if}\n\t\t</picture>\n\t</div>\n</div>\n\n<style>\n\t/* SVG */\n\tsvg {\n\t\tposition: absolute;\n\t\ttop: 42.5%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 80%;\n\t\taspect-ratio: 1/2;\n\t\ttransition: opacity 0.25s;\n\t}\n\t.active svg,\n\t.item-wrapper:hover svg {\n\t\topacity: 0.35;\n\t}\n\t.fil0 {\n\t\tfill: url(#rateup-item-bg);\n\t}\n\t/* SVG */\n\n\t.wd {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: 5rem;\n\t}\n\n\t.item-wrapper {\n\t\tposition: relative;\n\t\tbackground-color: #e7ded2;\n\t\tborder: calc(0.03 * var(--col-width)) solid #cfba8d;\n\t\tpadding: calc(0.03 * var(--col-width));\n\t\tbox-shadow: inset 0 0 calc(0.1 * var(--col-width)) rgba(251, 188, 5, 0.5);\n\t\ttransition: background 0.3s;\n\t}\n\t.item-wrapper:hover,\n\t.item-wrapper.active {\n\t\tbackground-color: #fdf4ed;\n\t\tbox-shadow: 0 0 calc(0.05 * var(--col-width)) rgba(251, 188, 5, 1),\n\t\t\tinset 0 0 calc(0.15 * var(--col-width)) rgba(251, 188, 5, 0.75);\n\t\tborder-color: #fff;\n\t}\n\t.item-wrapper.active {\n\t\ttransform: scale(1.05);\n\t}\n\n\t.indicator {\n\t\twidth: calc(0.375 * var(--col-width));\n\t\taspect-ratio: 1/1.2;\n\t\tposition: absolute;\n\t\ttop: 7%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tz-index: +10;\n\t}\n\t.indicator img {\n\t\tanimation: indicator infinite alternate 0.75s cubic-bezier(0.445, 0.05, 0.55, 0.95);\n\t}\n\n\ti.top {\n\t\ttop: 0;\n\t\ttransform: translate(-50%, -30%);\n\t}\n\ti.bottom {\n\t\tbottom: 0;\n\t\ttransform: translate(-50%, 30%);\n\t}\n\t.artbox i {\n\t\tposition: absolute;\n\t\tfont-size: calc(0.15 * var(--col-width));\n\t\tleft: 50%;\n\t\tline-height: 0;\n\t\tz-index: +2;\n\t}\n\t.artbox::before {\n\t\tcontent: '';\n\t\tborder: calc(0.025 * var(--col-width)) dotted #bbb;\n\t\twidth: 92%;\n\t\theight: 96%;\n\t\tposition: absolute;\n\t\tborder-radius: inherit;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tz-index: +1;\n\t}\n\n\t.artbox {\n\t\tcolor: #dac598;\n\t\tposition: relative;\n\t}\n\t.artbox picture {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\toverflow: hidden;\n\t}\n\n\t.artbox img {\n\t\twidth: 115%;\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: -10%;\n\t\ttransform: translateX(-50%);\n\t}\n\t.weapon .artbox img {\n\t\twidth: 175%;\n\t\ttop: -15%;\n\t\tleft: 50%;\n\t\tfilter: drop-shadow(0 0.15rem 0.02rem rgba(0, 0, 0, 1));\n\t}\n\t.weapon .artbox img.catalyst {\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 140%;\n\t}\n\n\t@keyframes indicator {\n\t\t0% {\n\t\t\ttransform: translateY(0);\n\t\t}\n\t\t100% {\n\t\t\ttransform: translateY(20%);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/_rateuplist-horizontal.svelte",
    "content": "<script>\n\timport { assets } from '$lib/store/app-stores';\n\n\texport let rateupList = [];\n\texport let exclude = '';\n\tconst list = rateupList.filter(({ name }) => name !== exclude);\n\tlet scrollElement;\n</script>\n\n<div\n\tclass=\"list\"\n\tbind:this={scrollElement}\n\ton:mousewheel={(e) => (scrollElement.scrollLeft += e.deltaY)}\n>\n\t<div class=\"row\">\n\t\t{#each list as { type, name, weaponType = '' }, i}\n\t\t\t{@const src = type === 'weapon' ? $assets[name] : $assets[`face/${name}`]}\n\t\t\t<div class=\"col\">\n\t\t\t\t<picture class=\"{type} {weaponType}\">\n\t\t\t\t\t<img {src} alt=\"\" />\n\t\t\t\t</picture>\n\t\t\t</div>\n\t\t{/each}\n\t</div>\n</div>\n\n<style>\n\t.list {\n\t\twidth: 100%;\n\t\theight: calc(0.0435 * var(--content-width));\n\t\toverflow: auto;\n\t}\n\t.list::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.row {\n\t\theight: 100%;\n\t\twidth: fit-content;\n\t\tdisplay: flex;\n\t\tflex-wrap: nowrap;\n\t}\n\n\tpicture {\n\t\tdisplay: block;\n\t\taspect-ratio: 1/1;\n\t\theight: 100%;\n\t\tborder-radius: 100%;\n\t\toverflow: hidden;\n\t}\n\timg {\n\t\twidth: 100%;\n\t}\n\n\t.weapon:not(.catalyst) img {\n\t\ttransform: translateY(-8%) rotate(13deg);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/artwork.svelte",
    "content": "<script>\n\timport { positionToStyle } from '$lib/helpers/cssPosition';\n\timport { assets } from '$lib/store/app-stores';\n\timport { fly } from 'svelte/transition';\n\n\texport let type;\n\texport let item = '';\n\texport let weaponType = null;\n\texport let position = {};\n\n\t$: isWp = type === 'weapon';\n\t$: src = isWp ? $assets[item] : $assets[`splash-art/${item}`];\n</script>\n\n<div class=\"artspace {type}\">\n\t{#key src}\n\t\t<div class=\"art-container\" in:fly|local={{ x: 15, duration: 700 }}>\n\t\t\t<img\n\t\t\t\t{src}\n\t\t\t\tclass={weaponType || ''}\n\t\t\t\tstyle={positionToStyle(position)}\n\t\t\t\talt=\"Artwork\"\n\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t/>\n\t\t</div>\n\t{/key}\n</div>\n\n<style>\n\t.artspace {\n\t\twidth: 65%;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tright: 0;\n\t\ttransform: translateY(-50%);\n\t\tmask-image: linear-gradient(to right, transparent 5%, black 35%, black 70%);\n\t}\n\n\t.artspace.weapon {\n\t\theight: 110%;\n\t}\n\n\t.art-container {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\timg {\n\t\tbackground-color: unset;\n\t\twidth: fit-content;\n\t\tposition: absolute;\n\t\twidth: 100%;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\n\t.weapon img {\n\t\ttop: unset;\n\t\twidth: unset;\n\t\tleft: 50%;\n\t\theight: 120%;\n\t\ttransform: translate(-35%, -10%);\n\t\tfilter: drop-shadow(0 0.2rem 0.1rem rgba(0, 0, 0, 1));\n\t}\n\t.weapon img.catalyst {\n\t\theight: unset;\n\t\twidth: 37.5%;\n\t\ttop: 50%;\n\t\ttransform: translate(-35%, -50%);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/bannerSpace.svelte",
    "content": "<script>\n\timport { getContext, setContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport {\n\t\tactiveBanner,\n\t\tassets,\n\t\tbannerList,\n\t\tchronicledCourse,\n\t\tactiveVersion\n\t} from '$lib/store/app-stores';\n\timport { fatepointManager } from '$lib/helpers/dataAPI/api-localstore';\n\timport { getDetails, regionElement } from '$lib/helpers/gacha/itemdrop-base';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Artwork from './artwork.svelte';\n\timport TextLayer from './textLayer.svelte';\n\n\tconst chronicled = $bannerList[$activeBanner];\n\tconst { region, characters } = chronicled;\n\n\tlet pickedItem, selected, point;\n\t$: ({ selected, point } = $chronicledCourse);\n\t$: selectedItem = selected || pickedItem || characters['5star'][0];\n\t$: details = getDetails(selectedItem);\n\t$: element = details.vision || regionElement(region);\n\t$: courseData = { selected, type: details.type, weaponType: details.weaponType, point };\n\n\tsetContext('itemPicker', (picked) => {\n\t\tconst { name } = picked;\n\t\tif (pickedItem === name) return;\n\t\tplaySfx('click2');\n\t\tpickedItem = name;\n\t});\n\n\tconst openModal = getContext('handleEpitomizedModal');\n\tconst openDetail = () => {\n\t\tplaySfx();\n\t\topenModal();\n\t};\n\tconst confirmCourse = () => {\n\t\tconst { patch, phase } = $activeVersion;\n\t\tconst localPoint = fatepointManager.init({ version: patch, phase, banner: 'chronicled' });\n\t\tconst { type } = details;\n\t\tlocalPoint.set(0, selectedItem, type);\n\t\tchronicledCourse.set({ selected: selectedItem, type, point: 0 });\n\t\tplaySfx();\n\t};\n</script>\n\n<div class=\"wrapper card-image\" style=\"min-height: 100px; width: 100%;\">\n\t<picture style=\"position: relative; width: 100%;\">\n\t\t<img\n\t\t\tsrc={$assets[`blank/chronicled-${element}`]}\n\t\t\talt=\"Chronicled Banner\"\n\t\t\tcrossorigin=\"anonymous\"\n\t\t/>\n\t</picture>\n\n\t<Artwork\n\t\ttype={details.type}\n\t\titem={selectedItem}\n\t\tweaponType={details?.weaponType}\n\t\tposition={details?.offset?.banner}\n\t/>\n</div>\n\n<div class=\"frame skeleton-event\">\n\t<TextLayer\n\t\t{courseData}\n\t\tbannerData={chronicled}\n\t\tpicked={selectedItem}\n\t\ttranslated={details.type === 'weapon' ? $t(selectedItem) : $t(`${selectedItem}.name`)}\n\t/>\n\n\t{#if !selected}\n\t\t<div class=\"epibutton\">\n\t\t\t<div class=\"col\" style=\"margin-right: 1%;\">\n\t\t\t\t<button class=\"detail\" on:click={openDetail}>\n\t\t\t\t\t<i> <b>i</b></i> <span>{$t('epitomizedPath.viewDetails')}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"col\" style=\"margin: 0 1%;\">\n\t\t\t\t<button class=\"confirm\" on:click={confirmCourse}>\n\t\t\t\t\t<i class=\"gi-circle-o\" /> <span> {$t('epitomizedPath.confirm')}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\tpicture,\n\timg {\n\t\twidth: 100%;\n\t\tdisplay: block;\n\t}\n\n\t.epibutton {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\tz-index: +10;\n\t\ttransform: translateY(50%);\n\t}\n\n\t.epibutton button {\n\t\tbackground-color: #fff;\n\t\tcolor: rgba(0, 0, 0, 0.75);\n\t\tborder-radius: 20rem;\n\t\tborder: #ddc889 calc(0.006 * var(--content-height)) solid;\n\t\tfont-size: calc(1.75 / 100 * var(--content-width));\n\t\ttransition: background 0.25s, color 0.25s, transform 0.25s;\n\t\tpadding: calc(0.01 * var(--content-width)) calc(0.04 * var(--content-width));\n\t\tposition: relative;\n\t}\n\n\t.epibutton button:hover {\n\t\tbackground-color: #e0ddd4;\n\t\tcolor: rgba(0, 0, 0, 1);\n\t}\n\t.epibutton button:active {\n\t\ttransform: scale(0.95);\n\t}\n\n\tbutton i {\n\t\twidth: calc(0.03 * var(--content-width));\n\t\tfont-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial,\n\t\t\tsans-serif;\n\t\tfont-style: normal;\n\t\tfont-weight: 400;\n\t\tline-height: 0;\n\t\tbackground-color: #353533;\n\t\tborder-radius: 100%;\n\t\taspect-ratio: 1/1;\n\t\tcolor: #fff;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: absolute;\n\t\tleft: 4%;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t}\n\tbutton.confirm i {\n\t\tcolor: #ffc107;\n\t}\n\tbutton.detail i {\n\t\tcolor: #98cb37;\n\t}\n\tbutton span {\n\t\tdisplay: inline-block;\n\t\ttransform: translateX(calc(0.01 * var(--content-width)));\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/rateupSelector.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport RateupItem from './_rateup-item.svelte';\n\n\texport let picked = '';\n\texport let rateupList = [];\n\tconst itemPicker = getContext('itemPicker');\n</script>\n\n<div class=\"rateup\">\n\t<div class=\"wrapper\">\n\t\t<div class=\"row\">\n\t\t\t{#each rateupList as data, i}\n\t\t\t\t<button class=\"col\" on:click={() => itemPicker(data)}>\n\t\t\t\t\t<RateupItem {data} active={data.name === picked} />\n\t\t\t\t</button>\n\t\t\t{/each}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.rateup {\n\t\theight: calc(26 / 100 * var(--content-width));\n\t\tborder-top: 2px dashed #ccc;\n\t\tborder-bottom: 2px dashed #ccc;\n\t\tpadding: calc(0.25 / 100 * var(--content-width)) 0;\n\t}\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: auto;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tpadding-right: calc(1 / 100 * var(--content-width));\n\t}\n\n\t.col {\n\t\t--col-width: calc(0.2 * var(--width));\n\t\twidth: 20%;\n\t\tflex-basis: 20%;\n\t\taspect-ratio: 1/2;\n\t\tpadding: calc(0.4 / 100 * var(--content-width));\n\t\ttransform: scale(1.0002);\n\t\ttransition: transform 0.25s;\n\t}\n\n\tbutton:active {\n\t\ttransform: scale(0.95);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_chronicled/textLayer.svelte",
    "content": "<script>\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { chronicledCourse } from '$lib/store/app-stores';\n\timport { getBannerName, highlightBannerName } from '$lib/helpers/nameText';\n\timport { getDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport RateUpSelector from './rateupSelector.svelte';\n\timport Epitomized from './_epitomized.svelte';\n\timport Dropnotes from '../__dropnotes.svelte';\n\timport RateuplistHorizontal from './_rateuplist-horizontal.svelte';\n\n\texport let bannerData = {};\n\texport let courseData = {};\n\texport let picked = '';\n\texport let translated = '';\n\n\tconst regions = {\n\t\tmondstadt: 'anemo',\n\t\tliyue: 'geo',\n\t\tinazuma: 'electro',\n\t\tsumeru: 'dendro',\n\t\tfontaine: 'hydro',\n\t\tnatlan: 'pyro'\n\t};\n\n\tconst { bannerName, characters, weapons, region } = bannerData;\n\t$: localeBannerName = $t(`banner.${getBannerName(bannerName).name}`);\n\t$: element = regions[region] || 'anemo';\n\n\tconst listOfItem = [...characters['5star'], ...weapons['5star']];\n\tconst rateupList = listOfItem.map((name) => getDetails(name));\n</script>\n\n<div class=\"frame-content\">\n\t<div class=\"top bg-{element}\">{$t('wish.banner.chronicled')}</div>\n\t<div class=\"heading\" in:fly={{ x: 15, duration: 700 }}>\n\t\t<h1 class=\"card-stroke\">\n\t\t\t{@html highlightBannerName(localeBannerName, element)}\n\t\t</h1>\n\t</div>\n\n\t<div\n\t\tclass=\"description\"\n\t\tclass:hasCourse={!!courseData.selected}\n\t\tin:fly={{ x: 15, duration: 700 }}\n\t>\n\t\t{#if !!courseData.selected}\n\t\t\t<Dropnotes {element} banner=\"chronicled\" />\n\t\t\t<div style=\"margin-top: auto;\" in:fly|local={{ x: 20 }}>\n\t\t\t\t<Epitomized {courseData} />\n\t\t\t\t<RateuplistHorizontal {rateupList} exclude={$chronicledCourse.selected} />\n\t\t\t</div>\n\t\t{:else}\n\t\t\t<div class=\"courseNote\">{$t('epitomizedPath.chartChronicled')}</div>\n\t\t\t<RateUpSelector {rateupList} {picked} />\n\t\t{/if}\n\t</div>\n\n\t<div class=\"selected\" in:fly={{ x: 10, duration: 700 }}>\n\t\t<div class=\"item\">\n\t\t\t<span class=\"name\"> {translated} </span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\n\t\t\t<div class=\"textbg\">\n\t\t\t\t<div class=\"stars\">\n\t\t\t\t\t{#each Array(5) as _}\n\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t\t{#if courseData.selected}\n\t\t\t\t\t<div class=\"current-selection\" class:fill={$chronicledCourse.point > 0}>\n\t\t\t\t\t\t{$t('epitomizedPath.currentSelection', { values: { itemType: $t(courseData.type) } })}\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.6 / 100 * var(--content-width));\n\t\tline-height: 130%;\n\t}\n\n\t.frame-content > div {\n\t\tposition: absolute;\n\t}\n\n\t.heading {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbottom: 75%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\theight: calc(9.5 / 100 * var(--content-width));\n\t\twidth: 50%;\n\t}\n\n\th1 {\n\t\ttext-align: left;\n\t\tline-height: 100%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) h1,\n\t:global(.ja-JP) h1 {\n\t\tfont-size: calc(5.5 / 100 * var(--content-width));\n\t}\n\t:global(.ja-JP) h1 {\n\t\tmax-width: 80%;\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t}\n\n\t.description {\n\t\t--width: calc(0.48 * var(--content-width));\n\t\twidth: var(--width);\n\t\tleft: 0;\n\t\ttop: 26%;\n\t\tdisplay: block;\n\t\tpadding-left: 4%;\n\t\toverflow: auto;\n\t}\n\n\t.description.hasCourse {\n\t\theight: calc(30 / 100 * var(--content-width));\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\toverflow: hidden;\n\t}\n\n\t.courseNote {\n\t\theight: calc(4.25 / 100 * var(--content-width));\n\t\toverflow: auto;\n\t}\n\n\t.selected {\n\t\t--text-width: calc(30 / 100 * var(--content-width));\n\t\twidth: var(--text-width);\n\t\tleft: 56%;\n\t\tbottom: 27%;\n\t}\n\n\t.selected .item {\n\t\tcolor: #fff;\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n\n\t:global(.zh-CN) .selected .item span:not(.up),\n\t:global(.ja-JP) .selected .item span:not(.up) {\n\t\tfont-size: calc(15 / 100 * var(--text-width));\n\t}\n\n\t.item span {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tz-index: +2;\n\t\tmax-width: calc(27 / 100 * var(--content-width));\n\t\tfont-size: calc(11 / 100 * var(--text-width));\n\t\tline-height: 100%;\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #000);\n\t\t-webkit-text-stroke: 0.02rem #565654;\n\t}\n\n\t.item .up {\n\t\tcolor: #fff664;\n\t\t-webkit-text-stroke: 0.05rem #e7a12e;\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #fff);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateX(100%) translateY(-50%);\n\t\ttext-transform: uppercase;\n\t\ttext-shadow: 0 0 0.4rem #f79c09;\n\t}\n\n\t.textbg {\n\t\tbackground-color: rgba(0, 0, 0, 0.75);\n\t\tmargin-top: calc(-3 / 100 * var(--content-height));\n\t\twidth: calc(100% + (0.1 * var(--content-height)));\n\t\tmin-width: calc(0.25 * var(--content-height));\n\t\theight: calc(70% + (0.08 * var(--content-height)));\n\t\ttransform: translate(\n\t\t\tcalc(3 / 100 * var(--content-height) * -1),\n\t\t\tcalc(10% + (0.065 * var(--content-height)))\n\t\t);\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tbottom: 0;\n\t}\n\n\t.stars {\n\t\tposition: absolute;\n\t\tleft: calc(3 / 100 * var(--content-height));\n\t\tbottom: 10%;\n\t}\n\n\t.gi-star {\n\t\tcolor: #f7cf33;\n\t\tdisplay: inline-block;\n\t\tfont-size: calc(3.5 / 100 * var(--content-height));\n\t}\n\n\t.current-selection {\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tline-height: 120%;\n\t\ttransform: translateY(95%);\n\t\tfont-size: calc(2.9 / 100 * var(--content-height));\n\t\tmin-width: calc(30 / 100 * var(--content-width));\n\t\tpadding: calc(0.75 / 100 * var(--content-height)) calc(3 / 100 * var(--content-height));\n\t\tbackground-color: rgba(85, 109, 139, 0.9);\n\t}\n\n\t.current-selection.fill {\n\t\tbackground-color: #52b5f0;\n\t}\n</style>\n\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_frame-beginner.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport { beginnerRemaining } from '$lib/store/app-stores';\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\timport Dropnotes from './__dropnotes.svelte';\n\n\texport let character = '';\n\t$: char = $t(`${character}.name`);\n\n\tlet bannerInfo;\n\tonMount(() => {\n\t\tOverlayScrollbars(bannerInfo, {\n\t\t\tsizeAutoCapable: false,\n\t\t\tclassName: 'os-theme-light',\n\t\t\tscrollbars: { visibility: 'hidden' }\n\t\t});\n\t});\n</script>\n\n<div class=\"frame-content\">\n\t<div class=\"top\">\n\t\t{$t('wish.banner.novice')}\n\t</div>\n\t<h1 class=\"card-stroke\" in:fly={{ x: 10, duration: 700 }}>\n\t\t{@html highlightBannerName($t(`banner.beginner`), 'geo')}\n\t</h1>\n\n\t<div class=\"info\" bind:this={bannerInfo} in:fly={{ x: 15, duration: 700 }}>\n\t\t<Dropnotes element=\"beginner\" banner=\"beginner\" />\n\t</div>\n\n\t<div class=\"featured\" in:fly={{ x: 10, duration: 700 }}>\n\t\t<div class=\"charName\" style=\"position: relative;\">\n\t\t\t<span>\n\t\t\t\t{char}\n\t\t\t</span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\t\t</div>\n\t</div>\n\n\t<div class=\"char-title\" in:fly={{ x: 10, duration: 700 }}>\n\t\t{$t(`${character}.title`)}\n\t</div>\n\n\t<div class=\"chances\">\n\t\t{$t('wish.banner.beginnerChance', { values: { chances: `${$beginnerRemaining}/20` } })}\n\t</div>\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t}\n\n\th1,\n\t.frame-content > div {\n\t\ttext-align: left;\n\t\tposition: absolute;\n\t}\n\th1 :global(span) {\n\t\tcolor: #cba885;\n\t}\n\th1 {\n\t\tbottom: 73.5%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\tline-height: 125%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) h1,\n\t:global(.ja-JP) h1 {\n\t\tfont-size: calc(6 / 100 * var(--content-width));\n\t}\n\n\t.info {\n\t\tleft: 0;\n\t\ttop: 36%;\n\t\twidth: 40%;\n\t\theight: 45%;\n\t\tdisplay: block;\n\t\tpadding-left: 4%;\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tbackground-color: #e79649;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t}\n\n\t.featured {\n\t\ttop: 65.6%;\n\t\tleft: 57.6%;\n\t\tcolor: #fff;\n\t\tfont-size: calc(4.9 / 100 * var(--content-width));\n\t\t-webkit-text-stroke: 0.05rem #565654;\n\t\ttext-shadow: 0 0 0.15rem #d2c69c;\n\t}\n\n\t:global(.ja-JP) .featured,\n\t:global(.zh-CN) .featured {\n\t\ttop: 68%;\n\t}\n\n\t.charName span:not(.up) {\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #000);\n\t}\n\n\t.charName span.up {\n\t\tcolor: #fff664;\n\t\t-webkit-text-stroke: 0.05rem #e7a12e;\n\t\tfont-size: calc(1.5 / 100 * var(--content-width));\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #fff);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateX(100%);\n\t\ttext-transform: uppercase;\n\t\ttext-shadow: 0 0 0.4rem #f79c09;\n\t}\n\n\t.char-title {\n\t\tleft: 57.6%;\n\t\ttop: 83.5%;\n\t\tcolor: #cfbc99;\n\t\tbackground-color: #39425d;\n\t\tpadding: 0.2% 1%;\n\t}\n\n\t.chances {\n\t\tright: 0;\n\t\tbottom: 6.5%;\n\t\tcolor: #e7dfd0;\n\t\tbackground-color: #252d3a;\n\t\tpadding: 0.2% 2%;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_frame-character.svelte",
    "content": "<script>\n\timport { fly } from 'svelte/transition';\n\timport { locale, t } from 'svelte-i18n';\n\timport { positionToStyle } from '$lib/helpers/cssPosition';\n\timport { getBannerName, highlightBannerName } from '$lib/helpers/nameText';\n\timport { getCharDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport Dropnotes from './__dropnotes.svelte';\n\n\texport let bannerName = '';\n\texport let character = '';\n\texport let textOffset = {};\n\texport let event2 = false;\n\n\t$: localeBannerName = $t(`banner.${getBannerName(bannerName).name}`);\n\t$: vision = getCharDetails(character).vision;\n\t$: featuredC = `--text-width: calc(${textOffset?.w || 30} / 100 * var(--content-width));`;\n</script>\n\n<div class=\"frame-content\">\n\t<div class=\"top bg-{vision}\">\n\t\t{$t('wish.banner.character-event')}\n\t\t{event2 ? ($locale === 'ja-JP' ? '2' : '— 2') : ''}\n\t</div>\n\t<div class=\"heading\" in:fly={{ x: 15, duration: 700 }}>\n\t\t<h1 class=\"card-stroke\">\n\t\t\t{@html highlightBannerName(localeBannerName, vision)}\n\t\t</h1>\n\t</div>\n\n\t<div class=\"description\" in:fly={{ x: 15, duration: 700 }}>\n\t\t<Dropnotes element={vision} banner=\"character-event\" />\n\t</div>\n\n\t<div\n\t\tclass=\"character\"\n\t\tstyle=\"{featuredC}{positionToStyle(textOffset)}\"\n\t\tin:fly={{ x: 10, duration: 700 }}\n\t>\n\t\t<div class=\"char-name\">\n\t\t\t<span>\n\t\t\t\t{$t(`${character}.name`)}\n\t\t\t</span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\t\t</div>\n\t\t<div class=\"char-title\">\n\t\t\t{$t(`${character}.title`)}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t\tline-height: 130%;\n\t}\n\n\t.frame-content > div {\n\t\ttext-align: left;\n\t\tposition: absolute;\n\t}\n\n\t.heading {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbottom: 67%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\theight: calc(0.23 * var(--content-height));\n\t\twidth: 45%;\n\t}\n\n\th1 {\n\t\ttext-align: left;\n\t\tline-height: 100%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) h1,\n\t:global(.ja-JP) h1 {\n\t\tfont-size: calc(6 / 100 * var(--content-width));\n\t}\n\t:global(.ja-JP) h1 {\n\t\tmax-width: 80%;\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t}\n\n\t.description {\n\t\tleft: 0;\n\t\ttop: 37.5%;\n\t\twidth: 45%;\n\t\theight: 42%;\n\t\tdisplay: block;\n\t\tpadding-left: 4%;\n\t\toverflow: auto;\n\t}\n\t.description::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t.character {\n\t\tleft: 54%;\n\t\tbottom: 8%;\n\t\twidth: calc(27 / 100 * var(--content-width));\n\t}\n\n\t.character .char-name {\n\t\tcolor: #fff;\n\t\tdisplay: inline-block;\n\t\t-webkit-text-stroke: 0.02rem #565654;\n\t\ttext-shadow: 0 0 0.15rem #d2c69c;\n\t\tline-height: 100%;\n\t\tposition: relative;\n\t\tfont-size: calc(11 / 100 * var(--text-width));\n\t}\n\n\t:global(.zh-CN) .character .char-name {\n\t\tfont-size: calc(17 / 100 * var(--text-width));\n\t}\n\t:global(.ja-JP) .character .char-name {\n\t\tfont-size: calc(15 / 100 * var(--text-width));\n\t}\n\n\t.char-name span {\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #000);\n\t}\n\n\t.char-name .up {\n\t\tcolor: #fff664;\n\t\t-webkit-text-stroke: 0.05rem #e7a12e;\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #fff);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateX(100%) translateY(-50%);\n\t\ttext-transform: uppercase;\n\t\ttext-shadow: 0 0 0.4rem #f79c09;\n\t}\n\n\t.character .char-title {\n\t\tcolor: #cfbc99;\n\t\tbackground-color: #39425d;\n\t\tmargin-top: calc(3.5 / 100 * var(--content-width));\n\t\tpadding: 1% 2%;\n\t\twhite-space: nowrap;\n\t\twidth: fit-content;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_frame-custom.svelte",
    "content": "<script>\n\timport { fly } from 'svelte/transition';\n\timport { getContext, onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport {\n\t\tcustomData,\n\t\teditID,\n\t\teditorMode as editMode,\n\t\tisCustomBanner,\n\t\tproUser\n\t} from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { BannerManager } from '$lib/helpers/dataAPI/api-indexeddb';\n\timport { maintenance } from '$lib/helpers/banner-custom';\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\timport SvgIcon from '$lib/components/SVGIcon.svelte';\n\timport Dropnotes from './__dropnotes.svelte';\n\n\texport let bannerName = '';\n\texport let character = '';\n\texport let charTitle = '';\n\texport let vision = '';\n\texport let editorMode = false;\n\texport let onBannerEdit = false;\n\texport let watermark = '';\n\n\tconst deleteBanner = getContext('deleteBanner');\n\tconst editBanner = () => {\n\t\tplaySfx();\n\t\teditID.set($customData.itemID);\n\t\teditMode.set(true);\n\t};\n\n\tlet infoContainer;\n\tlet myBannerCount = 0;\n\t$: disableEdit = !$proUser && myBannerCount > 3;\n\tonMount(async () => {\n\t\tconst { getListByStatus } = BannerManager;\n\t\tconst list = (await getListByStatus('owned')) || [];\n\t\tmyBannerCount = list.length;\n\n\t\tif (onBannerEdit) return;\n\t\tOverlayScrollbars(infoContainer, {\n\t\t\tsizeAutoCapable: false,\n\t\t\tclassName: 'os-theme-light',\n\t\t\tscrollbars: { visibility: 'hidden' }\n\t\t});\n\t});\n</script>\n\n<div class=\"frame-content\" class:editorMode class:onBannerEdit>\n\t<div class=\"top bg-{vision}\">\n\t\t{$t('wish.banner.character-event')}\n\t</div>\n\t<div class=\"heading\" in:fly={{ x: 15, duration: 700 }}>\n\t\t<h1 class=\"card-stroke\">\n\t\t\t{@html highlightBannerName(bannerName || $t('customBanner.titleOfBanner'), vision)}\n\t\t</h1>\n\t</div>\n\n\t{#if $isCustomBanner}\n\t\t<div class=\"action\">\n\t\t\t{#if $customData.status === 'owned' && !editorMode && !disableEdit}\n\t\t\t\t<button class=\"edit\" on:click={editBanner}>\n\t\t\t\t\t<i class=\"gi-pen\" /> <span>{$t('customBanner.edit')}</span>\n\t\t\t\t</button>\n\t\t\t{/if}\n\n\t\t\t{#if !maintenance}\n\t\t\t\t<button class=\"delete\" on:click={deleteBanner}>\n\t\t\t\t\t<i class=\"gi-delete\" />\n\t\t\t\t\t{$t('customBanner.delete')}\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</div>\n\t{/if}\n\n\t<div class=\"info\" bind:this={infoContainer}>\n\t\t<Dropnotes element={vision} banner=\"character-event\" />\n\t</div>\n\n\t<div class=\"character\">\n\t\t<div class=\"char-name\">\n\t\t\t<span>\n\t\t\t\t{character || $t('customBanner.charName')}\n\t\t\t</span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\n\t\t\t<div class=\"textbg\">\n\t\t\t\t<div class=\"icon-vision {vision} filter-drop\">\n\t\t\t\t\t<SvgIcon name={vision} />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"stars\">\n\t\t\t\t\t{#each Array(5) as _}\n\t\t\t\t\t\t<i class=\"gi-star\" />\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t{#if charTitle}\n\t\t\t<div class=\"char-title\">\n\t\t\t\t{charTitle || $t('customBanner.charTitle')}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n\n\t<div class=\"watermark\">{watermark || ''}</div>\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\taspect-ratio: 1080/533;\n\t\tposition: absolute;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t\tline-height: 130%;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tz-index: +10;\n\t}\n\t.frame-content.onBannerEdit {\n\t\tpointer-events: none;\n\t\topacity: 0.5;\n\t}\n\n\t.frame-content > div {\n\t\ttext-align: left;\n\t\tposition: absolute;\n\t}\n\n\t.heading {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbottom: 67%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\theight: calc(0.23 * var(--content-height));\n\t\twidth: 45%;\n\t}\n\n\th1 {\n\t\ttext-align: left;\n\t\tline-height: 100%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) h1 {\n\t\tfont-size: calc(7 / 100 * var(--content-width));\n\t}\n\t:global(.ja-JP) h1 {\n\t\tmax-width: 80%;\n\t\tfont-size: calc(6 / 100 * var(--content-width));\n\t}\n\n\t.editorMode h1 {\n\t\tbottom: 70%;\n\t}\n\n\t.action {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\topacity: 0;\n\t\ttransition: all 0.25s;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t}\n\n\t.action button {\n\t\tcolor: rgba(255, 255, 255, 0.8);\n\t\tpadding: calc(1.7 / 100 * var(--content-width)) calc(2.5 / 100 * var(--content-width));\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tline-height: 0;\n\t\tborder-radius: 2%;\n\t\tfont-size: calc(1.7 / 100 * var(--content-width));\n\t\ttransition: all 0.25s;\n\t}\n\tbutton.edit {\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t}\n\tbutton.edit:hover {\n\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t}\n\n\tbutton.delete {\n\t\tbackground-color: rgba(234, 37, 37, 0.5);\n\t}\n\tbutton.delete:hover {\n\t\tbackground-color: rgba(234, 37, 37, 1);\n\t}\n\n\t.action i {\n\t\ttransform: translateX(-50%);\n\t}\n\t.frame-content:hover .action {\n\t\topacity: 1;\n\t}\n\t.action button:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t}\n\n\t.info {\n\t\tleft: 0;\n\t\ttop: 40%;\n\t\twidth: 40%;\n\t\theight: 42%;\n\t\tdisplay: block;\n\t\tpadding-left: 4%;\n\t}\n\t.onBannerEdit .info {\n\t\toverflow: hidden;\n\t}\n\n\t.editorMode .info {\n\t\ttop: 32.5%;\n\t}\n\n\t.character {\n\t\t--text-width: calc(30 / 100 * var(--content-width));\n\t\twidth: calc(30 / 100 * var(--content-width));\n\t\tleft: 48.5%;\n\t\tbottom: 10%;\n\t}\n\n\t.character .char-name {\n\t\tcolor: #fff;\n\t\tdisplay: inline-block;\n\t\t-webkit-text-stroke: 0.02rem #565654;\n\t\ttext-shadow: 0 0 0.15rem #d2c69c;\n\t\tline-height: 100%;\n\t\tposition: relative;\n\t\tfont-size: calc(11 / 100 * var(--text-width));\n\t\twhite-space: nowrap;\n\t}\n\n\t:global(.zh-CN) .character .char-name {\n\t\tfont-size: calc(17 / 100 * var(--text-width));\n\t}\n\t:global(.ja-JP) .character .char-name {\n\t\tfont-size: calc(15 / 100 * var(--text-width));\n\t}\n\n\t.char-name span {\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #000);\n\t}\n\n\t.char-name .up {\n\t\tcolor: #fff664;\n\t\t-webkit-text-stroke: 0.05rem #e7a12e;\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #fff);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateX(100%) translateY(-50%);\n\t\ttext-transform: uppercase;\n\t\ttext-shadow: 0 0 0.4rem #f79c09;\n\t}\n\n\t.character .char-title {\n\t\tcolor: #cfbc99;\n\t\tbackground-color: #39425d;\n\t\tpadding: 1% 2%;\n\t\twhite-space: nowrap;\n\t\twidth: fit-content;\n\t}\n\n\t.textbg {\n\t\tbackground-color: rgba(0, 0, 0, 0.55);\n\t\twidth: calc(100% + (0.15 * var(--content-height)));\n\t\ttransform: translateX(calc(7.5 / 100 * var(--content-height) * -1));\n\t\theight: calc(9 / 100 * var(--content-height));\n\t\tmargin-top: calc(-3 / 100 * var(--content-height));\n\t\tfilter: drop-shadow(0 0 calc(0.02 * var(--content-height)) #000);\n\t\tposition: relative;\n\t\tz-index: -2;\n\t}\n\n\t.stars {\n\t\tposition: absolute;\n\t\tleft: calc(7.5 / 100 * var(--content-height));\n\t\tbottom: -10%;\n\t}\n\n\t.gi-star {\n\t\tcolor: #f7cf33;\n\t\tdisplay: inline-block;\n\t\tfont-size: calc(3.5 / 100 * var(--content-height));\n\t}\n\n\t.icon-vision {\n\t\twidth: calc(9 / 100 * var(--content-height));\n\t\ttransform: translate(-45%, -40%);\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t}\n\t.icon-vision :global(svg) {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.watermark {\n\t\tright: 2%;\n\t\tbottom: 2%;\n\t\tfont-style: italic;\n\t\tfont-weight: bold;\n\t\tcolor: #fff;\n\t\tfont-size: calc(0.035 * var(--content-height));\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\ttext-shadow: 0 0 calc(0.05 * var(--content-height)) #000;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_frame-standard.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport Dropnotes from './__dropnotes.svelte';\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\n\texport let bannerName = '';\n\tconst oldStd = bannerName === 'wanderlust-invocation-1';\n\n\tconst chars = oldStd ? ['jean', 'diluc'] : ['qiqi', 'mona', 'keqing'];\n\tconst weap = oldStd ? 'skyward-blade' : 'skyward-spine';\n\n\t// const highlightBannerName = (bannerName) => {\n\t// \tconst oldClass = oldStd ? 'old' : 'wanderlust-flat';\n\t// \tconst splited = bannerName.split(' ');\n\t// \treturn `${splited[0]} <span class=\"${oldClass}\"> ${splited.slice(1).join(' ')}</span>`;\n\t// };\n\n\tlet bannerInfo;\n\tonMount(() => {\n\t\tOverlayScrollbars(bannerInfo, {\n\t\t\tsizeAutoCapable: false,\n\t\t\tclassName: 'os-theme-light',\n\t\t\tscrollbars: { visibility: 'hidden' }\n\t\t});\n\t});\n</script>\n\n<div class=\"frame-content\" class:old={oldStd}>\n\t<div class=\"top bg-wanderlust\">\n\t\t{$t('wish.banner.standard')}\n\t</div>\n\t<h1 in:fly={{ x: 10, duration: 700 }} class=\"card-stroke\">\n\t\t{@html highlightBannerName($t('banner.wanderlust'), oldStd ? 'old' : 'wanderlust')}\n\t</h1>\n\t<div class=\"info\" bind:this={bannerInfo} in:fly={{ x: 15, duration: 700 }}>\n\t\t<Dropnotes banner=\"standard\" element=\"standard\" />\n\t</div>\n\n\t{#each chars as char}\n\t\t<div class=\"group {char}\" in:fly={{ x: 10, duration: 700 }}>\n\t\t\t<div class=\"group-content\">\n\t\t\t\t<div class=\"item-name\">\n\t\t\t\t\t{$t(`${char}.name`)}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"char-title\">\n\t\t\t\t\t{$t(`${char}.title`)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t{/each}\n\t<div class=\"group skyward\" in:fly={{ x: 10, duration: 700 }}>\n\t\t<div class=\"group-content\">\n\t\t\t<div class=\"item-name\">\n\t\t\t\t{$t(weap)}\n\t\t\t\t<span>{$t('wish.banner.etc')}</span>\n\t\t\t</div>\n\t\t\t<div class=\"all\">\n\t\t\t\t{$t('wish.banner.allWeaponTypes')}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t\tline-height: 120%;\n\t}\n\n\th1 :global(span.old-flat) {\n\t\tcolor: #c9a07b;\n\t}\n\n\th1,\n\t.frame-content > div {\n\t\ttext-align: left;\n\t\tposition: absolute;\n\t}\n\th1 {\n\t\tbottom: 73.5%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\tline-height: 125%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) h1,\n\t:global(.ja-JP) h1 {\n\t\tfont-size: calc(7 / 100 * var(--content-width));\n\t}\n\n\t.info {\n\t\tleft: 0;\n\t\ttop: 36%;\n\t\twidth: 40%;\n\t\theight: 45%;\n\t\tdisplay: block;\n\t\tpadding-left: 4%;\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t}\n\n\t.old .top {\n\t\tbackground-color: #c9a07b;\n\t}\n\n\t.group-content {\n\t\tposition: relative;\n\t}\n\t.item-name {\n\t\tcolor: #fff;\n\t\t-webkit-text-stroke: 0.05rem #565654;\n\t\ttext-shadow: 0 0 0.15rem #d2c69c;\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #000);\n\t}\n\n\t.char-title {\n\t\tcolor: #cfbc99;\n\t\tbackground-color: #39425d;\n\t\tmargin-top: calc(2.8 / 100 * var(--content-width));\n\t\tpadding: 1% 7%;\n\t\twhite-space: nowrap;\n\t\twidth: fit-content;\n\t}\n\t.qiqi {\n\t\tleft: 36.5%;\n\t\ttop: 78%;\n\t}\n\t.mona {\n\t\tleft: 46%;\n\t\ttop: 21%;\n\t}\n\t.keqing {\n\t\tleft: 61%;\n\t\ttop: 55%;\n\t}\n\t.jean {\n\t\tleft: 44%;\n\t\ttop: 72.5%;\n\t}\n\t.diluc {\n\t\tleft: 78%;\n\t\ttop: 10%;\n\t}\n\n\t.keqing .item-name {\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t\ttransform: translateY(-80%);\n\t}\n\t.qiqi .item-name,\n\t.mona .item-name {\n\t\tfont-size: calc(3.3 / 100 * var(--content-width));\n\t}\n\t.jean .item-name,\n\t.diluc .item-name {\n\t\tfont-size: calc(4 / 100 * var(--content-width));\n\t\tmargin-bottom: calc(4 / 100 * var(--content-width));\n\t}\n\n\t.skyward {\n\t\tleft: 75.1%;\n\t\tbottom: 4.5%;\n\t\twidth: 24%;\n\t\tline-height: 170%;\n\t}\n\n\t.skyward .item-name {\n\t\tfont-size: calc(3.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.vi-VN) .skyward .item-name {\n\t\tfont-size: calc(3 / 100 * var(--content-width));\n\t}\n\n\t.item-name span {\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\twhite-space: nowrap;\n\t}\n\t.all {\n\t\tcolor: #fff;\n\t\tbackground-color: #f7ab48;\n\t\tdisplay: inline-block;\n\t\twidth: fit-content;\n\t\tfont-size: calc(1.3 / 100 * var(--content-width));\n\t\tline-height: 130%;\n\t\tpadding: calc(0.2 / 100 * var(--content-width)) calc(2 / 100 * var(--content-width));\n\t\tmargin-top: calc(3.8 / 100 * var(--content-width));\n\t\ttransform: translateX(-5%);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_frame-weapon.svelte",
    "content": "<script>\n\timport { fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { course, mobileMode, activeVersion } from '$lib/store/app-stores';\n\timport { positionToStyle } from '$lib/helpers/cssPosition';\n\timport { highlightBannerName } from '$lib/helpers/nameText';\n\timport EpitomizedButton from '../epitomized-path/WeaponButton.svelte';\n\timport Dropnotes from './__dropnotes.svelte';\n\n\texport let featured = {};\n\texport let rateup = {};\n\texport let textOffset = {};\n\tconst w = textOffset?.featured?.w || 29;\n\tconst featuredW = `--text-width: calc(${w} / 100 * var(--content-width));`;\n\t$: steps = $activeVersion.patch >= 5.0 ? 1 : 2;\n</script>\n\n<div class=\"frame-content\">\n\t<div class=\"top bg-epitome\">\n\t\t{$t('wish.banner.weapon-event')}\n\t</div>\n\t<h1 in:fly={{ x: 10, duration: 700 }}>\n\t\t{@html highlightBannerName($t(`banner.epitome-invocation`), 'epitome')}\n\t</h1>\n\n\t<div class=\"info\" in:fly={{ x: 10, duration: 700 }}>\n\t\t<Dropnotes element=\"epitome\" banner=\"weapon-event\" />\n\t</div>\n\n\t{#if $mobileMode}\\\n\t\t<div class=\"epitomized\">\n\t\t\t<EpitomizedButton />\n\t\t</div>\n\t{/if}\n\n\t<div\n\t\tclass=\"featured\"\n\t\tstyle=\"{featuredW}{positionToStyle(textOffset?.featured)}\"\n\t\tin:fly={{ x: 10, duration: 700 }}\n\t>\n\t\t<div class=\"weapon-name first-wp\">\n\t\t\t<span>\n\t\t\t\t{$t(`${featured[0].name}`)}\n\t\t\t</span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\t\t</div>\n\t\t<div class=\"weapon-name second-wp\">\n\t\t\t{$t(`${featured[1].name}`)}\n\t\t</div>\n\t</div>\n\n\t<div class=\"rateup\" style={positionToStyle(textOffset?.rateup)} in:fly={{ x: 10, duration: 700 }}>\n\t\t<div class=\"weapon-name\">\n\t\t\t<span>{$t(`${rateup[0]}`)}</span>\n\t\t\t<span class=\"etc\"> {$t('wish.banner.etc')}</span>\n\t\t\t<span class=\"up\">{$t('wish.banner.up')}</span>\n\t\t</div>\n\t</div>\n\n\t{#if $course.selected !== null}\n\t\t<div class=\"selected\" class:fill={$course.point >= steps}>\n\t\t\t{$t('epitomizedPath.courseSetFor', {\n\t\t\t\tvalues: { selectedCourse: $t(featured[$course.selected]?.name) }\n\t\t\t})}\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.frame-content {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tcolor: #565654;\n\t\tdisplay: block;\n\t\tfont-size: calc(1.8 / 100 * var(--content-width));\n\t\tline-height: 130%;\n\t}\n\n\th1,\n\t.frame-content > div {\n\t\ttext-align: left;\n\t\tposition: absolute;\n\t}\n\th1 {\n\t\tbottom: 67%;\n\t\tleft: 0;\n\t\tmargin: 0 4%;\n\t\tline-height: 125%;\n\t\tfont-size: calc(4.5 / 100 * var(--content-width));\n\t}\n\n\t:global(.mobile) h1 {\n\t\tbottom: 71%;\n\t}\n\n\t:global(.zh-CN) h1,\n\t:global(.ja-JP) h1 {\n\t\tfont-size: calc(7 / 100 * var(--content-width));\n\t}\n\n\t.top {\n\t\tcolor: #fff;\n\t\tpadding: 0.3% 1.4%;\n\t\tborder-bottom-left-radius: 2rem;\n\t\tborder-top-left-radius: 2rem;\n\t\tborder-bottom-right-radius: 4rem;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\ttransform: translate(-3%, -15%);\n\t}\n\n\t.info {\n\t\tleft: 0;\n\t\ttop: 40%;\n\t\twidth: 40%;\n\t\tdisplay: block;\n\t\toverflow: auto;\n\t\tpadding-left: 4%;\n\t}\n\t.info::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t:global(.mobile) .info {\n\t\ttop: 30%;\n\t\theight: calc(0.13 * var(--content-width));\n\t}\n\n\t.epitomized {\n\t\ttop: 59%;\n\t\tleft: 5%;\n\t}\n\n\t.featured {\n\t\tleft: 37%;\n\t\ttop: 64%;\n\t\twidth: calc(22 / 100 * var(--content-width));\n\t}\n\n\t.rateup {\n\t\tleft: 70%;\n\t\tbottom: 21%;\n\t}\n\n\t.weapon-name {\n\t\tcolor: #fff;\n\t\tdisplay: block;\n\t\t-webkit-text-stroke: 0.015rem #000;\n\t\tletter-spacing: -0.05rem;\n\t\tline-height: 100%;\n\t\tposition: relative;\n\t}\n\n\t.weapon-name span:not(.up) {\n\t\tfilter: drop-shadow(-0.2rem 0.2rem 0.5rem #000);\n\t}\n\n\t.first-wp {\n\t\tfont-size: calc(8 / 100 * var(--text-width));\n\t}\n\n\t.second-wp {\n\t\tfont-size: calc(8 / 100 * var(--text-width));\n\t\tmargin-top: calc(0.6 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) .first-wp,\n\t:global(.zh-CN) .second-wp,\n\t:global(.ja-JP) .first-wp,\n\t:global(.ja-JP) .second-wp {\n\t\tfont-size: calc(11 / 100 * var(--text-width));\n\t}\n\n\tspan.up {\n\t\tcolor: #fff664;\n\t\t-webkit-text-stroke: 0.05rem #e7a12e;\n\t\tfilter: drop-shadow(0 0.3rem 0.5rem #fff);\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\ttransform: translateX(100%) translateY(-80%);\n\t\ttext-transform: uppercase;\n\t\ttext-shadow: 0 0 0.4rem #f79c09;\n\t}\n\n\t.rateup .weapon-name {\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t}\n\n\t:global(.zh-CN) .rateup .weapon-name,\n\t:global(.ja-JP) .rateup .weapon-name {\n\t\tfont-size: calc(2.7 / 100 * var(--content-width));\n\t}\n\n\tspan.etc {\n\t\tfont-size: calc(2 / 100 * var(--content-width));\n\t\twhite-space: nowrap;\n\t}\n\n\t.selected {\n\t\tposition: absolute;\n\t\tbottom: 0rem;\n\t\tright: 0;\n\t\tmax-width: 80%;\n\t\tpadding: 0.2rem 1rem;\n\t\tcolor: #fff;\n\t\tbackground-color: rgba(0, 0, 0, 0.4);\n\t\tfont-size: 1rem;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\t.selected.fill {\n\t\tbackground-color: #52b5f0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/banner-card/_probability-editor.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { activeBanner, bannerList, chronicledCourse } from '$lib/store/app-stores';\n\timport { localPity } from '$lib/helpers/dataAPI/api-localstore';\n\timport { getRate, setRate } from '$lib/helpers/gacha/probabilities';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { regionElement } from '$lib/helpers/gacha/itemdrop-base';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\n\texport let element = 'default';\n\texport let fullscreenEditor = false;\n\n\tconst { type: banner, region } = $bannerList[$activeBanner];\n\tconst type = banner || 'character-event';\n\tconst isChronicled = type === 'chronicled';\n\telement = isChronicled ? regionElement(region) : element;\n\n\tconst editprob = getContext('editprob');\n\tconst showModalReset = getContext('showModalReset');\n\tconst resetClick = () => {\n\t\tshowModalReset();\n\t\tplaySfx();\n\t};\n\n\t$: baseRate4 = getRate(type, 'baseRate4');\n\t$: baseRate5 = getRate(type, 'baseRate5');\n\t$: charRate = getRate(type, 'charRate');\n\t$: winRate = getRate(type, 'winRate');\n\t$: selectedRate = getRate(type, 'selectedRate');\n\t$: hard4 = getRate(type, 'hard4');\n\t$: hard5 = getRate(type, 'hard5');\n\t$: max4 = getRate(type, 'max4');\n\t$: max5 = getRate(type, 'max5');\n\t$: guaranteed = getRate(type, 'guaranteed') || 'default';\n\n\tlet showGuarateedOption = false;\n\tconst guaranteedToggle = (selected) => {\n\t\tsetRate(type, 'guaranteed', selected);\n\t\tguaranteed = selected;\n\t\tshowGuarateedOption = false;\n\t\tplaySfx('click2');\n\t};\n\n\tconst changeRate = (e, variable) => {\n\t\tconst val = e.target.value;\n\t\tconst maxVal = variable.match('Rate4') ? 100 - baseRate5 : 100;\n\t\tconst capVal = parseFloat(val) < maxVal || !val ? val : maxVal;\n\n\t\tif (val >= maxVal) e.target.value = capVal;\n\t\tsetRate(type, variable, capVal || 0);\n\n\t\tif (variable === 'winRate') return (winRate = capVal);\n\t\tif (variable === 'baseRate4') return (baseRate4 = capVal);\n\n\t\tif (variable === 'baseRate5') {\n\t\t\tbaseRate5 = capVal;\n\t\t\tconst isOverLimit = parseFloat(baseRate5) + parseFloat(baseRate4) > 100;\n\t\t\tif (!isOverLimit) return;\n\t\t\tbaseRate4 = 100 - baseRate5;\n\t\t\tsetRate(type, 'baseRate4', baseRate4);\n\t\t}\n\t};\n\n\tconst changePity = (e, variable) => {\n\t\tconst val = e.target.value;\n\t\tlet finalVal = 1;\n\n\t\t// Max Pity Changer\n\t\tif (variable.match('max')) {\n\t\t\tconst capVal = val <= 1 || !val ? 1 : val;\n\t\t\tfinalVal = parseInt(capVal);\n\t\t\te.target.value = finalVal;\n\n\t\t\tif (variable === 'max5') {\n\t\t\t\tmax5 = finalVal;\n\t\t\t\tconst maxHard = hard5 >= max5 - 1 ? max5 - 1 : hard5;\n\t\t\t\tif (hard5 >= maxHard || isNaN(finalVal)) {\n\t\t\t\t\thard5 = isNaN(finalVal) ? 0 : maxHard;\n\t\t\t\t\tsetRate(type, 'hard5', hard5 || 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (variable === 'max4') {\n\t\t\t\tmax4 = finalVal;\n\t\t\t\tconst maxHard = hard4 >= max4 - 1 ? max4 - 1 : hard4;\n\t\t\t\tif (hard4 >= maxHard || isNaN(finalVal)) {\n\t\t\t\t\thard4 = isNaN(finalVal) ? 0 : maxHard;\n\t\t\t\t\tsetRate(type, 'hard4', hard4 || 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Hard Pity Changer\n\t\tif (variable.match('hard')) {\n\t\t\tconst maxPity = variable === 'hard5' ? max5 : max4;\n\t\t\tconst cap = (maxPity || 0) - 1;\n\t\t\tfinalVal = val >= cap ? cap : val;\n\t\t\tif (val >= cap) e.target.value = finalVal;\n\t\t\tif (variable === 'hard4') hard4 = finalVal;\n\t\t\tif (variable === 'hard5') hard5 = finalVal;\n\t\t}\n\n\t\tif (!variable.match('now')) return setRate(type, variable, finalVal || 1);\n\n\t\t// Current Pity Changer\n\t\tconst value = parseInt(val);\n\t\tif (variable === 'now4') localPity.set(`pity4-${type}`, value);\n\t\tif (variable === 'now5') localPity.set(`pity5-${type}`, value);\n\t};\n</script>\n\n<div class=\"editor {type}\" class:fullscreenEditor out:fade|local>\n\t<i class=\"logo gi-{region || element}\" />\n\n\t<h1 class=\"header bg-{element}\">\n\t\t{$t('editor.bannerConfig', { values: { banner: $t(`wish.banner.${type}`) } })}\n\t\t<i class=\"gi-{region}\" />\n\t</h1>\n\n\t<div class=\"body\">\n\t\t<div class=\"item\">\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.baseRate', { values: { rarity: 5 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col percent\">\n\t\t\t\t<input type=\"number\" value={baseRate5} on:input={(e) => changeRate(e, 'baseRate5')} />\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\" class:disabled={baseRate5 >= 100}>\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.maxPity', { values: { rarity: 5 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={max5}\n\t\t\t\t\tdisabled={baseRate5 >= 100}\n\t\t\t\t\ton:input={(e) => changePity(e, 'max5')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\" class:disabled={baseRate5 >= 100 || !max5 || max5 <= 1}>\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.hardPity', { values: { rarity: 5 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={hard5}\n\t\t\t\t\tdisabled={baseRate5 >= 100 || !max5 || max5 <= 1}\n\t\t\t\t\ton:input={(e) => changePity(e, 'hard5')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\">\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.currentPity', { values: { rarity: 5 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={localPity.get(`pity5-${type}`)}\n\t\t\t\t\ton:input={(e) => changePity(e, 'now5')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\" class:disabled={baseRate5 >= 100 || max5 <= 1}>\n\t\t\t<div class=\"col\">{$t('editor.baseRate', { values: { rarity: 4 } })}</div>\n\t\t\t<div class=\"col percent\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={baseRate4}\n\t\t\t\t\tdisabled={baseRate5 >= 100 || max5 <= 1}\n\t\t\t\t\ton:input={(e) => changeRate(e, 'baseRate4')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\" class:disabled={baseRate5 >= 100 || baseRate4 >= 100 || max5 <= 1}>\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.maxPity', { values: { rarity: 4 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={max4}\n\t\t\t\t\tdisabled={baseRate5 >= 100 || baseRate4 >= 100 || max5 <= 1}\n\t\t\t\t\ton:input={(e) => changePity(e, 'max4')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"item\"\n\t\t\tclass:disabled={baseRate5 >= 100 || baseRate4 >= 100 || !max4 || max4 <= 1 || max5 <= 1}\n\t\t>\n\t\t\t<div class=\"col\">{$t('editor.hardPity', { values: { rarity: 4 } })}</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={hard4}\n\t\t\t\t\tdisabled={baseRate5 >= 100 || baseRate4 >= 100 || !max4 || max4 <= 1 || max5 <= 1}\n\t\t\t\t\ton:input={(e) => changePity(e, 'hard4')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"item\">\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.currentPity', { values: { rarity: 4 } })}\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={localPity.get(`pity4-${type}`)}\n\t\t\t\t\ton:input={(e) => changePity(e, 'now4')}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t{#if !type.match(/standard|chronicled/)}\n\t\t\t<div class=\"item\" class:disabled={guaranteed === 'always'}>\n\t\t\t\t<div class=\"col\">{$t('editor.winRate')}</div>\n\t\t\t\t<div class=\"col percent\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tvalue={winRate}\n\t\t\t\t\t\tdisabled={guaranteed === 'always'}\n\t\t\t\t\t\ton:input={(e) => changeRate(e, 'winRate')}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if type.match('weapon') || type === 'chronicled'}\n\t\t\t<div class=\"item\">\n\t\t\t\t<div class=\"col\">\n\t\t\t\t\t{$t('editor.selectedRate', {\n\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\titemType: type === 'chronicled' ? $t($chronicledCourse?.type || 'item') : $t('weapon')\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col percent\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tvalue={selectedRate}\n\t\t\t\t\t\ton:input={(e) => changeRate(e, 'selectedRate')}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/if}\n\n\t\t<!-- prettier-ignore -->\n\t\t<div\n\t\t\tclass=\"item\"\n\t\t\tclass:disabled={\n\t\t\t\t(baseRate5 >= 100 && type !== 'standard')\n\t\t\t\t|| guaranteed === 'always'\n\t\t\t\t|| winRate >= 100\n\t\t\t}\n\t\t>\n\t\t\t<div class=\"col\">\n\t\t\t\t{$t('editor.charRate')}\n\t\t\t\t{#if !type.match(/standard/)}\n\t\t\t\t\t<small>{$t('editor.nonRateup')}</small>\n\t\t\t\t{/if}\n\t\t\t\t:\n\t\t\t</div>\n\t\t\t<div class=\"col percent\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tvalue={charRate}\n\t\t\t\t\ton:input={(e) => changeRate(e, 'charRate')}\n\t\t\t\t\tdisabled={(baseRate5 >= 100 && type !== 'standard') || guaranteed === 'always' || winRate >= 100}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t{#if !type.match(/standard|chronicled/)}\n\t\t\t<div class=\"item\">\n\t\t\t\t<div class=\"col\">{@html $t('editor.guaranteedSystem')}</div>\n\t\t\t\t<div class=\"col select\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"selected\"\n\t\t\t\t\t\ton:click={() => {\n\t\t\t\t\t\t\tshowGuarateedOption = !showGuarateedOption;\n\t\t\t\t\t\t\tplaySfx('click2');\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{$t(`editor.${guaranteed}`)}\n\t\t\t\t\t</button>\n\t\t\t\t\t{#if showGuarateedOption}\n\t\t\t\t\t\t<div class=\"selection\" transition:fly|local={{ y: 10 }}>\n\t\t\t\t\t\t\t<button class=\"option\" on:click={() => guaranteedToggle('default')}>\n\t\t\t\t\t\t\t\t{$t('editor.default')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class=\"option\" on:click={() => guaranteedToggle('always')}>\n\t\t\t\t\t\t\t\t{$t('editor.always')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class=\"option\" on:click={() => guaranteedToggle('never')}>\n\t\t\t\t\t\t\t\t{$t('editor.never')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n\n\t<!-- Button Confirm -->\n\t<div class=\"footer\">\n\t\t<ButtonGeneral on:click={resetClick}>{$t('editor.backToDefault')}</ButtonGeneral>\n\t\t<ButtonModal\n\t\t\ton:click={() => {\n\t\t\t\teditprob();\n\t\t\t\tplaySfx('modal');\n\t\t\t}}\n\t\t/>\n\t</div>\n</div>\n\n<style>\n\t.editor {\n\t\tbackground-image: linear-gradient(to top, #eee8e3 50%, #f7f5f4);\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmin-height: 100%;\n\t\twidth: 100%;\n\t\tfont-size: 80%;\n\t\tposition: relative;\n\t}\n\n\t.editor.fullscreenEditor {\n\t\twidth: 75%;\n\t\theight: 85%;\n\t\tmin-height: unset;\n\t}\n\n\t.header {\n\t\tcolor: #fff;\n\t\tpadding: 1rem;\n\t\tfont-size: inherit;\n\t\ttext-align: left;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\t.bg-default.header {\n\t\tbackground-color: rgba(20, 18, 15, 0.85);\n\t}\n\t.fullscreenEditor .header {\n\t\tpadding: 0.75rem 1rem;\n\t}\n\t.standard .header {\n\t\tbackground-color: #5b61c4;\n\t}\n\t.weapon-event .header {\n\t\tbackground-color: #c86612;\n\t}\n\n\t.header i {\n\t\tposition: absolute;\n\t\ttop: -10%;\n\t\tright: 0;\n\t\tfont-size: calc(0.1 * var(--content-width));\n\t\tline-height: 0;\n\t\topacity: 0.5;\n\t}\n\n\t.body {\n\t\tpadding: 0 1% 1%;\n\t\twidth: 100%;\n\t\tposition: relative;\n\t}\n\t.fullscreenEditor .body {\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t}\n\ti.logo {\n\t\tposition: absolute;\n\t\tbottom: 1%;\n\t\tleft: 1%;\n\t\tfont-size: calc(0.2 * var(--content-width));\n\t\tline-height: 0;\n\t\topacity: 0.04;\n\t}\n\n\t.footer {\n\t\tmargin-top: auto;\n\t\tpadding: 0 1% 1%;\n\t\ttext-align: right;\n\t}\n\n\t.item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tpadding: 0.2% 0 0.2% 1%;\n\t\tborder-bottom: rgba(20, 18, 15, 0.5) 1px solid;\n\t\ttransition: background 0.25s;\n\t}\n\n\t.fullscreenEditor .item {\n\t\tfont-size: 100%;\n\t}\n\n\t.item:hover,\n\t.item.disabled {\n\t\tbackground-color: rgba(20, 18, 15, 0.075);\n\t}\n\n\t.item.disabled {\n\t\topacity: 0.3;\n\t\tcursor: not-allowed;\n\t}\n\tinput:disabled {\n\t\tcursor: not-allowed;\n\t}\n\n\t.col {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t}\n\n\t.col:nth-child(1) {\n\t\tflex-basis: 90%;\n\t\twidth: 90%;\n\t}\n\n\t.col:nth-child(2) {\n\t\theight: 1.8rem;\n\t\tflex-basis: 10%;\n\t\tmin-width: 5rem;\n\t}\n\t.fullscreenEditor .col:nth-child(2) {\n\t\theight: 1.5rem;\n\t}\n\n\t.col.percent:nth-child(2)::after {\n\t\tcontent: '%';\n\t\tbackground-color: #dbd7d0;\n\t\theight: 100%;\n\t\taspect-ratio: 1/1;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\tcolor: #787269;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tborder-top-right-radius: 3rem;\n\t\tborder-bottom-right-radius: 3rem;\n\t}\n\n\t.select button.selected,\n\tinput {\n\t\tbackground-color: #fff;\n\t\twidth: 100%;\n\t\tpadding: 0 15%;\n\t\tmargin-bottom: 2%;\n\t\tfont-size: 80%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tborder-radius: 3rem;\n\t\tborder: #c3b8a5 1px solid;\n\t\toutline: none;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.percent input {\n\t\tpadding-right: 35%;\n\t}\n\n\tinput:focus,\n\t.selection {\n\t\tbox-shadow: 0 0 0.4rem rgba(227, 149, 48, 0.7);\n\t}\n\n\t.selection {\n\t\tposition: absolute;\n\t\tbottom: 100%;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tz-index: +10;\n\t\tbackground-color: #fff;\n\t\tborder-radius: 0.25rem;\n\t\tborder: #c3b8a5 1px solid;\n\t}\n\n\t.select button.selected {\n\t\tfont-size: 90%;\n\t}\n\t.selection button {\n\t\tfont-size: 100%;\n\t\tdisplay: block;\n\t\tpadding: 10% 15%;\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t\tborder-bottom: #c5bcac 1px solid;\n\t}\n\tbutton.selected,\n\t.selection button {\n\t\ttransition: background 0.25s;\n\t}\n\tbutton.selected:hover,\n\t.selection button:hover {\n\t\tbackground-color: #e8e5e0;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/EpitomizedPath.svelte",
    "content": "<script>\n\timport { getContext, onDestroy, onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\timport {\n\t\tviewportWidth,\n\t\tactiveVersion,\n\t\tcourse,\n\t\tassets,\n\t\tviewportHeight,\n\t\tbannerList,\n\t\tactiveBanner,\n\t\tchronicledCourse\n\t} from '$lib/store/app-stores';\n\timport { fatepointManager } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\n\timport Modal from '$lib/components/ModalTpl.svelte';\n\timport ItemSelection from './_item-selection.svelte';\n\timport Description from './_description.svelte';\n\n\tlet activeSection = 1;\n\tlet clientHeight;\n\tlet itemWidth;\n\t$: half = $viewportWidth < 500;\n\t$: defaultItemWidth = (16.5 / 100) * $viewportHeight;\n\t$: if (itemWidth < 150) itemWidth = 150;\n\telse itemWidth = defaultItemWidth;\n\n\tconst { type: banner } = $bannerList[$activeBanner];\n\tconst { patch, phase } = $activeVersion;\n\n\tconst flipSection = (to) => {\n\t\tplaySfx('bookflip');\n\t\tactiveSection = to;\n\t};\n\n\tonMount(() => playSfx('bookflip'));\n\tconst handleClose = getContext('handleEpitomizedModal');\n\tconst closePath = () => {\n\t\thandleClose();\n\t\tplaySfx('close');\n\t\tplaySfx('bookflip');\n\t};\n\n\tlet showCancelConfirmation = false;\n\tconst closeModal = () => {\n\t\tplaySfx('close');\n\t\tshowCancelConfirmation = false;\n\t};\n\n\tsetContext('cancelCourse', () => {\n\t\tshowCancelConfirmation = true;\n\t\tplaySfx();\n\t});\n\n\tsetContext('setCourse', (target) => {\n\t\tif (target === null) return;\n\t\tplaySfx('click');\n\t\tconst { patch, phase } = $activeVersion;\n\t\tconst localFate = fatepointManager.init({ version: patch, phase });\n\t\tlocalFate.set(0, target); // set to local\n\t\tcourse.set({ selected: target, point: 0 }); // set to App\n\t\thandleClose();\n\t});\n\n\tconst confirmCancel = () => {\n\t\tshowCancelConfirmation = false;\n\t\tclosePath();\n\n\t\t// clear local\n\t\tconst localFate = fatepointManager.init({ version: patch, phase, banner });\n\t\tlocalFate.remove();\n\n\t\t// clear browser Storage\n\t\tif (banner.match('weapon')) return course.set({ point: 0, selected: null });\n\t\tchronicledCourse.set({ selected: null, point: 0, type: null });\n\t\treturn;\n\t};\n\n\thotkeys('esc,e', 'epipath', (e) => {\n\t\te.preventDefault();\n\t\tclosePath();\n\t});\n\n\thotkeys.setScope('epipath');\n\tonDestroy(() => hotkeys.deleteScope('epipath', 'index'));\n</script>\n\n{#if showCancelConfirmation}\n\t<Modal on:confirm={confirmCancel} on:cancel={closeModal}>\n\t\t<div\n\t\t\tclass=\"pop-up\"\n\t\t\tstyle=\"display: flex; width:100%; height:100%; justify-content: center; align-items:center;\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t{$t('epitomizedPath.cancelPrompt')}\n\t\t\t\t<br />\n\t\t\t\t<span style=\"font-size: smaller; padding: 2rem\">\n\t\t\t\t\t{$t('epitomizedPath.cancelDesc')}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</Modal>\n{/if}\n\n<section class=\"modal\" transition:fade={{ duration: 250 }}>\n\t<div\n\t\tclass=\"modal-content\"\n\t\tstyle=\"--modal-height:{clientHeight}px;--item-width: {itemWidth}px\"\n\t\tclass:half\n\t\tbind:clientHeight\n\t\ttransition:fly={{ y: 40, duration: 250 }}\n\t>\n\t\t<img src={$assets[`epitomized-${half ? 'half' : 'bg'}.webp`]} alt=\"Epitomized Book\" />\n\t\t<button class=\"close-modal\" on:click={closePath}>\n\t\t\t<i class=\"gi-close\" />\n\t\t</button>\n\t\t<div class=\"container\">\n\t\t\t{#if !half || activeSection < 1}\n\t\t\t\t<Description isChronicled={banner === 'chronicled'} />\n\t\t\t{/if}\n\n\t\t\t{#if (activeSection > 0 && half) || !half}\n\t\t\t\t<ItemSelection />\n\t\t\t{/if}\n\t\t</div>\n\n\t\t{#if half}\n\t\t\t<div class=\"pagination\">\n\t\t\t\t{#if activeSection > 0}\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"left\"\n\t\t\t\t\t\tstyle=\"margin-right: auto;\"\n\t\t\t\t\t\ton:click={() => flipSection(0)}\n\t\t\t\t\t\ttransition:fade|local={{ duration: 200 }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i class=\"gi-arrow-left\" />\n\t\t\t\t\t</button>\n\t\t\t\t{/if}\n\n\t\t\t\t{#if activeSection < 1}\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"right\"\n\t\t\t\t\t\tstyle=\"margin-left: auto;\"\n\t\t\t\t\t\ton:click={() => flipSection(1)}\n\t\t\t\t\t\ttransition:fade|local={{ duration: 200 }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i class=\"gi-arrow-right\" />\n\t\t\t\t\t</button>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</section>\n\n<style>\n\t.modal {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100vw;\n\t\theight: var(--screen-height);\n\t\tbackground-color: rgba(0, 0, 0, 0.7);\n\t\tz-index: 10;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackdrop-filter: blur(2px);\n\t}\n\n\t.modal-content {\n\t\tmax-width: 90%;\n\t\tmax-height: 90%;\n\t\twidth: 1100px;\n\t\tmin-width: 250px;\n\t\taspect-ratio: 919/549;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t.modal-content.half {\n\t\taspect-ratio: 599/719;\n\t}\n\n\t:global(.mobile) .modal-content {\n\t\tmax-width: 140vh;\n\t\tborder-radius: 0.8rem;\n\t}\n\n\t.modal-content img {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\n\t.close-modal {\n\t\tposition: absolute;\n\t\ttop: calc(0.045 * var(--modal-height));\n\t\tright: calc(0.045 * var(--modal-height));\n\t\tz-index: +10;\n\t}\n\n\t.gi-close {\n\t\tbackground-color: transparent;\n\t\tcolor: #383b40;\n\t}\n\t.container {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\t.container > :global(div) {\n\t\tflex-basis: 50%;\n\t\tflex-grow: 1;\n\t}\n\n\tspan {\n\t\tcolor: #f0b164;\n\t}\n\tbutton i {\n\t\twidth: 2rem;\n\t\theight: 2rem;\n\t\tborder-radius: 100%;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: 1.3rem;\n\t}\n\n\t/* pagination */\n\t.pagination {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tpadding: 0 2.5%;\n\t\tz-index: +10;\n\t}\n\n\t.pagination button i {\n\t\tfont-size: 1.75rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/WeaponButton.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { activeBanner, activeVersion, bannerList, course } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { noticeMark } from '$lib/helpers/noticeMark';\n\n\timport NoticeMark from '$lib/components/NoticeMark.svelte';\n\timport EpitomizedIcon from './_icon.svelte';\n\n\tlet buttonHeight;\n\tlet patch, phase, type, fatepointsystem;\n\t$: ({ patch, phase } = $activeVersion);\n\t$: steps = patch >= 5.0 ? 1 : 2;\n\t$: ({ fatepointsystem, type } = $bannerList[$activeBanner]);\n\n\tconst handleEpitomizedModal = getContext('handleEpitomizedModal');\n\tconst handleClick = () => {\n\t\tplaySfx('exchange');\n\t\thandleEpitomizedModal();\n\t\tnoticeMark.openNotice(`fatepoint${patch}-${phase}`);\n\t};\n\n\t// Shortcut\n\thotkeys('e', 'index', (e) => {\n\t\te.preventDefault();\n\t\tif (!fatepointsystem || type !== 'weapon-event') return;\n\t\thandleClick();\n\t});\n</script>\n\n{#if fatepointsystem}\n\t<button\n\t\tclass=\"container\"\n\t\tstyle=\"--height:{buttonHeight}px\"\n\t\tin:fade={{ duration: 250 }}\n\t\ton:click={handleClick}\n\t\tbind:clientHeight={buttonHeight}\n\t>\n\t\t<NoticeMark name=\"fatepoint{patch}-{phase}\" />\n\t\t<EpitomizedIcon point={$course.point} {steps} />\n\t\t<div class=\"point-number\">\n\t\t\t{#if $course.selected !== null}\n\t\t\t\t<span>{$course.point}</span>/{steps}\n\t\t\t{:else}\n\t\t\t\t<span class=\"small\">{$t('epitomizedPath.heading')}</span>\n\t\t\t{/if}\n\t\t</div>\n\t</button>\n{/if}\n\n<style>\n\tbutton {\n\t\tposition: relative;\n\t\tpointer-events: initial;\n\t}\n\n\t.point-number {\n\t\tborder-radius: 50px;\n\t\tbackground-color: #ece4d9;\n\t\tborder: 3px solid #fff;\n\t\tpadding: 0.2rem;\n\t\twidth: 100%;\n\t\ttransition: all 0.2s;\n\t\tcolor: #a49a90;\n\t\tborder: 1px solid #a49a90;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: absolute;\n\t\tbottom: 5%;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\n\t.point-number span {\n\t\tcolor: #ff8700;\n\t}\n\n\t.point-number span.small {\n\t\tfont-size: calc(0.101 * var(--height));\n\t\tline-height: 110%;\n\t\tdisplay: inline-block;\n\t\tcolor: var(--text-color);\n\t\tpadding: 1% 10%;\n\t}\n\t:global(.mobile) button {\n\t\tfont-size: 90%;\n\t\tpadding: 0 0.2rem;\n\t\tmargin-top: auto;\n\t\tmargin-bottom: 10%;\n\t}\n\t:global(.mobile) span:not(.small) {\n\t\tfont-size: 120%;\n\t}\n\t:global(.mobile) .point-number {\n\t\tpadding: 0.1rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/_chronicled-details.svelte",
    "content": "<script>\n\timport { json, t } from 'svelte-i18n';\n\timport { cookie } from '$lib/helpers/dataAPI/api-cookie';\n\timport { activeBanner, assets, bannerList, chronicledCourse } from '$lib/store/app-stores';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { get5StarItem } from '$lib/helpers/gacha/itemdrop-base';\n\timport InventoryItem from '../../_inventory/_inventory-item.svelte';\n\n\tconst { characters, weapons, region, stdver } = $bannerList[$activeBanner];\n\tconst featuredChar = get5StarItem({\n\t\tbanner: 'chronicled',\n\t\trateupItem: [...characters['5star']],\n\t\ttype: 'character',\n\t\tregion,\n\t\tstdver\n\t});\n\tconst featuredWp = get5StarItem({\n\t\tbanner: 'chronicled',\n\t\trateupItem: [...weapons['5star']],\n\t\ttype: 'weapon',\n\t\tregion,\n\t\tstdver\n\t});\n\n\tconst featuredList = [\n\t\t{ type: 'character', list: featuredChar },\n\t\t{ type: 'weapon', list: featuredWp }\n\t];\n\n\tlet activeTab = cookie.get('chronTab') || 'rules';\n\t$: cookie.set('chronTab', activeTab);\n\tconst switchTab = (target) => {\n\t\tif (activeTab === target) return;\n\t\tactiveTab = target;\n\t\tplaySfx('shopsubnav');\n\t};\n</script>\n\n<div class=\"wrapper\">\n\t<nav class=\"nav-item-list\" style=\"--bg-active: url('{$assets['shop-nav-bg.webp']}')\">\n\t\t{#each ['rules', 'details'] as nav}\n\t\t\t<button\n\t\t\t\tclass=\"nav-link-item\"\n\t\t\t\tclass:active={nav === activeTab}\n\t\t\t\ton:click={() => switchTab(nav)}\n\t\t\t>\n\t\t\t\t<div class=\"border\">{$t(`epitomizedPath.${nav}`)}</div>\n\t\t\t</button>\n\t\t{/each}\n\t</nav>\n\n\t<!-- Details List -->\n\t{#if activeTab === 'details'}\n\t\t<div class=\"list\">\n\t\t\t<div class=\"scrollable\">\n\t\t\t\t{#each featuredList as { type, list }}\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<span>{$t(type)}</span>\n\t\t\t\t\t\t{#if $chronicledCourse.type === type}\n\t\t\t\t\t\t\t<span style=\"margin-left: auto;\">\n\t\t\t\t\t\t\t\t{$t('epitomizedPath.setFor')}<i class=\"gi-arrow-up\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t{#each list as { name, weaponType, type, vision }}\n\t\t\t\t\t\t\t{@const localName = type === 'weapon' ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<InventoryItem\n\t\t\t\t\t\t\t\t\tnoStars\n\t\t\t\t\t\t\t\t\titemdata={{ name, weaponType, localName, rarity: 5, type, vision }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Description -->\n\t{:else}\n\t\t<div class=\"list\">\n\t\t\t<div class=\"scrollable\">\n\t\t\t\t{#each $json('epitomizedPath.chronicledRules') as article}\n\t\t\t\t\t<p>· {@html article}</p>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t/* Nav */\n\tnav.nav-item-list {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tborder-top: 1px solid #d2c69c;\n\t\tborder-bottom: 1px solid #d2c69c;\n\t\twidth: 100%;\n\t\tbackground-image: linear-gradient(\n\t\t\tto right,\n\t\t\trgba(0, 0, 0, 0),\n\t\t\trgba(0, 0, 0, 0.5) 15%,\n\t\t\trgba(0, 0, 0, 0.5),\n\t\t\trgba(0, 0, 0, 0.5) 85%,\n\t\t\trgba(0, 0, 0, 0)\n\t\t);\n\t}\n\t:global(.mobile) nav.nav-item-list {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t.nav-link-item {\n\t\tcolor: #d2c69c;\n\t\tposition: relative;\n\t\taspect-ratio: 720/125;\n\t\twidth: 50%;\n\t\tflex-basis: 50%;\n\t\tfont-size: calc(0.03 * var(--modal-height));\n\t}\n\n\t.nav-link-item .border {\n\t\twidth: 100%;\n\t\taspect-ratio: 669/122;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: contain;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\ttransform: translateY(-50%);\n\t\tpadding: 0 10%;\n\t\ttransition: all 0.2s;\n\t}\n\n\t.nav-link-item.active .border,\n\t.nav-link-item:hover .border {\n\t\tcolor: var(--text-color);\n\t\tbackground-image: var(--bg-active);\n\t}\n\t/* End Nav */\n\n\t.list,\n\t.wrapper,\n\t.scrollable {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\t.wrapper {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.list {\n\t\tpadding-top: 2%;\n\t\ttext-align: left;\n\t\tcolor: #ab9075;\n\t}\n\t.scrollable {\n\t\toverflow: auto;\n\t\tpadding: 0 2%;\n\t\theight: calc(0.8 * var(--modal-height));\n\t}\n\n\th2 {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twhite-space: nowrap;\n\t\tbackground-color: #ddcfb5;\n\t\tcolor: #8f7859;\n\t\tpadding: 3% 6.5% 3% 2%;\n\t\tfont-size: calc(0.027 * var(--modal-height));\n\t\tline-height: 0;\n\t\tmargin-top: 5%;\n\t\tposition: relative;\n\t}\n\n\th2 i::before {\n\t\tcolor: #f19200;\n\t\tfont-size: calc(0.04 * var(--modal-height));\n\t\tposition: absolute;\n\t\tright: 1%;\n\t\ttop: 0;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmargin-top: 1%;\n\t}\n\t.col {\n\t\twidth: 25%;\n\t\tflex-basis: 25%;\n\t\ttransform: scale(0.9);\n\t\tpointer-events: none;\n\t}\n\n\tp :global(span) {\n\t\tcolor: #ea930e;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/_description.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { json, t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport { assets } from '$lib/store/app-stores';\n\timport CronicledDetails from './_chronicled-details.svelte';\n\n\texport let isChronicled = false;\n\tlet content;\n\tonMount(() => {\n\t\tOverlayScrollbars(content, { sizeAutoCapable: false, className: 'os-theme-light' });\n\t});\n</script>\n\n{#if isChronicled}\n\t<div class=\"article chronicled\">\n\t\t<CronicledDetails />\n\t</div>\n{:else}\n\t<div class=\"article weapon\">\n\t\t<img src={$assets['epitomized-ribbon.webp']} alt=\"ribbon\" class=\"ribbon\" />\n\t\t<div class=\"wrapper\">\n\t\t\t<h1>\n\t\t\t\t<span>\n\t\t\t\t\t{$t('epitomizedPath.heading')}\n\t\t\t\t</span>\n\t\t\t</h1>\n\t\t\t<div class=\"content\" bind:this={content}>\n\t\t\t\t<div class=\"description\">\n\t\t\t\t\t{#each $json('epitomizedPath.description') as desc}\n\t\t\t\t\t\t<p>· {@html desc}</p>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.article {\n\t\tposition: relative;\n\t\tfont-size: calc(3.3 / 100 * var(--modal-height));\n\t}\n\t.article.weapon {\n\t\tpadding: 3.5% 5%;\n\t}\n\t.article.chronicled {\n\t\tpadding: 2.5% 2.5% 4%;\n\t}\n\n\t.ribbon {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 8.5%;\n\t\ttransform: translateY(-1.5%);\n\t\twidth: calc(0.09 * var(--modal-height));\n\t}\n\n\t.wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder: 1px solid transparent;\n\t\tbackground-color: #e2dbd2;\n\t}\n\n\t.content {\n\t\twidth: 100%;\n\t\theight: 83%;\n\t\toverflow: hidden;\n\t\tmargin: 5% 0 0;\n\t\ttext-align: left;\n\t\tcolor: #aa8e77;\n\t}\n\n\t.description {\n\t\tpadding: 3%;\n\t}\n\n\th1 {\n\t\theight: calc(10 / 100 * var(--modal-height));\n\t\tfont-size: calc(4.2 / 100 * var(--modal-height));\n\t\tbackground-color: #d3c2af;\n\t\twidth: 100%;\n\t\tpadding-left: 18%;\n\t\tcolor: #7c613f;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: flex-start;\n\t}\n\tp :global(span) {\n\t\tcolor: #ea930e;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/_icon.svelte",
    "content": "<script>\n\texport let point = 0;\n\texport let steps = 1;\n\texport let blank = false;\n\texport let responsive = false;\n</script>\n\n<div\n\tclass:fixedSize={!responsive}\n\tclass:full={point >= steps}\n\tclass:half={point >= steps / 2 && point < steps}\n>\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\txml:space=\"preserve\"\n\t\twidth=\"100%\"\n\t\theight=\"100%\"\n\t\tversion=\"1.1\"\n\t\tstyle=\"shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd\"\n\t\tviewBox=\"0 0 508847 506460\"\n\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t>\n\t\t<defs>\n\t\t\t<linearGradient id=\"halfFilled\">\n\t\t\t\t<stop offset=\"50%\" stop-color=\"transparent\" />\n\t\t\t\t<stop offset=\"50%\" stop-color=\"#62c5ff\" />\n\t\t\t</linearGradient>\n\t\t</defs>\n\n\t\t<g id=\"Layer_x0020_1\">\n\t\t\t<metadata id=\"CorelCorpID_0Corel-Layer\" />\n\t\t\t<circle class=\"fil0\" cx=\"254424\" cy=\"253230\" r=\"235000\" />\n\t\t\t<path\n\t\t\t\tclass=\"fil1\"\n\t\t\t\td=\"M255693 0c13547,26247 28024,32190 42571,35155 86821,17695 155401,85552 174155,171983 3340,15397 8488,34162 36428,46862 -23707,12700 -32662,29168 -35212,42704 -17117,90856 -89026,162369 -180088,178895 -13076,2373 -26000,6154 -39547,30861 -11853,-20473 -28814,-28563 -42256,-31076 -92318,-17262 -164722,-91085 -179876,-184128 -1926,-11825 -6468,-24556 -31868,-35563 27093,-10160 29923,-25044 31812,-36761 14555,-90240 82951,-162462 171176,-182650 16150,-3695 39159,-5802 52705,-36282z\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\tclass=\"fil2\"\n\t\t\t\td=\"M255542 30055c11940,23132 24698,28369 37519,30983 76516,15594 136957,75398 153485,151571 2944,13569 7481,30107 32104,41300 -20893,11192 -28785,25706 -31032,37635 -15086,80073 -78460,143098 -158714,157663 -11524,2091 -22915,5423 -34854,27198 -10446,-18043 -25394,-25173 -37240,-27388 -81362,-15213 -145172,-80274 -158528,-162274 -1697,-10422 -5700,-21642 -28085,-31342 23877,-8954 26371,-22072 28036,-32398 12828,-79530 73106,-143180 150860,-160972 14233,-3257 34511,-5114 46449,-31976z\"\n\t\t\t/>\n\t\t\t{#if !blank}\n\t\t\t\t<path\n\t\t\t\t\tclass=\"fil1\"\n\t\t\t\t\td=\"M330264 271900c123,-533 12562,-25081 10158,-32020 -1162,-1427 -2401,-2861 -3702,-5015 -10709,-2024 -12079,-25210 -13164,-33686 -14482,-47196 -72342,-40941 -75929,-52261 -358,-5588 -312,-4871 -670,-10459 -7941,-1020 -13237,1312 -15009,8106 -10178,3252 -5167,18577 -5501,26637 -1026,-642 -5493,-4403 -5588,-4447 -15337,-7251 -37943,31295 -36627,45876 -2865,18246 -4687,19434 -13733,25783 -2850,2000 -600,259 -2382,1933l565 8165c13533,41301 39679,48402 77665,53316 -1307,1383 991,2598 -2457,4085 -17607,7585 -16560,12591 -21001,31019 -1670,3686 -3464,12046 -2869,16028 -138,14893 63684,19907 79345,971 1836,-15767 -2789,-25064 -10248,-39071 -6148,-5850 -3857,-7275 -14719,-8437 -5230,-2021 -2896,1743 -3630,-4393 21183,67 46793,-11256 59496,-32130zm-57388 55269c4914,9251 4765,12192 14138,13865 -8154,-4650 -10703,-14461 -18651,-21822 -5039,-2075 -10340,-4118 -13672,-3026 -6579,2156 -10978,6676 -17718,15712 8536,-3503 10646,-9555 18301,-13067 7391,5619 -1300,14794 -3372,23823 -1079,4703 476,9454 2036,12648 -2369,-10300 409,-16090 6895,-17943 3642,6892 3606,8549 8908,12534 -3457,-7528 -12293,-20101 -7056,-29210 3890,-1154 4734,2232 10191,6486zm-30308 -71245c-9691,1465 -6106,3188 -12543,6960 -10988,6437 -14245,-5177 -25718,-6891 2209,18389 33672,21098 38261,-69zm30053 0c9691,1465 6106,3188 12543,6960 10987,6437 14245,-5177 25718,-6891 -2209,18389 -33672,21098 -38261,-69zm-15561 31599c6016,-1307 5913,-1191 7499,-6781 -3798,-269 -10937,-717 -14214,-158 1060,4275 2615,5911 6715,6939z\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tclass=\"fil1\"\n\t\t\t\t\td=\"M329531 141779c3037,10634 9793,17203 20000,20000 -10634,3037 -17203,9793 -20000,20000 -3037,-10634 -9793,-17203 -20000,-20000 10634,-3037 17203,-9793 20000,-20000z\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tclass=\"fil1\"\n\t\t\t\t\td=\"M165200 297389c2278,7976 7345,12902 15000,15000 -7976,2278 -12902,7345 -15000,15000 -2278,-7976 -7345,-12902 -15000,-15000 7976,-2278 12902,-7345 15000,-15000z\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tclass=\"fil1\"\n\t\t\t\t\td=\"M362750 205788c1519,5317 4897,8602 10000,10000 -5317,1519 -8602,4897 -10000,10000 -1519,-5317 -4897,-8602 -10000,-10000 5317,-1519 8602,-4897 10000,-10000z\"\n\t\t\t\t/>\n\t\t\t{/if}\n\n\t\t\t<path\n\t\t\t\tclass=\"fil3\"\n\t\t\t\td=\"M254424 68164c102209,0 185066,82857 185066,185066 0,102209 -82857,185066 -185066,185066 -102209,0 -185066,-82857 -185066,-185066 0,-102209 82857,-185066 185066,-185066zm0 28190c86640,0 156876,70236 156876,156876 0,86640 -70236,156876 -156876,156876 -86640,0 -156876,-70236 -156876,-156876 0,-86640 70236,-156876 156876,-156876z\"\n\t\t\t/>\n\t\t</g>\n\t</svg>\n</div>\n\n<style>\n\t.full svg {\n\t\tfilter: drop-shadow(0 0 0.5rem rgb(0, 183, 255));\n\t}\n\n\t.fixedSize {\n\t\twidth: 15vh;\n\t}\n\t:global(.mobile) .fixedSize {\n\t\twidth: 18vh;\n\t}\n\t@media screen and (max-width: 500px) {\n\t\t.fixedSize {\n\t\t\twidth: 10vh;\n\t\t}\n\t}\n\n\t.fil1 {\n\t\tfill: #fefefe;\n\t}\n\t.fil2 {\n\t\tfill: #5f6e8b;\n\t}\n\t.fil3 {\n\t\tfill: transparent;\n\t\ttransform: rotate(90deg);\n\t\ttransform-origin: center;\n\t}\n\t.full .fil3 {\n\t\tfill: #62c5ff;\n\t}\n\t.half .fil3 {\n\t\tfill: url(#halfFilled);\n\t}\n\t.fil0 {\n\t\tfill: #a0907d;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/_item-selection.svelte",
    "content": "<script>\n\timport { getContext } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport {\n\t\tchronicledCourse as chCourse,\n\t\tcourse as wpCourse,\n\t\tbannerList,\n\t\tactiveBanner,\n\t\tactiveVersion\n\t} from '$lib/store/app-stores';\n\timport { getCharDetails, getWpDetails } from '$lib/helpers/gacha/itemdrop-base';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport hotkeys from 'hotkeys-js';\n\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\timport FatepointSVG from './_svg-background.svelte';\n\timport InventoryItem from '../../_inventory/_inventory-item.svelte';\n\n\tconst { featured = [], type: bannerType } = $bannerList[$activeBanner];\n\tconst featuredWp = featured.map(({ name }) => getWpDetails(name));\n\tconst isChronicled = bannerType.match('chronicled');\n\n\tconst getChronicledData = (course) => {\n\t\tif (bannerType.match('weapon')) return null;\n\t\tconst { selected, type } = course;\n\t\tif (type === 'weapon') return getWpDetails(selected);\n\t\treturn getCharDetails(selected);\n\t};\n\n\t$: ({ point, type: itemType } = isChronicled ? $chCourse : $wpCourse);\n\t$: selectedData = featuredWp[$wpCourse.selected] || getChronicledData($chCourse);\n\t$: hasCourse = !!selectedData?.name;\n\t$: steps = $activeVersion.patch >= 5.0 ? 1 : 2;\n\n\tlet targetActive = null;\n\tconst cancelCourse = getContext('cancelCourse');\n\tconst setCourse = getContext('setCourse');\n\n\tconst select = (i) => {\n\t\tplaySfx('click2');\n\t\ttargetActive = i;\n\t};\n\n\t// Hotkeys\n\thotkeys('left,right', 'epipath', (e) => {\n\t\te.preventDefault();\n\t\tif (hasCourse || isChronicled) return;\n\n\t\tplaySfx('click2');\n\t\tconst [key] = hotkeys.getPressedKeyString();\n\t\tconst to = key.toLocaleLowerCase();\n\t\tif (to === 'left') {\n\t\t\ttargetActive = targetActive <= 0 ? 1 : targetActive - 1;\n\t\t}\n\t\tif (to === 'right') {\n\t\t\ttargetActive = targetActive >= 1 ? 0 : targetActive + 1;\n\t\t}\n\t});\n\n\thotkeys('enter', 'epipath', (e) => {\n\t\te.preventDefault();\n\t\tif (targetActive === null) return;\n\t\tsetCourse(targetActive);\n\t});\n</script>\n\n<div class=\"item-picker\" class:counter={hasCourse} class:isChronicled>\n\t<div class=\"bg\">\n\t\t<FatepointSVG flat={!hasCourse} {point} steps={isChronicled ? 1 : steps} />\n\t</div>\n\n\t{#if !isChronicled}\n\t\t<h2 class=\"top card-stroke\">{$t('epitomizedPath.selectWeapon')}</h2>\n\t{:else if hasCourse}\n\t\t<h2 class=\"top\">{$t('epitomizedPath.setFor')}</h2>\n\t\t<div class=\"note\">{$t('epitomizedPath.dropType', { values: { itemType: $t(itemType) } })}</div>\n\t{:else}\n\t\t<h2 class=\"top float\">{$t('epitomizedPath.notSetYet')}</h2>\n\t{/if}\n\n\t<!--  -->\n\t<div class=\"item-wrapper\">\n\t\t<div class=\"item-row\">\n\t\t\t{#if hasCourse}\n\t\t\t\t{@const { name, weaponType } = selectedData || {}}\n\t\t\t\t{@const isWp = !!weaponType || bannerType.match('weapon')}\n\t\t\t\t{@const localName = isWp ? $t(name) : $t(`${name}.name`)}\n\t\t\t\t{@const type = isWp ? 'weapon' : 'character'}\n\t\t\t\t<div class=\"item-col\">\n\t\t\t\t\t<button style=\"pointer-events: none; transform: scale(.9)\">\n\t\t\t\t\t\t<InventoryItem noStars itemdata={{ name, weaponType, localName, rarity: 5, type }} />\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t{:else}\n\t\t\t\t{#each featuredWp as { name, weaponType }, i}\n\t\t\t\t\t<div class=\"item-col\" class:active={targetActive === i} on:click={() => select(i)}>\n\t\t\t\t\t\t<button>\n\t\t\t\t\t\t\t<InventoryItem\n\t\t\t\t\t\t\t\tnoStars\n\t\t\t\t\t\t\t\titemdata={{ name, weaponType, localName: $t(name), rarity: 5, type: 'weapon' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<!-- Weapon Epitomized -->\n\t\t{#if !isChronicled}\n\t\t\t<div class=\"text card-stroke\">\n\t\t\t\t<div>\n\t\t\t\t\t{#if hasCourse}\n\t\t\t\t\t\t{$t('epitomizedPath.fatePoint')} : <span>{$wpCourse.point}</span>/{steps}\n\t\t\t\t\t{:else if targetActive === null}\n\t\t\t\t\t\t{$t('epitomizedPath.selectWeapon')}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t{@html $t('epitomizedPath.chartCourseOf', {\n\t\t\t\t\t\t\tvalues: { target: `<span> ${$t(featuredWp[targetActive].name)} </span>` }\n\t\t\t\t\t\t})}\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Chronicled Epitomized -->\n\t\t{:else if hasCourse}\n\t\t\t<div class=\"text card-stroke\">\n\t\t\t\t<div>\n\t\t\t\t\t{$t('epitomizedPath.fatePoint')} : <span>{point}</span>/1\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n\n\t<div class=\"button\">\n\t\t{#if hasCourse}\n\t\t\t<ButtonModal on:click={cancelCourse} type=\"cancel\">\n\t\t\t\t{$t('epitomizedPath.cancelCourse')}\n\t\t\t</ButtonModal>\n\t\t{:else if !isChronicled}\n\t\t\t<ButtonModal on:click={() => setCourse(targetActive)} disabled={targetActive === null}>\n\t\t\t\t{$t('epitomizedPath.chartCourse')}\n\t\t\t</ButtonModal>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.item-picker {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\tcolor: #383b40;\n\t}\n\t.item-picker,\n\t.item-picker > div {\n\t\tposition: relative;\n\t\tpadding: 5%;\n\t}\n\t.item-picker .bg {\n\t\tposition: absolute;\n\t\twidth: 100%;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\t.counter.item-picker .bg {\n\t\twidth: 85%;\n\t\ttop: 47%;\n\t}\n\n\th2.top {\n\t\tfont-size: calc(4.75 / 100 * var(--modal-height));\n\t\tmargin-bottom: calc(4 / 100 * var(--modal-height));\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\th2.float.top {\n\t\tcolor: #aa9077;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\twidth: 75%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\t.note {\n\t\tfont-size: calc(2.75 / 100 * var(--modal-height));\n\t\tpadding: 0 !important;\n\t\tposition: absolute !important;\n\t\ttop: 15%;\n\t\tleft: 50%;\n\t\twidth: 75%;\n\t\tcolor: #ea930e;\n\t\ttransform: translateX(-50%);\n\t}\n\n\t.item-wrapper {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\tborder: solid #dcd8cd;\n\t\tborder-width: 3px 0;\n\t\tfont-size: x-large;\n\t\tpadding-left: 0 !important;\n\t\tpadding-right: 0 !important;\n\t}\n\t.isChronicled .item-wrapper,\n\t.counter .item-wrapper {\n\t\tborder: none;\n\t}\n\n\t.item-row {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tpadding: 0 10%;\n\t\tbackground-color: #dcd8cd;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\toverflow: hidden;\n\t\ttext-align: center;\n\t\tcolor: #3a4156;\n\t\tline-height: 1.2rem;\n\t}\n\t.isChronicled .item-row {\n\t\tbackground-color: transparent;\n\t}\n\t.counter .item-row {\n\t\tbackground-color: transparent;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\n\t@media screen and (min-width: 800px) {\n\t\tmain:not(.mobile) .counter .item-row {\n\t\t\ttop: 47%;\n\t\t}\n\t}\n\n\t.item-col {\n\t\tdisplay: inline-block;\n\t\tpadding: 5%;\n\t\twidth: 45%;\n\t}\n\t@media screen and (max-width: 800px) {\n\t\t.item-picker:not(.isChronicled) .item-col {\n\t\t\ttransform: translateY(2.5%);\n\t\t}\n\t}\n\n\t.item-col button {\n\t\tfont-size: small;\n\t\taspect-ratio: 8.75 / 10;\n\t\tposition: relative;\n\t\twidth: 100%;\n\t}\n\n\t.item-col.active button::after,\n\t.item-col.active button::before {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t}\n\n\t.item-col.active button::after {\n\t\tdisplay: block;\n\t\tcontent: '';\n\t\twidth: 100%;\n\t\theight: calc(100% - 0.4rem);\n\t\tborder: solid #bed634;\n\t\tborder-width: 0.2rem 0;\n\t\tborder-radius: 0.3rem;\n\t}\n\t.item-col.active button::before {\n\t\tcontent: '✔';\n\t\tfont-size: 1.2rem;\n\t\tcolor: #759a28;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tbackground-color: #bed634;\n\t\twidth: 20%;\n\t\theight: 20%;\n\t\tz-index: +1;\n\t\tborder-top-right-radius: 0.5em;\n\t}\n\n\t.text {\n\t\tmargin-top: auto;\n\t\theight: 40%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tfont-size: calc(0.045 * var(--modal-height));\n\t}\n\n\t.counter .text {\n\t\theight: unset;\n\t\tmargin-bottom: -1rem;\n\t}\n\n\t.text :global(span) {\n\t\tcolor: #ea930e;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/epitomized-path/_svg-background.svelte",
    "content": "<script>\n\texport let flat = true;\n\texport let point = 0;\n\texport let steps = 1;\n</script>\n\n<svg\n\tclass:flat\n\tclass:full={point >= steps}\n\txmlns=\"http://www.w3.org/2000/svg\"\n\txml:space=\"preserve\"\n\twidth=\"100%\"\n\theight=\"100%\"\n\tversion=\"1.1\"\n\tstyle=\"shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd\"\n\tviewBox=\"0 0 1500001 1500018\"\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n\t<defs />\n\n\t<g id=\"Layer_x0020_1\">\n\t\t<metadata id=\"CorelCorpID_0Corel-Layer\" />\n\t\t<path\n\t\t\tclass:filled={point > 0}\n\t\t\tclass={flat ? 'fil1' : 'fil0'}\n\t\t\td=\"M1237835 754784c-41627,24154 -57713,54476 -62457,79583 -33219,176299 -172756,315073 -349462,347141 -25370,4606 -50457,11941 -76748,59882 -22997,-39721 -55914,-55418 -81993,-60308 -179134,-33502 -319645,-176741 -349037,-357292 -3738,-22943 -12543,-47658 -61831,-69006l107099 0c804,211542 172526,382804 384273,382804 211731,0 383470,-171245 384274,-382804l105882 0z\"\n\t\t/>\n\t\t<path\n\t\t\tclass:filled={point >= steps}\n\t\t\tclass={flat ? 'fil1' : 'fil0'}\n\t\t\td=\"M752463 258628c26291,50936 54372,62469 82613,68209 168468,34335 301555,166006 337946,333729 6484,29871 16476,66296 70689,90940 -2014,1079 -3971,2172 -5876,3278l-105882 0c2,-498 19,-991 19,-1489 0,-212228 -172047,-384292 -384293,-384292 -212228,0 -384292,172047 -384292,384292 0,498 17,991 19,1489l-107099 0c52566,-19719 58058,-48597 61725,-71328 28241,-175111 160956,-315250 332170,-354422 31341,-7175 75987,-11250 102279,-70406l-18 0z\"\n\t\t/>\n\t\t<path\n\t\t\tclass=\"fil1\"\n\t\t\td=\"M751489 18l60785 226720c6804,25370 40501,32740 68298,39260l-8486 39544 -1293 -691c-55223,2374 -121395,-68493 -112714,-91276l13146 -34495 -24644 -45992 -19719 54213 12845 22996c7600,13606 -8132,48987 -38357,73595 -21508,17504 -51112,28807 -80983,26788l-6307 -41971c27957,-4412 56694,-213 66792,-33768l70637 -234941 0 18zm479803 614060c4411,27957 212,56693 33768,66792l234941 70636 -226721 60786c-25370,6803 -32740,40500 -39260,68298l-39544 -8486 691 -1294c-2374,-55223 68493,-121394 91277,-112713l34494 13145 45993 -24643 -54213 -19719 -22997 12844c-13606,7601 -48986,-8131 -73595,-38356 -17504,-21508 -28807,-51113 -26787,-80983l41970 -6307 -17 0zm-345352 617231c-27957,4412 -56693,213 -66791,33768l-70637 234941 -60786 -226720c-6803,-25371 -40500,-32741 -68298,-39260l8487 -39544 1293 691c55223,-2374 121395,68493 112713,91276l-13145 34495 24644 45992 19718 -54213 -12844 -22996c-7601,-13607 8132,-48987 38356,-73595 21508,-17504 51113,-28808 80983,-26788l6307 41971 0 -18zm-617231 -345351c-4412,-27957 -213,-56693 -33768,-66792l-234941 -70636 226720 -60786c25371,-6803 32741,-40501 39261,-68298l39543 8486 -691 1294c2374,55222 -68492,121394 -91276,112713l-34495 -13146 -45992 24644 54213 19719 22996 -12845c13607,-7600 48987,8132 73595,38357 17504,21508 28808,51112 26788,80983l-41971 6307 18 0z\"\n\t\t/>\n\t\t<path\n\t\t\tclass=\"fil1\"\n\t\t\td=\"M820743 133283c91099,116664 206594,101800 284937,176298l3207 2534 -9726 50864 -22306 -17716c-61264,-58253 -147261,-57066 -223124,-121501l-32988 -90497 0 0 0 18zm375186 249185c95121,112625 59138,196106 170523,288675l-77794 -19896c-69839,-75951 -50049,-148040 -131847,-242506l-13589 -10789 52707 -15502 0 18zm170807 438293c-116665,91099 -101800,206594 -176299,284937l-2533 3207 -50865 -9727 17717 -22305c58252,-61264 57065,-147261 121501,-223124l90496 -32988 0 0 -17 0zm-249185 375186c-112625,95121 -196106,59138 -288676,170523l19896 -77794c75951,-69839 148040,-50050 242506,-131848l10789 -13588 15502 52707 -17 0zm-438293 170806c-91100,-116664 -206595,-101800 -284938,-176298l-3207 -2534 9727 -50865 22305 17717c61265,58253 147261,57066 223124,121501l32989 90497 0 0 0 -18zm-375187 -249185c-95120,-112625 -59138,-196106 -170523,-288675l77794 19895c69839,75952 50050,148041 131848,242506l13589 10790 -52708 15502 0 -18zm-170806 -438293c116664,-91099 101800,-206594 176299,-284937l2533 -3207 50865 9727 -17717 22305c-58252,61264 -57065,147261 -121501,223124l-90497 32988 0 0 18 0zm249185 -375186c112625,-95121 196106,-59138 288676,-170523l-19896 77794c-75952,69839 -148041,50050 -242506,131847l-10790 13589 -15502 -52707 18 0z\"\n\t\t/>\n\t\t<path\n\t\t\tclass=\"fil1\"\n\t\t\td=\"M1128694 1220874c26841,2374 67359,15608 98576,36975 -9850,-34495 -10559,-79052 -8539,-110269 -28843,0 -65393,-24449 -114681,-60591 21367,50936 24644,105042 24644,133903l0 -18zm-762845 -948267c-26840,-2375 -67358,-15609 -98575,-36975 9850,34494 10559,79052 8539,110268 28843,0 65393,24449 114680,60591 -21366,-50935 -24644,-105042 -24644,-133902l0 18zm762845 0c26841,-2375 67359,-15609 98576,-36975 -9850,34494 -10559,79052 -8539,110268 -28843,0 -65393,24449 -114681,60591 21367,-50935 24644,-105042 24644,-133902l0 18zm-762845 948267c-26840,2374 -67358,15608 -98575,36975 9850,-34495 10559,-79052 8539,-110269 28843,0 65393,-24449 114680,-60591 -21366,50936 -24644,105042 -24644,133903l0 -18z\"\n\t\t/>\n\t\t<path\n\t\t\tclass=\"fil1\"\n\t\t\td=\"M738201 377613l-31748 28878c21348,14794 32864,29871 44362,52867 11498,-24644 24644,-39721 44363,-49589l-34371 -32191c21385,602 42326,3029 62664,7087l22465 22464c-73754,65074 -83623,116151 -91825,226225 32864,-294221 335164,-220290 179080,-77351 42715,-116647 -96928,-114999 -175785,110073l-4164 69272c45515,-77935 86316,-197416 152027,-139908 65711,57508 -64081,113369 -139731,150521l66774 -4961c234941,-77227 236730,-207533 110375,-172808 126497,-154437 241213,144887 -75881,174456 90037,-4447 154437,3295 228670,-85944l19878 19878c4004,20020 6395,40625 7051,61672l-28878 -31748c-14794,21348 -29871,32864 -52867,44362 24644,11498 39721,24644 49589,44363l32191 -34371c-602,21385 -3029,42326 -7086,62664l-22465 22465c-65073,-73754 -116151,-83623 -226224,-91825 294221,32864 220289,335164 77351,179080 116646,42715 114999,-96928 -110074,-175785l-69272 -4164c77935,45515 197417,86316 139908,152027 -57508,65711 -113369,-64081 -150521,-139731l4961 66774c77227,234941 207533,236730 172809,110375 154436,126497 -144887,241212 -174457,-75881 4447,90037 -3295,154437 85944,228670l-19878 19878c-20020,4004 -40624,6395 -61672,7051l31748 -28878c-21348,-14794 -32864,-29871 -44362,-52867 -11498,24644 -24644,39721 -44363,49589l34371 32191c-21384,-602 -42325,-3029 -62664,-7086l-22465 -22465c73755,-65073 83623,-116151 91826,-226224 -32865,294221 -335165,220289 -179081,77351 -42715,116646 96928,114999 175785,-110074l4164 -69272c-45514,77935 -86316,197417 -152027,139908 -65711,-57508 64081,-113369 139731,-150521l-66774 4961c-234941,77227 -236730,207533 -110375,172809 -126497,154436 -241212,-144887 75881,-174457 -90036,4447 -154437,-3295 -228669,85944l-19879 -19878c-4004,-20020 -6395,-40624 -7051,-61672l28878 31748c14794,-21348 29871,-32864 52867,-44362 -24644,-11498 -39721,-24644 -49589,-44363l-32191 34371c602,-21384 3029,-42325 7086,-62664l22465 -22465c65074,73755 116151,83623 226225,91826 -294221,-32865 -220290,-335165 -77352,-179081 -116646,-42715 -114999,96928 110074,175785l69272 4164c-77935,-45514 -197417,-86316 -139908,-152027 57508,-65711 113369,64081 150521,139731l-4961 -66774c-77227,-234941 -207533,-236730 -172808,-110375 -154437,-126497 144887,-241212 174456,75881 -4447,-90036 3295,-154436 -85944,-228669l19878 -19878c20020,-4004 40625,-6396 61672,-7052z\"\n\t\t/>\n\t</g>\n</svg>\n\n<style>\n\tsvg {\n\t\twidth: 100%;\n\t}\n\t.fil0 {\n\t\tfill: #a0907d;\n\t}\n\t.fil1 {\n\t\tfill: #d7d0c7;\n\t}\n\t.flat .fil1 {\n\t\tfill: #e1ddd4;\n\t}\n\t.filled {\n\t\tfill: #5b9ee2;\n\t}\n\n\t.full .fil1 {\n\t\tfill: #d5d9df;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/index.svelte",
    "content": "<script>\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport { fade, fly } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport {\n\t\tactiveBanner,\n\t\tbannerList,\n\t\tassets,\n\t\tactiveVersion,\n\t\twishAmount,\n\t\tacquaint,\n\t\tintertwined,\n\t\tstardust,\n\t\tstarglitter,\n\t\tcustomData\n\t} from '$lib/store/app-stores';\n\timport { localBalance, localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { APP_TITLE } from '$lib/env';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport WISH, { roll } from '$lib/helpers/gacha/Wish';\n\n\t// Components\n\timport Header from './_header.svelte';\n\timport Footer from './_footer.svelte';\n\timport OutOfPrimogem from './_out-of-primogem.svelte';\n\timport BannerItem from './_banner-item.svelte';\n\timport EpitomizedModal from './epitomized-path/EpitomizedPath.svelte';\n\timport Meteor from './wish-result/_meteor.svelte';\n\timport WishResult from './wish-result/WishResult.svelte';\n\n\tlet rollCount = 0;\n\tlet result = [];\n\tlet WishInstance;\n\n\tlet type;\n\t$: nowBanner = $bannerList[$activeBanner] || {};\n\t$: ({ type } = nowBanner);\n\t$: bannerType = type || '';\n\t$: isEvent = bannerType.match(/(event|chronicled)/);\n\t$: currencyUsed = isEvent ? $intertwined : $acquaint;\n\t$: isUnlimited = $wishAmount === 'unlimited';\n\n\t// Load Wish Configuration When changing banner Version\n\tconst initialWish = async ({ patch, phase }) => {\n\t\tif (!patch || !phase) return;\n\t\tWishInstance = await WISH.init(patch, phase, $customData);\n\t};\n\tonMount(() => activeVersion.subscribe(initialWish));\n\n\tconst getIndexOfCharBanner = () => {\n\t\tconst events = $bannerList.filter(({ type }) => type === 'character-event');\n\t\tconst index = events.findIndex(({ character }) => character === nowBanner.character);\n\t\treturn index;\n\t};\n\n\t// Epitomized Modal\n\tlet openEpitomized = false;\n\tconst handleEpitomizedModal = () => (openEpitomized = !openEpitomized);\n\tsetContext('handleEpitomizedModal', handleEpitomizedModal);\n\n\t// Wish Roller\n\tlet multi = false;\n\tlet rollCost;\n\tlet showConvertModal = false;\n\tlet onWish = getContext('onWish');\n\n\tconst doRoll = async (count, bannerToRoll) => {\n\t\trollCount = count;\n\t\tmulti = count > 1;\n\t\tconst tmp = [];\n\n\t\trollCost = bannerToRoll === 'beginner' ? 8 : count;\n\t\tif (!isUnlimited && rollCost > currencyUsed) return (showConvertModal = true);\n\t\tconst indexOfCharBanner = bannerToRoll === 'character-event' ? getIndexOfCharBanner() : 0;\n\t\tonWish.set(true);\n\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst result = await roll(bannerToRoll, WishInstance, indexOfCharBanner);\n\t\t\ttmp.push(result);\n\t\t}\n\n\t\tresult = tmp;\n\t\thandleMeteorAnimation();\n\t\tif (isUnlimited) return;\n\t\tupdateMilestones();\n\t\tupdateFatesBalance(bannerToRoll);\n\t};\n\tsetContext('doRoll', doRoll);\n\n\tconst updateFatesBalance = (banner) => {\n\t\tconst isAcquaint = ['beginner', 'standard'].includes(banner);\n\t\tconst funds = isAcquaint ? acquaint : intertwined;\n\t\tfunds.update((n) => {\n\t\t\tconst afterUpdate = n - (banner === 'beginner' && rollCount > 1 ? 8 : rollCount);\n\t\t\tlocalBalance.set(isAcquaint ? 'acquaint' : 'intertwined', afterUpdate);\n\t\t\treturn afterUpdate;\n\t\t});\n\t};\n\n\tconst updateMilestones = () => {\n\t\tconst update = (type) => {\n\t\t\tconst qty = result.reduce((prev, { bonusQty, bonusType }) => {\n\t\t\t\treturn prev + (bonusType === type ? bonusQty : 0);\n\t\t\t}, 0);\n\n\t\t\tconst milestone = type === 'stardust' ? stardust : starglitter;\n\t\t\tmilestone.update((n) => {\n\t\t\t\tconst afterUpdate = n + qty;\n\t\t\t\tlocalBalance.set(type, afterUpdate);\n\t\t\t\treturn afterUpdate;\n\t\t\t});\n\t\t};\n\n\t\tupdate('starglitter');\n\t\tupdate('stardust');\n\t};\n\n\t// Wish Result Handler\n\tlet skipSplashArt = false;\n\tlet showWishResult = false;\n\tlet showMeteor = false;\n\tlet single = true;\n\tlet radiance = false;\n\tlet meteorStar = 3;\n\n\tconst closeResult = () => {\n\t\tshowWishResult = false;\n\t\tonWish.set(false);\n\t\tcheckObtained();\n\t};\n\tsetContext('closeResult', closeResult);\n\n\tconst showSplashArt = ({ skip = false } = {}) => {\n\t\tskipSplashArt = skip;\n\t\tshowMeteor = false;\n\t\tshowWishResult = true;\n\t};\n\tsetContext('showSplashArt', showSplashArt);\n\n\tconst handleMeteorAnimation = () => {\n\t\tconst autoSkip = localConfig.get('autoskip');\n\t\tif (autoSkip) return showSplashArt({ skip: true });\n\n\t\tconst stars = result.map(({ rarity }) => rarity);\n\t\tsingle = stars.length === 1;\n\t\tmeteorStar = 3;\n\t\tif (stars.includes(4)) meteorStar = 4;\n\t\tif (stars.includes(5)) meteorStar = 5;\n\t\tconst captureStatus = result.map(({ captured = false }) => captured);\n\t\tradiance = captureStatus.includes(true);\n\t\tshowMeteor = true;\n\t};\n\n\t// Modal Convert\n\tconst closeModal = () => {\n\t\tplaySfx('close');\n\t\tshowConvertModal = false;\n\t};\n\tsetContext('closeModal', closeModal);\n\n\tconst reroll = (amount) => {\n\t\tplaySfx();\n\t\tconst multiAmount = bannerType === 'beginner' ? 10 : amount;\n\t\tdoRoll(multi ? multiAmount : 1, bannerType);\n\t\tshowConvertModal = false;\n\t};\n\tsetContext('reroll', reroll);\n\n\t// Obtained Bonus\n\tconst countMilestone = (masterless) => {\n\t\treturn result.reduce((a, { bonusType, bonusQty }) => {\n\t\t\treturn a + (bonusType === masterless ? bonusQty : 0);\n\t\t}, 0);\n\t};\n\n\tconst showObtained = getContext('openObtained');\n\tconst checkObtained = () => {\n\t\tconst stardustQty = countMilestone('stardust');\n\t\tconst starglitterQty = countMilestone('starglitter');\n\n\t\tconst obtainedItems = [\n\t\t\t{ item: 'stardust', qty: stardustQty },\n\t\t\t{ item: 'starglitter', qty: starglitterQty }\n\t\t];\n\n\t\tif (!stardustQty && !starglitterQty) return;\n\t\tshowObtained(obtainedItems);\n\t};\n</script>\n\n<svelte:head>\n\t<title>{$t('title', { default: APP_TITLE })}</title>\n</svelte:head>\n\n<div class=\"overlay\" in:fade|local />\n\n<div class=\"wish-container\" class:show={showMeteor || showWishResult}>\n\t<Meteor show={showMeteor} isSingle={single} rarity={meteorStar} {radiance} />\n\t{#if showWishResult}\n\t\t<WishResult list={result} skip={skipSplashArt} />\n\t{/if}\n</div>\n\n<section style=\"background-image: url('{$assets['wish-background.webp']}');\">\n\t<div class=\"col top\">\n\t\t<Header {bannerType} />\n\t</div>\n\n\t<div class=\"col banner\">\n\t\t<div class=\"item\">\n\t\t\t<BannerItem />\n\t\t</div>\n\n\t\t<div class=\"col button\" in:fly={{ y: 20, duration: 1000 }}>\n\t\t\t<Footer {bannerType} />\n\t\t</div>\n\t</div>\n</section>\n\n{#if openEpitomized}\n\t<EpitomizedModal />\n{/if}\n\n{#if showConvertModal}\n\t<OutOfPrimogem isEventBanner={isEvent} {rollCost} />\n{/if}\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\toverflow: hidden;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-position: 20%;\n\t}\n\n\t.overlay {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: rgba(0, 0, 0, 0.08);\n\t\tbox-shadow: 0 0 50vh rgba(0, 0, 0, 0.4) inset;\n\t}\n\n\t.wish-container {\n\t\tposition: fixed;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tz-index: 15;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t}\n\n\t.wish-container.show {\n\t\tpointer-events: unset;\n\t}\n\n\t.top,\n\t.banner,\n\t.button,\n\t.item {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.top {\n\t\tmin-height: 70px;\n\t}\n\t.banner,\n\t.item {\n\t\theight: 100%;\n\t}\n\t.item {\n\t\tposition: relative;\n\t}\n\t.banner {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t}\n\n\t.button {\n\t\theight: 120px;\n\t}\n\n\t/* Mobile */\n\t:global(.mobile) section {\n\t\tflex-direction: row;\n\t}\n\t:global(.mobile) .top {\n\t\theight: 100%;\n\t\twidth: min-content;\n\t}\n\t:global(.mobile) .banner {\n\t\twidth: 120%;\n\t\tmargin-left: -20px;\n\t}\n\t:global(.mobile) .button {\n\t\theight: 50px;\n\t\tmargin-bottom: 0.2rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/ResultList.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport OverlayScrollbars from 'overlayscrollbars';\n\timport { removeAnimClass } from '$lib/helpers/transition';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport ResultListItem from './_result-list-item.svelte';\n\n\texport let standalone = false;\n\texport let list = [];\n\tlet clientHeight;\n\tlet clientWidth;\n\tlet container;\n\n\tconst sortByType = (a, b) => {\n\t\tif (a.type > b.type) return 1;\n\t\tif (b.type > a.type) return -1;\n\t\treturn 0;\n\t};\n\n\tconst sortByName = (a, b) => {\n\t\tif (a.name > b.name) return 1;\n\t\tif (a.name < b.name) return -1;\n\t\treturn 0;\n\t};\n\n\tlet sortedWish = [];\n\tconst sortList = (list) => {\n\t\tconst item = (star) =>\n\t\t\tlist\n\t\t\t\t.filter(({ rarity }) => rarity === star)\n\t\t\t\t.sort(sortByName)\n\t\t\t\t.sort((a, b) => b.isNew - a.isNew)\n\t\t\t\t.sort(sortByType);\n\t\tconst threeStar = list.filter(({ rarity }) => rarity === 3);\n\t\tsortedWish = [...item(5), ...item(4), ...threeStar];\n\t};\n\n\t$: sortList(list);\n\n\tonMount(async () => {\n\t\tclientWidth = (clientHeight * 7) / 30;\n\n\t\tOverlayScrollbars(container, {\n\t\t\tsizeAutoCapable: false,\n\t\t\tclassName: 'os-theme-light',\n\t\t\tscrollbars: { visibility: 'hidden', autoHide: 'leave' }\n\t\t});\n\t\tif (standalone) return;\n\t\tplaySfx('resultList');\n\t});\n</script>\n\n<svg viewBox=\"0 0 151.000000 656.000000\" height=\"0\" width=\"0\" style=\"position: absolute;\">\n\t<clipPath\n\t\tid=\"wishframe\"\n\t\ttransform=\"scale(0.00066225165562914 0.00015455950540958)\"\n\t\tclipPathUnits=\"objectBoundingBox\"\n\t>\n\t\t<path\n\t\t\td=\"M734 6419 c-25 -29 -100 -76 -199 -127 -125 -64 -165 -117 -165 -217\n\t\t\t0 -22 -3 -50 -6 -63 -9 -33 -83 -72 -155 -82 -68 -10 -79 -19 -79 -67 0 -24\n\t\t\t-7 -37 -32 -54 -18 -12 -43 -34 -55 -48 l-22 -26 -1 -2502 c0 -1542 4 -2503 9\n\t\t\t-2503 5 0 13 -9 16 -20 4 -11 23 -28 43 -38 32 -15 37 -22 40 -57 4 -49 23\n\t\t\t-65 76 -65 47 0 113 -28 140 -58 12 -14 21 -45 26 -90 13 -117 54 -164 215\n\t\t\t-250 55 -28 114 -66 132 -82 18 -17 35 -30 39 -30 4 0 23 15 44 34 21 19 80\n\t\t\t56 131 82 153 79 197 131 210 252 4 39 13 70 25 84 27 30 93 58 140 58 53 0\n\t\t\t72 16 76 65 3 35 8 42 40 57 20 10 39 27 43 38 3 11 11 20 16 20 5 0 9 961 9\n\t\t\t2503 l-1 2502 -22 26 c-12 14 -37 36 -54 48 -26 17 -33 30 -33 54 0 48 -11 57\n\t\t\t-79 67 -72 10 -146 49 -155 82 -3 13 -6 41 -6 63 0 100 -40 153 -165 217 -106\n\t\t\t54 -153 84 -191 119 l-30 29 -20 -21z\"\n\t\t/>\n\t</clipPath>\n</svg>\n\n<div class=\"scroll\" bind:this={container}>\n\t<div class=\"container animate\" use:removeAnimClass>\n\t\t<div class=\"wishlist\" bind:clientHeight style=\"--card-height: {clientHeight}px\">\n\t\t\t{#each sortedWish as data, i}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"item-box\"\n\t\t\t\t\tclass:animate={!standalone}\n\t\t\t\t\tstyle=\"animation-delay: {0.5 + i * 0.1}s\"\n\t\t\t\t\tuse:removeAnimClass\n\t\t\t\t>\n\t\t\t\t\t<ResultListItem {data} index={i} {clientHeight} {clientWidth} />\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t</div>\n\t\t<div class=\"shadows\" style=\"--card-height: {clientHeight}px\">\n\t\t\t{#each sortedWish as { rarity, type, isNew }, i}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"shadow shadow{rarity}\"\n\t\t\t\t\tclass:animate={!standalone}\n\t\t\t\t\tstyle=\"animation-delay: {0.5 + i * 0.1}s\"\n\t\t\t\t\tuse:removeAnimClass\n\t\t\t\t>\n\t\t\t\t\t{#if type === 'character' && !isNew}\n\t\t\t\t\t\t<span class=\"convertion\"> {$t('wish.result.convertion')} </span>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.scroll {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t}\n\t.container {\n\t\twidth: 100% !important;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\t.container.animate::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: #fff;\n\t\topacity: 1;\n\t\tanimation: reveal forwards 1s 1;\n\t\tpointer-events: none;\n\t}\n\n\t.close {\n\t\tposition: fixed;\n\t\ttop: 15px;\n\t\tright: 3%;\n\t\tz-index: 10;\n\t\topacity: 0;\n\t}\n\n\t:global(.mobile) .close {\n\t\ttop: 0.3rem;\n\t\tright: 6%;\n\t}\n\n\t/* Wish List */\n\t.wishlist,\n\t.shadows {\n\t\tdisplay: block;\n\t\theight: 40vw;\n\t\tmax-height: 60vh;\n\t\tmin-height: 40vh;\n\t\twidth: 100%;\n\t\tpadding: 0 20px;\n\t\twhite-space: nowrap;\n\t\ttext-align: center;\n\t}\n\n\t.item-box.animate,\n\t.shadow.animate {\n\t\topacity: 0;\n\t\tanimation: wishReveal forwards 0.4s 1;\n\t\tpointer-events: none;\n\t}\n\n\t:global(.mobile) .wishlist,\n\t:global(.mobile) .shadows {\n\t\tmin-height: 70vh;\n\t}\n\n\t:global(.mobile) .wishlist,\n\t:global(.mobile) .shadows {\n\t\tmax-height: 72.5vh;\n\t}\n\n\t.item-box :global(.item),\n\t.shadow {\n\t\theight: 100%;\n\t\taspect-ratio: 7/30;\n\t\tborder-radius: 100%;\n\t\tfilter: drop-shadow(0px 0px 6px rgb(101, 187, 246));\n\t\tposition: relative;\n\t}\n\n\t.shadow5,\n\t.shadow4,\n\t.item-box :global(.item.star4),\n\t.item-box :global(.item.star5) {\n\t\tfilter: unset;\n\t}\n\n\t.item-box {\n\t\theight: 100%;\n\t\tdisplay: inline-block;\n\t}\n\n\t.shadows {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tz-index: -1;\n\t}\n\n\t.shadow {\n\t\tdisplay: inline-block;\n\t\theight: 100%;\n\t\tborder-radius: 100%;\n\t}\n\t.shadow span {\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\tbottom: -5%;\n\t\tcolor: #fff;\n\t\ttransform: translateX(-50%);\n\t\t-webkit-text-stroke: 0.3px #000;\n\t}\n\n\t.shadow.shadow5 {\n\t\tbox-shadow: 0 0 4rem rgba(255, 255, 255, 0.5), 0 0 1rem rgb(249, 170, 2),\n\t\t\t0 0 1.4rem rgb(249, 170, 2), 0 0 2rem rgb(249, 121, 2);\n\t\tbackground-color: rgb(249, 170, 2);\n\t\tfilter: unset;\n\t}\n\n\t.shadow.shadow4 {\n\t\tbox-shadow: 0 0 4rem rgba(255, 255, 255, 0.6), 0 0 1rem rgb(138, 3, 161),\n\t\t\t0 0 1.4rem rgb(217, 0, 255), 0 0 2rem rgb(29, 4, 255);\n\t\tbackground-color: rgb(185, 18, 214);\n\t}\n\n\t.convertion {\n\t\tfont-size: calc(3 / 100 * var(--card-height));\n\t}\n\n\t@keyframes wishReveal {\n\t\t0% {\n\t\t\ttransform: translateX(150%);\n\t\t}\n\t\t100% {\n\t\t\ttransform: translateX(0);\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t@keyframes reveal {\n\t\t20% {\n\t\t\topacity: 1;\n\t\t}\n\t\t99% {\n\t\t\topacity: 0;\n\t\t}\n\t\t100% {\n\t\t\topacity: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/WishResult.svelte",
    "content": "<script>\n\timport { getContext, onMount, setContext } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t, locale } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { assets, viewportHeight, viewportWidth } from '$lib/store/app-stores';\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx, pauseSfx as stopSfx } from '$lib/helpers/audio/audio';\n\timport { setActiveOutfit } from '$lib/helpers/outfit';\n\timport { createLink } from '$lib/helpers/shareable-link';\n\n\t// Component\n\timport ResultList from './ResultList.svelte';\n\timport SplashLight from './_splash-light.svelte';\n\timport ItemInfo from './_item-info.svelte';\n\timport WeaponBonus from './_weapon-bonus.svelte';\n\timport ScreenshotShare from '../../_index/ScreenshotShare.svelte';\n\timport SplashArt from './_splash-art.svelte';\n\n\texport let list = [];\n\texport let skip = false;\n\texport let standalone = false;\n\texport let isOutfit = false;\n\n\tlet preview = standalone || false;\n\tsetContext('preview', (val) => (preview = val));\n\n\tconst lc = $locale?.toLowerCase() || '';\n\tconst isYuanshen = lc.match(/(cn|ja)/);\n\n\tconst splashBG = isOutfit ? $assets['outfit-background.webp'] : $assets['splash-background.webp'];\n\tlist = list.map(setActiveOutfit);\n\n\tlet clientHeight = 0;\n\tlet clientWidth = 0;\n\tconst calculateWrapperHeight = (vw, vh) => {\n\t\tif (vw < vh) return '80vw';\n\t\tif (vw < vh * 1.5) return '65vw';\n\t\treturn '100%';\n\t};\n\t$: wrapperHeight = calculateWrapperHeight($viewportWidth, $viewportHeight);\n\n\tlet isSplashOut = false;\n\tlet timer;\n\tconst startTimer = () => {\n\t\tclearTimeout(timer);\n\t\tisSplashOut = false;\n\t\ttimer = setTimeout(() => {\n\t\t\tisSplashOut = true;\n\t\t\tclearTimeout(timer);\n\t\t}, 1100);\n\t};\n\n\tconst playRevealAudio = () => {\n\t\tstartTimer();\n\t\tif (localConfig.get('muted')) return;\n\t\tif (activeIndex > 0) {\n\t\t\tconst starBefore = list[activeIndex - 1].rarity;\n\t\t\tstopSfx(`reveal${starBefore}Star`);\n\t\t}\n\t\tconst star = list[activeIndex].rarity;\n\t\tplaySfx(`reveal${star}Star`);\n\t};\n\n\tlet showResultList = false;\n\tlet activeIndex = 0;\n\n\tconst createShareableLink = (activeIndex, showResultList) => {\n\t\tconst isMulti = showResultList && list.length > 1;\n\t\tconst link = isMulti ? createLink(list) : createLink([list[activeIndex]]);\n\t\treturn link;\n\t};\n\n\tconst showItem = (startIndex) => {\n\t\t// Single Pull\n\t\tif (list.length === 1) {\n\t\t\tif (startIndex === 'start') playRevealAudio();\n\t\t\treturn;\n\t\t}\n\n\t\t// Multi Pull\n\t\tif (activeIndex > list.length - 2) {\n\t\t\tshowResultList = true;\n\t\t\treturn;\n\t\t}\n\t\tif (startIndex !== 'start') {\n\t\t\tactiveIndex = activeIndex + 1;\n\t\t}\n\t\tplayRevealAudio();\n\t};\n\n\tconst closeResult = getContext('closeResult');\n\tconst closeHandle = () => {\n\t\tplaySfx('close');\n\t\tcloseResult();\n\t\treturn;\n\t};\n\n\tconst skipHandle = () => {\n\t\tplaySfx();\n\t\tshowResultList = true;\n\t};\n\n\tonMount(() => {\n\t\tif (!skip || list.length === 1) showItem('start');\n\t\tif (skip || standalone) return (showResultList = true);\n\t});\n\n\t// Shortcut\n\tconst onWish = getContext('onWish');\n\thotkeys('enter,space', 'index', (e) => {\n\t\tif (!$onWish) return;\n\t\te.preventDefault();\n\t\tif (list.length > 1 && !showResultList) showItem();\n\t});\n\n\thotkeys('esc', 'index', (e) => {\n\t\tif (!$onWish) return;\n\t\te.preventDefault();\n\t\tif (list <= 1 || showResultList) return closeHandle();\n\t\treturn skipHandle();\n\t});\n</script>\n\n<div\n\tclass=\"wish-result\"\n\tclass:preview\n\tstyle=\"background-image: url({splashBG});\"\n\tout:fade={{ duration: 250 }}\n>\n\t<!-- Preview Only -->\n\t<div class=\"uid\">WishSimulator.App</div>\n\t<img\n\t\tsrc={$assets[`genshin-logo${isYuanshen ? '-cn' : ''}.webp`]}\n\t\talt=\"genshin logo\"\n\t\tclass=\"logo\"\n\t\tclass:cn={isYuanshen}\n\t/>\n\t<!-- End Preview Only -->\n\n\t{#if !standalone}\n\t\t{#if list.length > 1 && !showResultList}\n\t\t\t<button class=\"skip\" on:click={skipHandle}>\n\t\t\t\t{$t('wish.result.skip')} <i class=\"gi-caret-up\" />\n\t\t\t</button>\n\t\t{:else}\n\t\t\t<button class=\"close\" on:click={closeHandle} in:fade={{ delay: 1500 }}>\n\t\t\t\t<i class=\"gi-close\" />\n\t\t\t</button>\n\t\t{/if}\n\t{/if}\n\n\t{#if showResultList && list.length > 1}\n\t\t<ResultList {list} {standalone} />\n\t{:else}\n\t\t<div class=\"touch-box\" on:mousedown={showItem} />\n\t\t<div\n\t\t\tclass=\"zoomist-container\"\n\t\t\tstyle=\"height: {wrapperHeight};--width:{clientWidth}px;--height:{clientHeight}px\"\n\t\t\tbind:clientHeight\n\t\t\tbind:clientWidth\n\t\t\tin:fade={{ duration: 500, delay: 200 }}\n\t\t>\n\t\t\t{#each list as { name, rarity, type, outfitName, vision, weaponType, bonusQty, bonusType, stelaFortuna, useOutfit, offset, custom }, i}\n\t\t\t\t{#if activeIndex === i}\n\t\t\t\t\t<div class=\"art-wrapper\">\n\t\t\t\t\t\t{#if !isSplashOut} <SplashLight type=\"in\" {rarity} /> {/if}\n\n\t\t\t\t\t\t<div class=\"art-wrapper\">\n\t\t\t\t\t\t\t<SplashArt\n\t\t\t\t\t\t\t\toffset={offset?.splashArt}\n\t\t\t\t\t\t\t\t{custom}\n\t\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t\t\t{type}\n\t\t\t\t\t\t\t\t{outfitName}\n\t\t\t\t\t\t\t\t{weaponType}\n\t\t\t\t\t\t\t\t{useOutfit}\n\t\t\t\t\t\t\t\t{clientHeight}\n\t\t\t\t\t\t\t\t{clientWidth}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<ItemInfo\n\t\t\t\t\t\t\titemName={name}\n\t\t\t\t\t\t\t{type}\n\t\t\t\t\t\t\t{outfitName}\n\t\t\t\t\t\t\t{rarity}\n\t\t\t\t\t\t\t{vision}\n\t\t\t\t\t\t\t{bonusQty}\n\t\t\t\t\t\t\t{weaponType}\n\t\t\t\t\t\t\t{stelaFortuna}\n\t\t\t\t\t\t\t{custom}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<WeaponBonus {type} {bonusQty} {bonusType} />\n\t\t\t\t\t\t{#if isSplashOut} <SplashLight type=\"out\" {rarity} /> {/if}\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t{/each}\n\t\t</div>\n\t{/if}\n\n\t{#if !standalone}\n\t\t{#if list[activeIndex].rarity > 3 || (showResultList && list.length > 1)}\n\t\t\t<div class=\"share\">\n\t\t\t\t<ScreenshotShare canshare shareURL={createShareableLink(activeIndex, showResultList)} />\n\t\t\t</div>\n\t\t{/if}\n\t{/if}\n</div>\n\n<style>\n\t.skip,\n\t.close {\n\t\tposition: fixed;\n\t\ttop: 30px;\n\t\tright: 2%;\n\t\tz-index: 10;\n\t}\n\n\t:global(.mobile) .close {\n\t\ttop: 0.3rem;\n\t\tright: 6%;\n\t}\n\n\t.skip {\n\t\tcolor: #fff;\n\t\tfont-size: 1.2rem;\n\t}\n\n\t.gi-caret-up {\n\t\tdisplay: inline-block;\n\t\ttransform: rotate(90deg) translateX(-0.1rem);\n\t\tvertical-align: middle;\n\t\tmargin-left: -0.5em;\n\t}\n\n\t:global(.mobile) .skip {\n\t\tfont-size: 0.8rem;\n\t\tright: 5%;\n\t\ttop: 0.5rem;\n\t}\n\n\t.wish-result {\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t}\n\n\t.wish-result {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tposition: relative;\n\t}\n\n\t.touch-box {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: +5;\n\t}\n\n\t.zoomist-container {\n\t\taspect-ratio: 1/1;\n\t}\n\t.art-wrapper {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t.share {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\ttext-align: right;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\tposition: absolute;\n\t\tbottom: 5%;\n\t\tright: 8%;\n\t\tcolor: #fff;\n\t\tfont-size: 0.8rem;\n\t\tz-index: 999;\n\t}\n\n\tbutton:active {\n\t\ttransform: scale(0.9);\n\t}\n\n\t:global(.preview) .uid {\n\t\tposition: fixed;\n\t\tleft: 1rem;\n\t\tbottom: 1rem;\n\t\tdisplay: block !important;\n\t\tcolor: #fff;\n\t\ttext-shadow: 0 0 1.5px rgba(0, 0, 0, 0.7);\n\t}\n\t.logo,\n\t.uid {\n\t\tdisplay: none;\n\t\ttransition: all 0.1.5s;\n\t\tz-index: 999;\n\t\tpointer-events: none;\n\t}\n\n\t:global(.preview) .logo {\n\t\tdisplay: block;\n\t\twidth: 30vh;\n\t\tmax-width: 30%;\n\t\tposition: fixed;\n\t\tbottom: 0px;\n\t\tright: 2rem;\n\t}\n\n\t.logo.cn {\n\t\tmax-height: 20vh;\n\t\twidth: 20vh;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_item-info.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { assets } from '$lib/store/app-stores';\n\timport { removeAnimClass } from '$lib/helpers/transition';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport SvgIcon from '$lib/components/SVGIcon.svelte';\n\n\texport let staticMode = false;\n\texport let custom = false;\n\n\texport let itemName = '';\n\texport let type = '';\n\texport let vision = '';\n\texport let weaponType = '';\n\n\texport let outfitName = '';\n\texport let stelaFortuna = false;\n\texport let bonusQty = 0;\n\texport let rarity = 4;\n</script>\n\n<div class=\"info\">\n\t{#if type !== 'outfit'}\n\t\t<div class=\"icon vision\" class:animate={!staticMode} use:removeAnimClass>\n\t\t\t<SvgIcon name={weaponType || vision} />\n\t\t</div>\n\t{/if}\n\n\t<!-- Item Name -->\n\t<div class=\"name\">\n\t\t{#if type === 'outfit'}\n\t\t\t<span class:animate={!staticMode} use:removeAnimClass> {$t('outfit.obtained')} </span>\n\t\t{/if}\n\n\t\t<div class=\"text\" class:animate={!staticMode} use:removeAnimClass>\n\t\t\t{#if custom}\n\t\t\t\t{itemName}\n\t\t\t{:else if type === 'outfit'}\n\t\t\t\t{$t(`outfit.item.${outfitName}.name`)}\n\t\t\t{:else if weaponType}\n\t\t\t\t{$t(itemName)}\n\t\t\t{:else}\n\t\t\t\t{$t(`${itemName}.name`)}\n\t\t\t{/if}\n\t\t</div>\n\n\t\t<div class=\"star\">\n\t\t\t{#each Array(rarity) as _, i (i)}\n\t\t\t\t<i\n\t\t\t\t\tclass=\"gi-star\"\n\t\t\t\t\tclass:animate={!staticMode}\n\t\t\t\t\tstyle=\"animation-delay: {2 + i * 0.15}s\"\n\t\t\t\t\tuse:removeAnimClass\n\t\t\t\t/>\n\t\t\t{/each}\n\t\t</div>\n\n\t\t{#if type === 'outfit'}\n\t\t\t<span class=\"anim\" class:animate={!staticMode} use:removeAnimClass>\n\t\t\t\t{$t('outfit.unlocked', {\n\t\t\t\t\tvalues: { character: $t(`${itemName}.name`) }\n\t\t\t\t})}\n\t\t\t</span>\n\t\t{/if}\n\t</div>\n\n\t<!-- Show Starglitter Bonus & Stella Fortuna For Character -->\n\t<div class=\"bonus\" class:animate={!staticMode} use:removeAnimClass>\n\t\t{#if stelaFortuna}\n\t\t\t<div class=\"stella stella{rarity}\">\n\t\t\t\t<img src={$assets[`stella-fortuna-${rarity}star.webp`]} alt=\"Stella Formula\" />\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if type == 'character' && bonusQty > 0}\n\t\t\t<div class=\"masterless starglitter\">\n\t\t\t\t<Icon type=\"starglitter\" width=\"80%\" />\n\t\t\t\t<span> {bonusQty} </span>\n\t\t\t</div>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t/* Infoemation */\n\t.info {\n\t\tposition: fixed;\n\t\ttop: 60%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 1200px;\n\t\tmax-width: 95%;\n\t\tz-index: +1;\n\t\tpointer-events: none;\n\t}\n\t.info {\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\n\t:global(.mobile) .info {\n\t\tmax-width: 83%;\n\t}\n\t.name {\n\t\tposition: relative;\n\t\tz-index: +2;\n\t\twidth: 100%;\n\t}\n\n\t.name span {\n\t\tcolor: rgba(255, 255, 255, 0.9);\n\t\tpadding: 0.2% 0 0.5%;\n\t\tdisplay: block;\n\t}\n\t.name span.animate {\n\t\tanimation-delay: 2s !important;\n\t\tanimation: revealName forwards 0.8s 1;\n\t\topacity: 0;\n\t}\n\n\t.name .text.animate {\n\t\tanimation-delay: 1.3s !important;\n\t\tanimation: revealName forwards 0.8s 1;\n\t\topacity: 0;\n\t\ttransform: translateX(20px);\n\t}\n\t.name .text {\n\t\tmax-width: 38%;\n\t\tfont-size: 2.5em;\n\t\tline-height: 1.2em;\n\t\tcolor: #fff;\n\t\t-webkit-text-stroke: 0.04rem #000;\n\t}\n\n\t.text,\n\t.star {\n\t\tfilter: drop-shadow(0 0 0.25rem rgba(0, 0, 0, 0.5));\n\t}\n\n\t:global(.zh-CN) .name .text,\n\t:global(.ja-JP) .name .text {\n\t\tfont-size: 3em;\n\t}\n\n\t.icon {\n\t\tmargin-top: -5px;\n\t\tposition: relative;\n\t\twidth: 5rem;\n\t}\n\t.icon :global(svg) {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\t:global(.mobile) .icon {\n\t\theight: 4rem;\n\t}\n\n\t.icon.animate {\n\t\topacity: 0;\n\t\tanimation-delay: 1.2s !important;\n\t\tanimation: revealIcon forwards 1.3s 1;\n\t}\n\n\t.gi-star {\n\t\tcolor: #f7cf33;\n\t\tfont-size: 1.525em;\n\t\tdisplay: inline-block;\n\t}\n\t.gi-star.animate {\n\t\topacity: 0;\n\t\ttransform: scale(5);\n\t\tanimation: revealStar forwards 0.4s 1;\n\t}\n\t.weapon-icon {\n\t\tbackground-image: linear-gradient(to right, #585a66, #bed0d4, #585a66);\n\t\tmargin-top: -25px !important;\n\t}\n\n\t.bonus {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tbottom: -25vh;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t}\n\t.bonus.animate {\n\t\topacity: 0;\n\t\tanimation: opacityChange forwards 1.5s 1;\n\t}\n\t.stella,\n\t.bonus .masterless {\n\t\twidth: 3.5rem;\n\t\tborder-radius: 10%;\n\t\toverflow: hidden;\n\t\tdisplay: block;\n\t\ttext-align: center;\n\t\tposition: relative;\n\t\tmargin-left: 0.5rem;\n\t\tmargin-right: 0.5rem;\n\t\tpadding-bottom: 0.5rem;\n\t\tbox-shadow: 0 0 7px rgba(255, 255, 255, 0.5), 0 0 14px rgba(255, 255, 255, 0.3),\n\t\t\t0 0 30px rgba(255, 255, 255, 0.2);\n\t}\n\t.stella::after,\n\t.bonus .masterless span {\n\t\twidth: 100%;\n\t\tfont-size: 0.6rem;\n\t\tcontent: '1';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tbottom: 0;\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t}\n\t.stella img,\n\t.bonus .masterless img {\n\t\twidth: 80%;\n\t\theight: auto;\n\t}\n\n\t.stella5,\n\t.bonus .starglitter {\n\t\tbackground-image: linear-gradient(to top, #ca8937, #a47853);\n\t}\n\n\t.stella4 {\n\t\tbackground-image: linear-gradient(to top, #a47ab9, #7e78a9);\n\t}\n\n\t@keyframes revealIcon {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\t@keyframes revealName {\n\t\tto {\n\t\t\ttransform: translateX(0);\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t@keyframes revealStar {\n\t\tto {\n\t\t\ttransform: scale(1);\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t@keyframes opacityChange {\n\t\t80% {\n\t\t\topacity: 0;\n\t\t}\n\t\t85% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_meteor.svelte",
    "content": "<script>\n\timport { getContext, onMount } from 'svelte';\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport hotkeys from 'hotkeys-js';\n\n\timport { localConfig } from '$lib/helpers/dataAPI/api-localstore';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { assets } from '$lib/store/app-stores';\n\timport { pushToast } from '$lib/helpers/toast';\n\n\texport let rarity = 3;\n\texport let show = false;\n\texport let isSingle = false;\n\texport let radiance = false;\n\n\tlet videoContent;\n\tlet showSkipButton = false;\n\n\tconst showSplashArt = getContext('showSplashArt');\n\tconst meteorEnd = ({ skip = false } = {}) => {\n\t\tshowSplashArt({ skip });\n\t\tshowSkipButton = false;\n\t};\n\n\tconst skip = () => {\n\t\tplaySfx();\n\t\tmeteorEnd({ skip: true });\n\t\tvideoContent.load();\n\t\tvideoContent.style.display = 'none';\n\t};\n\n\tonMount(() => {\n\t\tvideoContent.addEventListener('ended', () => {\n\t\t\tvideoContent.style.display = 'none';\n\t\t\tvideoContent.load();\n\t\t\tmeteorEnd();\n\t\t});\n\n\t\tvideoContent.addEventListener('error', () => {\n\t\t\tconst statusCode = videoContent.error.message;\n\t\t\tconst message = `${$t('wish.result.meteorFailed')} \"${statusCode}\" - ${videoContent.src}`;\n\t\t\tpushToast({ message });\n\n\t\t\tconsole.error(`Failed to load the Falling Star Animation`);\n\t\t\treturn meteorEnd();\n\t\t});\n\t});\n\n\tconst showVideoHandle = async (rarity, single = true, radiance) => {\n\t\tconst muted = localConfig.get('muted');\n\t\tlet vidSrc = '3star-single';\n\t\tif (radiance) {\n\t\t\tvidSrc = 'capturing-radiance';\n\t\t} else {\n\t\t\tif (single && rarity !== 3) {\n\t\t\t\tvidSrc = rarity === 5 ? '5star-single' : '4star-single';\n\t\t\t}\n\t\t\tif (!single && rarity !== 3) {\n\t\t\t\tvidSrc = rarity === 5 ? '5star-multi' : '4star-multi';\n\t\t\t}\n\t\t}\n\n\t\tvideoContent.src = $assets[`${vidSrc}.mp4`];\n\t\tvideoContent.style.display = 'unset';\n\t\tvideoContent.muted = !!muted;\n\t\tawait videoContent.play();\n\t\treturn;\n\t};\n\n\t$: if (show) showVideoHandle(rarity, isSingle, radiance);\n\n\t// Shortcut\n\thotkeys('esc', 'index', (e) => {\n\t\tif (!show) return;\n\t\te.preventDefault();\n\t\tskip();\n\t});\n\n\thotkeys('enter', 'index', (e) => {\n\t\tif (!show) return;\n\t\te.preventDefault();\n\t\tif (showSkipButton) return skip();\n\t\tshowSkipButton = true;\n\t});\n</script>\n\n<div class=\"meteor-wrapper\" class:show on:mousedown={() => (showSkipButton = true)}>\n\t<div class=\"video\">\n\t\t<video playsinline bind:this={videoContent} type=\"video/mp4\">\n\t\t\t<track kind=\"captions\" />\n\t\t</video>\n\t\t{#if showSkipButton}\n\t\t\t<button class=\"skip\" on:click={skip} in:fade={{ duration: 250 }}>\n\t\t\t\t{$t('wish.result.skip')} <i class=\"gi-caret-up\" />\n\t\t\t</button>\n\t\t{/if}\n\t</div>\n</div>\n\n<style>\n\t.meteor-wrapper {\n\t\twidth: 100vw;\n\t\theight: var(--screen-height);\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\topacity: 0;\n\t\ttransition: opacity 0.25s;\n\t}\n\t.meteor-wrapper.show {\n\t\tdisplay: block;\n\t\tbackground-color: #fff;\n\t\topacity: 1;\n\t}\n\t.video {\n\t\tposition: relative;\n\t\twidth: 100vw;\n\t\theight: 100%;\n\t}\n\n\t.skip {\n\t\tposition: absolute;\n\t\ttop: 30px;\n\t\tright: 2%;\n\t\tcolor: #fff;\n\t\tfont-size: 1.2rem;\n\t\tz-index: 10;\n\t}\n\n\t.gi-caret-up {\n\t\tdisplay: inline-block;\n\t\ttransform: rotate(90deg) translateX(-0.1rem);\n\t\tvertical-align: middle;\n\t\tmargin-left: -0.5em;\n\t}\n\n\t:global(.mobile) .skip {\n\t\tfont-size: 0.8rem;\n\t\ttop: 0.3rem;\n\t\tright: 6%;\n\t}\n\tvideo {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 105%;\n\t\theight: 105%;\n\t\tobject-fit: cover;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_result-list-item.svelte",
    "content": "<script>\n\timport { fade } from 'svelte/transition';\n\timport { t } from 'svelte-i18n';\n\timport { assets, customData } from '$lib/store/app-stores';\n\timport { getCssVarPosition } from '$lib/helpers/cssPosition';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport Icon from '$lib/components/Icon.svelte';\n\timport SvgIcon from '$lib/components/SVGIcon.svelte';\n\n\texport let index;\n\texport let clientHeight;\n\texport let clientWidth;\n\texport let data = {};\n\tconst {\n\t\tname,\n\t\trarity,\n\t\tweaponType,\n\t\ttype,\n\t\tvision,\n\t\toffset,\n\t\tstelaFortuna,\n\t\tisNew,\n\t\tbonusType,\n\t\tbonusQty,\n\t\tuseOutfit,\n\t\toutfitName,\n\t\tcustom\n\t} = data;\n</script>\n\n<div\n\tid=\"wish{index}\"\n\tclass=\"item star{rarity} {type}\"\n\tclass:duplicate={!isNew}\n\ton:mousedown|preventDefault={() => playSfx()}\n>\n\t{#if isNew}\n\t\t<div class=\"new\">{$t('wish.result.new')}</div>\n\t{/if}\n\t<div class=\"zoomist-container item-body {weaponType || ''}\">\n\t\t<div class=\"zoomist-wrapper item-content\" style=\"--bg: url({$assets['resultcard-bg.webp']})\">\n\t\t\t{#if custom}\n\t\t\t\t{@const { images = {}, hostedImages = {}, status, artPosition } = $customData || {}}\n\t\t\t\t{@const { artURL } = status === 'owned' ? images : hostedImages}\n\t\t\t\t{@const { wishCard = {} } = artPosition || {}}\n\t\t\t\t<div class=\"zoomist-image\" style={getCssVarPosition(wishCard, clientHeight, clientWidth)}>\n\t\t\t\t\t<img src={artURL} alt={name} class=\"wishpic\" />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Weapon -->\n\t\t\t{:else if type === 'weapon'}\n\t\t\t\t<div class=\"zoomist-image weapon\">\n\t\t\t\t\t<img src={$assets[name]} alt={name} class=\"wishpic\" crossorigin=\"anonymous\" />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Character -->\n\t\t\t{:else}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"zoomist-image\"\n\t\t\t\t\tstyle={getCssVarPosition(offset?.wishCard || {}, clientHeight, clientWidth)}\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={$assets[`splash-art/${useOutfit ? outfitName : name}`]}\n\t\t\t\t\t\talt={name}\n\t\t\t\t\t\tclass=\"wishpic\"\n\t\t\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t{/if}\n\n\t\t\t<div class=\"info\" in:fade={{ delay: 1000 }}>\n\t\t\t\t<div class=\"icon\" style=\"width: 100%;\">\n\t\t\t\t\t{#if isNew || type === 'weapon'}\n\t\t\t\t\t\t{@const iconName = weaponType || vision}\n\t\t\t\t\t\t<SvgIcon name={iconName} />\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\n\t\t\t\t{#if (isNew && type === 'character') || type === 'weapon'}\n\t\t\t\t\t<div class=\"star\">\n\t\t\t\t\t\t{#each Array(rarity) as _, i}\n\t\t\t\t\t\t\t<div class=\"i gi-star\" />\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\n\t\t\t\t{#if type === 'character' && !isNew}\n\t\t\t\t\t<div class=\"masterless {bonusType}\">\n\t\t\t\t\t\t<Icon type={bonusType} width=\"80%\" />\n\t\t\t\t\t\t<span>{bonusQty}</span>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\n\t\t\t\t{#if stelaFortuna}\n\t\t\t\t\t<div class=\"stella stella{rarity}\">\n\t\t\t\t\t\t<img src={$assets[`stella-fortuna-${rarity}star.webp`]} alt=\"Stella Fortuna\" />\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\n\t\t\t{#if type === 'character' && !isNew}\n\t\t\t\t<div class=\"cover\" in:fade={{ delay: 1000, duration: 1000 }} />\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n</div>\n\n<style>\n\t.character.duplicate {\n\t\tanimation: brighten forwards 1s;\n\t\tanimation-delay: 1s;\n\t}\n\n\t.item {\n\t\ttransition: all 0.2s;\n\t\twill-change: transform;\n\t}\n\t.item:hover,\n\t.item.hover {\n\t\ttransform: scale(1.04);\n\t\t/* z-index: +10; */\n\t}\n\t.item:hover .cover,\n\t.item.hover .cover {\n\t\tbackground-color: rgba(0, 0, 0, 0);\n\t}\n\n\t.star5 .item-body {\n\t\tbackground-image: linear-gradient(\n\t\t\tto bottom,\n\t\t\trgb(249, 170, 2),\n\t\t\trgb(255, 255, 255),\n\t\t\trgb(249, 170, 2)\n\t\t);\n\t}\n\n\t.star4 .item-body {\n\t\tbackground-image: linear-gradient(\n\t\t\tto bottom,\n\t\t\trgb(196, 77, 218),\n\t\t\trgb(255, 255, 255),\n\t\t\trgb(196, 77, 218)\n\t\t);\n\t}\n\n\t.new {\n\t\tposition: absolute;\n\t\tz-index: 10;\n\t\tdisplay: block;\n\t\ttop: 3%;\n\t\tleft: 80%;\n\t\ttransform: translateX(-50%);\n\t\tpadding: 0 0.4rem;\n\t\tborder-radius: calc(2 / 100 * var(--card-height)) 0;\n\t\tcolor: #fffa66;\n\t\tbackground-color: #c3882a;\n\t\tborder: 1px solid #fffa66;\n\t\tfont-size: calc(3 / 100 * var(--card-height));\n\t}\n\n\t.cover {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\ttransition: all 0.2s;\n\t\tbackground-color: rgba(0, 0, 0, 0.2);\n\t}\n\n\t.item-body {\n\t\t--scale: 2.05;\n\t\theight: 100%;\n\t\tclip-path: url(#wishframe);\n\t\tmargin: 0 0.5px;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttouch-action: unset;\n\t\tbackground-image: linear-gradient(to bottom, #aac8f1, #fff, #aac8f1);\n\t}\n\t.item-body.catalyst {\n\t\t--scale: 1.3;\n\t}\n\t.character .item-body {\n\t\t--scale: 5;\n\t\t--translate-y: 150%;\n\t}\n\n\t.item-content {\n\t\tclip-path: url(#wishframe);\n\t\ttransform: scaleX(0.98) scaleY(0.99);\n\t\tbackground-image: var(--bg);\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\tposition: relative;\n\t}\n\n\t.item-content::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 50%;\n\t\tbackground-image: linear-gradient(to top, rgba(0, 0, 0, 0.4) 60%, rgba(0, 0, 0, 0));\n\t}\n\n\t.zoomist-image {\n\t\tposition: absolute;\n\t\ttransform: translate(var(--translate-x, 0px), var(--translate-y, 0px)) scale(var(--scale, 0));\n\t}\n\n\t.zoomist-image.weapon {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tobject-position: center;\n\t}\n\n\t.weapon img.wishpic {\n\t\tfilter: drop-shadow(0.2rem 0.2rem 0.02rem rgb(0, 0, 0));\n\t}\n\n\t.stella {\n\t\tmargin-top: 10%;\n\t}\n\n\t.stella,\n\t.masterless {\n\t\twidth: 60%;\n\t\tborder-radius: 10%;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\taspect-ratio: 1/1;\n\t\tposition: relative;\n\t\tbox-shadow: 0 0 7px rgba(255, 255, 255, 0.7), 0 0 14px rgba(255, 255, 255, 0.5),\n\t\t\t0 0 21px rgba(255, 255, 255, 0.2), 0 0 42px rgba(255, 255, 255, 1);\n\t}\n\t.stella::after,\n\t.masterless span {\n\t\twidth: 100%;\n\t\tfont-size: calc(3 / 100 * var(--card-height));\n\t\tcontent: '1';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tbottom: 0;\n\t\tcolor: #fff;\n\t\ttext-align: center;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t}\n\n\t.stella5,\n\t.starglitter {\n\t\tbackground-image: linear-gradient(to top, #ca8937, #a47853);\n\t}\n\n\t.stella4 {\n\t\tbackground-image: linear-gradient(to top, #a47ab9, #7e78a9);\n\t}\n\n\t.info {\n\t\tposition: absolute;\n\t\tbottom: 10%;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\tz-index: 10;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t}\n\n\t.info .gi-star {\n\t\tcolor: #f7cf33;\n\t\tdisplay: inline-block;\n\t\tfont-size: calc(3.5 / 100 * var(--card-height));\n\t}\n\t.icon :global(svg) {\n\t\twidth: 80%;\n\t\taspect-ratio: 1/1;\n\t}\n\n\t@keyframes brighten {\n\t\t0% {\n\t\t\tfilter: brightness(100%);\n\t\t}\n\t\t50% {\n\t\t\tfilter: brightness(150%);\n\t\t}\n\t\t100% {\n\t\t\tfilter: brightness(100%);\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_splash-art.svelte",
    "content": "<script>\n\timport { assets, customData } from '$lib/store/app-stores';\n\timport { removeAnimClass } from '$lib/helpers/transition';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport { getCssVarPosition as pos } from '$lib/helpers/cssPosition';\n\n\texport let name;\n\texport let type;\n\texport let outfitName;\n\texport let weaponType;\n\texport let useOutfit;\n\texport let custom;\n\texport let clientHeight = 0;\n\texport let clientWidth = 0;\n\texport let offset = {};\n</script>\n\n<div class=\"zoomist-wrapper splash-art anim {type}\" style=\"overflow: visible;\" use:removeAnimClass>\n\t<!-- Custom Art -->\n\t{#if custom}\n\t\t{@const { images = {}, hostedImages = {}, status, artPosition } = $customData || {}}\n\t\t{@const { artURL } = status === 'owned' ? images : hostedImages}\n\t\t{@const { splashArt = {} } = artPosition || {}}\n\t\t<div class=\"zoomist-image\" style={pos(splashArt, clientHeight, clientWidth)}>\n\t\t\t<img use:lazyLoad={artURL} alt={name} />\n\t\t</div>\n\n\t\t<!-- Weapon -->\n\t{:else if type === 'weapon'}\n\t\t<div class=\"zoomist-image weapon anim {weaponType}-parent\" use:removeAnimClass>\n\t\t\t<img src={$assets[`bg-${weaponType}.webp`]} alt={weaponType} class=\"weaponbg\" />\n\t\t\t<img use:lazyLoad={$assets[name]} alt={name} class={weaponType} />\n\t\t</div>\n\n\t\t<!-- Character OutFit -->\n\t{:else if type === 'outfit'}\n\t\t<div class=\"zoomist-image\" style={pos(offset, clientHeight, clientWidth)}>\n\t\t\t<img use:lazyLoad={$assets[`splash-art/${outfitName}`]} alt={name} crossorigin=\"anonymous\" />\n\t\t</div>\n\n\t\t<!-- Character Art -->\n\t{:else}\n\t\t<div class=\"zoomist-image\" style={pos(offset, clientHeight, clientWidth)}>\n\t\t\t<img\n\t\t\t\tuse:lazyLoad={$assets[`splash-art/${useOutfit ? outfitName : name}`]}\n\t\t\t\talt={name}\n\t\t\t\tcrossorigin=\"anonymous\"\n\t\t\t/>\n\t\t</div>\n\t{/if}\n</div>\n\n<style>\n\t.zoomist-wrapper,\n\t.zoomist-image {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.zoomist-wrapper {\n\t\t--scale: 1.5;\n\t\t--translate-x: 0px;\n\t\t--translate-y: 0px;\n\t\tbackground-color: unset;\n\t\tposition: relative;\n\t}\n\t.zoomist-wrapper.weapon {\n\t\t--scale: 1.1;\n\t}\n\n\t.zoomist-image {\n\t\ttransform: translate(var(--translate-x, 0px), var(--translate-y, 0px)) scale(var(--scale, 0));\n\t}\n\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tobject-position: center;\n\t}\n\n\t.splash-art.anim {\n\t\tfilter: brightness(0) opacity(0);\n\t\tanimation: splashart forwards 1.5s 1;\n\t}\n\t.splash-art:not(.anim) {\n\t\ttransform: translate(2%, 0);\n\t}\n\n\t.zoomist-image {\n\t\tposition: relative;\n\t\twidth: var(--width);\n\t\theight: var(--height);\n\t}\n\t.splash-art .weapon img {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t}\n\n\t.splash-art .weapon img.weaponbg {\n\t\theight: 80%;\n\t}\n\n\t.splash-art .weapon.anim img.weaponbg {\n\t\topacity: 0;\n\t\tanimation: weaponbg forwards 1.5s 1;\n\t}\n\n\t.bow-parent .weaponbg {\n\t\ttransform: translate(-53%, -50%) scale(1.1) !important;\n\t}\n\t.catalyst-parent .weaponbg {\n\t\theight: 90% !important;\n\t}\n\n\t.anim .bow,\n\t.anim .polearm,\n\t.anim .sword,\n\t.anim .claymore,\n\t.anim .catalyst {\n\t\tanimation: weaponShadow forwards 0.1s 1;\n\t\tanimation-delay: 1.2s;\n\t\tfilter: drop-shadow(0 0 0 rgba(0, 0, 0, 0));\n\t}\n\n\t.bow,\n\t.polearm,\n\t.sword,\n\t.claymore,\n\t.catalyst {\n\t\tfilter: drop-shadow(0.6rem 0.6rem 0.05rem rgb(0, 0, 0));\n\t}\n\n\t.bow {\n\t\theight: 115%;\n\t}\n\n\t.catalyst {\n\t\theight: 40%;\n\t}\n\n\t.polearm {\n\t\ttransform: translate(-53%, -35%) scale(1.2) !important;\n\t}\n\n\t@keyframes splashart {\n\t\t0% {\n\t\t\ttransform: scale(5) translate(0, -5%);\n\t\t\tfilter: brightness(0);\n\t\t}\n\n\t\t20% {\n\t\t\ttransform: scale(1);\n\t\t\tfilter: brightness(0);\n\t\t}\n\t\t75% {\n\t\t\ttransform: scale(1);\n\t\t\tfilter: brightness(0);\n\t\t}\n\t\t95% {\n\t\t\ttransform: scale(1) translate(2%, 0);\n\t\t\tfilter: brightness(1);\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1) translate(2%, 0);\n\t\t\tfilter: brightness(1);\n\t\t}\n\t}\n\n\t@keyframes weaponbg {\n\t\t80% {\n\t\t\topacity: 0;\n\t\t}\n\t\t85% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t@keyframes weaponShadow {\n\t\tto {\n\t\t\tfilter: drop-shadow(0.7rem 0.6rem 0.2rem rgba(0, 0, 0, 0.7));\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_splash-light.svelte",
    "content": "<script>\n\texport let type = '';\n\texport let rarity = 0;\n\n\tconst removeAfterAnimate = (el) => {\n\t\tel.addEventListener('animationend', () => {\n\t\t\tel?.remove();\n\t\t});\n\t};\n</script>\n\n{#if type === 'in'}\n\t<div class=\"star{rarity} orbs in5\" />\n\t<div class=\"in star{rarity} orbs in1\" style=\"animation-duration: 1s;\" />\n\t<div class=\"in star{rarity} orbs in2\" style=\"animation-duration: 1.2s;\" />\n\t<div class=\"in star{rarity} orbs in3\" style=\"animation-duration: 1.1s;\" />\n\t<div class=\"in star{rarity} orbs in4\" style=\"animation-duration: .75s;\" />\n{/if}\n\n{#if type === 'out'}\n\t<div\n\t\tclass=\"out star{rarity} orbs out1 \"\n\t\tstyle=\"animation-duration: 0.8s; animation-delay: .1s;\"\n\t\tuse:removeAfterAnimate\n\t/>\n\t<div class=\"out  star{rarity} orbs out2\" style=\"animation-duration: 2s;\" use:removeAfterAnimate />\n\t<div\n\t\tclass=\"out  star{rarity} orbs out3\"\n\t\tstyle=\"animation-duration: 1.2s; animation-delay: .1s;\"\n\t\tuse:removeAfterAnimate\n\t/>\n{/if}\n\n<style>\n\tdiv {\n\t\taspect-ratio: 1/1;\n\t}\n\t/* Light */\n\t.orbs {\n\t\tbackground-color: transparent;\n\t\tborder-radius: 100%;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%) scale(0);\n\t\ttransform-origin: 0 0;\n\t\topacity: 0;\n\t}\n\n\t.in {\n\t\tanimation: orbsIn forwards 1;\n\t}\n\n\t.in1 {\n\t\twidth: 100%;\n\t}\n\n\t.in2 {\n\t\twidth: 80%;\n\t}\n\n\t.in3 {\n\t\twidth: 40%;\n\t}\n\n\t.in4 {\n\t\twidth: 70%;\n\t}\n\n\t.in5 {\n\t\tposition: fixed;\n\t\ttransform: translate(-50%, 50%);\n\t\tbottom: 0;\n\t\twidth: 100vw;\n\t\taspect-ratio: 1/1;\n\t\topacity: 1;\n\t\tanimation: orbs2 forwards 1s 1;\n\t}\n\n\t.out {\n\t\ttransform: scale(0) translate(-50%, -50%);\n\t\topacity: 0;\n\t}\n\t.out {\n\t\tanimation: outOrbs forwards 1;\n\t}\n\n\t.out1 {\n\t\twidth: 50%;\n\t\tbackground-color: rgb(254 133 63 / 5%);\n\t}\n\n\t.out2 {\n\t\twidth: 100%;\n\t}\n\n\t.out3 {\n\t\twidth: 150%;\n\t}\n\n\t/* 5Star Color */\n\t.star5.in1 {\n\t\tbackground-color: rgb(254 133 63 / 5%);\n\t\tbox-shadow: 0 0 50px rgb(254 133 63 / 10%), inset 0 0 70px rgb(254 133 63 / 10%);\n\t}\n\t.star5.in2 {\n\t\tbox-shadow: 0 0 50px rgb(253 148 48 / 30%), inset 0 0 70px rgb(253 148 48 / 30%);\n\t}\n\t.star5.in3 {\n\t\tbox-shadow: 0 0 50px rgb(251 193 60 / 50%), inset 0 0 70px rgb(251 193 60 / 0%);\n\t\tbackground-image: radial-gradient(rgba(251, 193, 60, 1), rgb(251, 193, 60, 0));\n\t}\n\t.star5.in4 {\n\t\tbox-shadow: 0 0 30px rgb(253 148 48 / 10%), inset 0 0 30px rgb(253 148 48 / 10%);\n\t}\n\t.star5.in5 {\n\t\tbackground-image: radial-gradient(\n\t\t\trgba(253, 148, 48, 0.5),\n\t\t\trgb(253, 148, 48, 0),\n\t\t\trgba(253, 148, 48, 0)\n\t\t);\n\t}\n\t.star5.out1 {\n\t\tbox-shadow: 0 0 50px rgb(251 193 60 / 50%), inset 0 0 50px rgb(251 193 60 / 50%);\n\t}\n\t.star5.out2 {\n\t\tbox-shadow: 0 0 150px rgb(255 255 255 / 50%), inset 0 0 170px rgb(255 255 255 / 50%);\n\t}\n\t.star5.out3 {\n\t\tbox-shadow: 0 0 200px rgb(253 148 48 / 60%), inset 0 0 170px rgb(253 148 48 / 60%);\n\t}\n\n\t/* 4 Star Color */\n\t.star4.in1 {\n\t\tbackground-color: rgba(241, 143, 223, 0.05);\n\t\tbox-shadow: 0 0 50px rgba(126, 20, 158, 0.1), inset 0 0 70px rgba(159, 51, 241, 0.1);\n\t}\n\t.star4.in2 {\n\t\tbox-shadow: 0 0 50px rgb(113 34 221 / 30%), inset 0 0 70px rgb(113 34 221 / 30%);\n\t}\n\t.star4.in3 {\n\t\tbox-shadow: 0 0 50px rgb(180 47 248 / 50%), inset 0 0 70px rgb(180 47 248 / 0%);\n\t\tbackground-image: radial-gradient(rgba(156, 71, 218, 1), rgb(180, 47, 248, 0));\n\t}\n\t.star4.in4 {\n\t\tbox-shadow: 0 0 30px rgb(113 34 221 / 10%), inset 0 0 30px rgb(113 34 221 / 10%);\n\t}\n\t.star4.in5 {\n\t\tbackground-image: radial-gradient(\n\t\t\trgba(156, 71, 218, 0.5),\n\t\t\trgb(156, 71, 218, 0),\n\t\t\trgba(156, 71, 218, 0)\n\t\t);\n\t}\n\t.star4.out1 {\n\t\tbox-shadow: 0 0 50px rgb(180 47 248 / 50%), inset 0 0 50px rgb(180 47 248 / 50%);\n\t}\n\t.star4.out2 {\n\t\tbox-shadow: 0 0 150px rgb(255 255 255 / 50%), inset 0 0 170px rgb(255 255 255 / 50%);\n\t}\n\t.star4.out3 {\n\t\tbox-shadow: 0 0 200px rgb(113 34 221 / 60%), inset 0 0 170px rgb(113 34 221 / 60%);\n\t}\n\n\t/* 3 Star Color */\n\t.star3.in1 {\n\t\tbackground-color: rgba(255, 255, 255, 0.05);\n\t\tbox-shadow: 0 0 50px rgba(255, 255, 255, 0.1), inset 0 0 70px rgba(247, 237, 231, 0.1);\n\t}\n\t.star3.in2 {\n\t\tbox-shadow: 0 0 50px rgb(85 93 255 / 30%), inset 0 0 70px rgb(85 93 255 / 30%);\n\t}\n\t.star3.in3 {\n\t\tbox-shadow: 0 0 50px rgb(106 128 254 / 50%), inset 0 0 70px rgb(106 128 254 / 0%);\n\t\tbackground-image: radial-gradient(rgba(99, 124, 205, 1), rgba(99, 124, 205, 0));\n\t}\n\t.star3.in4 {\n\t\tbox-shadow: 0 0 30px rgb(85 93 255 / 10%), inset 0 0 30px rgb(85 93 255 / 10%);\n\t}\n\t.star3.in5 {\n\t\tbackground-image: radial-gradient(\n\t\t\trgba(99, 124, 205, 0.5),\n\t\t\trgba(99, 124, 205, 0),\n\t\t\trgba(99, 124, 205, 0)\n\t\t);\n\t}\n\t.star3.out1 {\n\t\tbox-shadow: 0 0 50px rgb(157 217 252 / 50%), inset 0 0 50px rgb(157 217 252 / 50%);\n\t}\n\t.star3.out2 {\n\t\tbox-shadow: 0 0 150px rgb(255 255 255 / 50%), inset 0 0 170px rgba(99, 124, 205, 1);\n\t}\n\t.star3.out3 {\n\t\tbox-shadow: 0 0 200px rgb(85 93 255 / 60%), inset 0 0 170px rgb(85 93 255 / 60%);\n\t}\n\n\t@keyframes orbsIn {\n\t\t0% {\n\t\t\ttransform: scale(0) translate(-50%, -50%);\n\t\t}\n\t\t90% {\n\t\t\ttransform: scale(1) translate(-50%, -50%);\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1) translate(-50%, -50%);\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t@keyframes orbs2 {\n\t\t0% {\n\t\t\ttransform: scale(0) translateX(-50%);\n\t\t}\n\t\t90% {\n\t\t\ttransform: scale(1) translateX(-50%);\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1) translateX(-50%);\n\t\t\topacity: 0;\n\t\t}\n\t}\n\n\t@keyframes outOrbs {\n\t\t30% {\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(2) translate(-50%, -50%);\n\t\t\topacity: 0;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/_wish/wish-result/_weapon-bonus.svelte",
    "content": "<script>\n\timport Icon from '$lib/components/Icon.svelte';\n\timport { t } from 'svelte-i18n';\n\timport { isMobile } from '$lib/store/app-stores';\n\timport { removeAnimClass } from '$lib/helpers/transition';\n\n\texport let bonusQty = 0;\n\texport let bonusType = 'stardust';\n\texport let type;\n</script>\n\n{#if type === 'weapon' && bonusQty > 1}\n\t<div class=\"starfate anim {bonusType}\" use:removeAnimClass>\n\t\t<div class=\"icon\">\n\t\t\t<Icon type={bonusType} width={$isMobile ? '50px' : '60px'} />\n\t\t</div>\n\t\t<div class=\"text\">\n\t\t\t<span>{$t('extra')}</span>\n\t\t\t{$t(`shop.item.${bonusType}`)}\n\t\t\t<br /> ×{bonusQty}\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.starfate {\n\t\tjustify-content: flex-end;\n\t\tright: 0;\n\t\ttransform: translateY(-50%);\n\t\ttext-transform: capitalize;\n\t}\n\t.starfate > .icon {\n\t\tmargin-right: -25px;\n\t\tposition: relative;\n\t\tz-index: +1;\n\t\ttransform: scale(1);\n\t\tanimation-delay: 1.3s !important;\n\t}\n\t.starfate.anim > .icon {\n\t\tanimation: starfateIcon forwards 0.4s 1;\n\t\topacity: 0;\n\t}\n\t.starfate.starglitter :global(img) {\n\t\tfilter: drop-shadow(0 0 6px rgba(245, 193, 63, 1));\n\t}\n\t.starglitter .text {\n\t\tbackground-image: linear-gradient(to right, rgba(245, 193, 63, 0.9), rgba(245, 193, 63, 0.1));\n\t\tcolor: rgb(255, 255, 77);\n\t}\n\t.starfate.stardust :global(img) {\n\t\tfilter: drop-shadow(0 0 6px rgba(221, 203, 245, 1));\n\t}\n\t.stardust .text {\n\t\tbackground-image: linear-gradient(to right, rgba(104, 47, 173, 0.9), rgba(104, 47, 173, 0.1));\n\t\tcolor: rgb(198, 130, 214);\n\t}\n\t.starfate .text {\n\t\twidth: 330px;\n\t\tmax-width: 50%;\n\t\tpadding: 2px 25px;\n\t\tposition: relative;\n\t\tz-index: -1;\n\t\tanimation-delay: 1.3s !important;\n\t}\n\n\t.starfate.anim .text {\n\t\topacity: 0;\n\t\tanimation: starfateText forwards 0.7s 1;\n\t}\n\n\t:global(.mobile) .starfate .text {\n\t\twidth: 230px;\n\t}\n\t.starfate span {\n\t\tcolor: #ddd;\n\t\tposition: absolute;\n\t\ttop: -45%;\n\t\tleft: 25px;\n\t\tfont-size: smaller;\n\t}\n\n\t.starfate {\n\t\tposition: fixed;\n\t\ttop: 60%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\twidth: 1200px;\n\t\tmax-width: 95%;\n\t\tz-index: +1;\n\t}\n\n\t@keyframes starfateIcon {\n\t\t30% {\n\t\t\ttransform: scale(1.5);\n\t\t\topacity: 1;\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1);\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t@keyframes starfateText {\n\t\t0% {\n\t\t\ttransform: translateX(-10px);\n\t\t\topacity: 0;\n\t\t}\n\t\t100% {\n\t\t\ttransform: translateX(0px);\n\t\t\topacity: 1;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/adkey/+page.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { fly } from 'svelte/transition';\n\timport { playSfx } from '$lib/helpers/audio/audio';\n\timport { assets } from '$lib/store/app-stores';\n\timport { adKey } from '$lib/helpers/accessKey';\n\timport ButtonModal from '$lib/components/ButtonModal.svelte';\n\n\tconst random = (min, max) => {\n\t\tmin = Math.ceil(min);\n\t\tmax = Math.floor(max);\n\t\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n\t};\n\n\tlet input = '';\n\tlet error = false;\n\tlet isKeyValid = false;\n\tlet onRequest = false;\n\n\tconst accessGranted = () => {\n\t\tconst t = setTimeout(() => {\n\t\t\tclearTimeout(t);\n\t\t\twindow.location.replace('/');\n\t\t}, 3000);\n\t};\n\n\tconst requestAccess = async () => {\n\t\tplaySfx();\n\t\tonRequest = true;\n\t\tconst { validity } = await adKey.verify(input);\n\t\terror = !validity;\n\t\tisKeyValid = validity;\n\t\tonRequest = false;\n\t\tif (error) return;\n\t\taccessGranted();\n\t};\n\n\tconst getKeyParam = () => {\n\t\tconst url = new URL(window.location.href);\n\t\tconst searchParams = new URLSearchParams(url.search);\n\t\tconst key = searchParams.get('k');\n\t\tinput = key || '';\n\t};\n\n\tonMount(getKeyParam);\n</script>\n\n<svelte:head>\n\t<title>Genshin Impact Wish Simulator</title>\n</svelte:head>\n\n<section in:fly={{ x: -200, duration: 200 }}>\n\t<img class=\"bg\" src={$assets[`bg${random(1, 20)}.webp`]} alt=\"background\" />\n\t<div class=\"container\">\n\t\t<i class=\"gi-primo-star top-left\" />\n\t\t<i class=\"gi-primo-star top-right\" />\n\t\t<i class=\"gi-primo-star bottom-left\" />\n\t\t<i class=\"gi-primo-star bottom-right\" />\n\t\t<i class=\"gi-inazuma icon-bg\" />\n\n\t\t<h1>Genshin Impact Wish Simulator</h1>\n\t\t<h2>This Page is only available for supporters.</h2>\n\n\t\t<form class=\"form\" on:submit|preventDefault={requestAccess}>\n\t\t\t<div class=\"input\">\n\t\t\t\t<input type=\"text\" bind:value={input} placeholder=\"Input Access Key\" class:error />\n\t\t\t\t{#if error}\n\t\t\t\t\t<span class=\"error\">\n\t\t\t\t\t\tWrong Access Key, please get <a\n\t\t\t\t\t\t\thref=\"https://ko-fi.com/post/AdFree-Wish-Simulator-Enjoy-Simulator-Without-Ads-G2G2DQ57O\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<strong> New One Here ! </strong>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</span>\n\t\t\t\t{/if}\n\n\t\t\t\t{#if isKeyValid}\n\t\t\t\t\t<span class=\"valid\"> Congratulation, now you can enjoy the app without any ads! </span>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t\t<div class=\"button\">\n\t\t\t\t<ButtonModal disabled={onRequest || !input || isKeyValid} on:click={requestAccess}>\n\t\t\t\t\t{onRequest ? 'Waiting...' : isKeyValid ? 'Redirecting ...' : 'Start Simulator'}\n\t\t\t\t</ButtonModal>\n\t\t\t</div>\n\t\t</form>\n\n\t\t<p>\n\t\t\t<a\n\t\t\t\thref=\"https://ko-fi.com/post/AdFree-Wish-Simulator-Enjoy-Simulator-Without-Ads-G2G2DQ57O\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t>\n\t\t\t\t<strong> Become a supporter here </strong>\n\t\t\t</a> and get a opportunity to use the simulator without being distracted by Ads !\n\t\t</p>\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t.bg {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: 110%;\n\t\theight: 110%;\n\t\tobject-fit: cover;\n\t\tfilter: blur(5px);\n\t}\n\n\t.container {\n\t\tposition: relative;\n\t\tz-index: +1;\n\t\twidth: 80%;\n\t\theight: 70%;\n\t\tbackground-color: #ece6de;\n\t\tpadding: 2rem;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n\n\t.gi-primo-star {\n\t\tcolor: #fdf0ac;\n\t\tfont-size: 1.5rem;\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\tfilter: drop-shadow(0 0 7px rgba(227, 149, 48, 0.9));\n\t}\n\t.top-left {\n\t\ttop: -0.8rem;\n\t\tleft: -0.5rem;\n\t\ttransform: rotate(-45deg);\n\t}\n\t.top-right {\n\t\ttop: -0.8rem;\n\t\tright: -0.5rem;\n\t\ttransform: rotate(45deg);\n\t}\n\t.bottom-left {\n\t\tbottom: -0.8rem;\n\t\tleft: -0.5rem;\n\t\ttransform: rotate(-135deg);\n\t}\n\t.bottom-right {\n\t\tbottom: -0.8rem;\n\t\tright: -0.5rem;\n\t\ttransform: rotate(135deg);\n\t}\n\t.icon-bg {\n\t\tfont-size: 17em;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%, -50%);\n\t\tcolor: #e4dcce;\n\t\tz-index: -1;\n\t}\n\n\th1 {\n\t\tfont-size: 200%;\n\t\tline-height: 120%;\n\t}\n\th2 {\n\t\tfont-size: 120%;\n\t\tline-height: 120%;\n\t\tpadding: 0.6rem 0;\n\t}\n\tp {\n\t\tfont-size: 105%;\n\t\tdisplay: block;\n\t\tmargin: 0 auto;\n\t\twidth: 80%;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\tp {\n\t\t\tfont-size: 120%;\n\t\t}\n\t}\n\n\t.form {\n\t\tmargin: 3vh 0;\n\t\twidth: 100%;\n\t}\n\n\t.input {\n\t\twidth: 80%;\n\t\tmax-width: 30rem;\n\t\ttext-align: center;\n\t\tdisplay: block;\n\t\tmargin: 0 auto;\n\t}\n\n\tinput {\n\t\twidth: 100%;\n\t\tpadding: 0 1.5rem;\n\t\theight: 3rem;\n\t\tdisplay: block;\n\t\tborder-radius: 3rem;\n\t\tborder: #c3b8a5 1px solid;\n\t\toutline: none;\n\t\ttransition: all 0.2s;\n\t}\n\n\tinput:focus {\n\t\tbox-shadow: 0 0 0.4rem rgba(227, 149, 48, 0.7);\n\t}\n\n\tinput.error {\n\t\tborder: #de2f22 1px solid;\n\t}\n\tinput.error:focus {\n\t\tbox-shadow: 0 0 0.4rem rgba(222, 47, 34, 0.7);\n\t}\n\t.button {\n\t\tmargin-top: 1.5vh;\n\t}\n\n\t.error {\n\t\tcolor: #de2f22;\n\t}\n\n\t.valid {\n\t\tcolor: #64ad15;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/bnlist/+page.svelte",
    "content": "<script>\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\timport Background from '$lib/components/RandomBackground.svelte';\n\timport List from './_list.svelte';\n\n\tlet loggedIn = false;\n\tlet pass = '';\n\tlet code = '1baedd25059490937a8f7a52dbaf5a7c168bc49f5bac0d7bc48bd6b58a84a421';\n\n\tconst digestMessage = async (message) => {\n\t\tconst msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array\n\t\tconst hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8); // hash the message\n\t\tconst hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n\t\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\n\t\treturn hashHex;\n\t};\n\n\tconst login = async () => {\n\t\tconst codeInput = await digestMessage(pass.trim());\n\t\tloggedIn = codeInput === code;\n\t\tif (loggedIn) return;\n\t\tpass = '';\n\t};\n</script>\n\n<section>\n\t<Background />\n\t<div class=\"container\" on:contextmenu|stopPropagation>\n\t\t<h1>Control Banner</h1>\n\n\t\t{#if !loggedIn}\n\t\t\t<form on:submit|preventDefault={login}>\n\t\t\t\t<div class=\"col\">\n\t\t\t\t\t<input type=\"text\" bind:value={pass} />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"col button\">\n\t\t\t\t\t<ButtonGeneral on:click={login}>Show List</ButtonGeneral>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t{:else}\n\t\t\t<List />\n\t\t{/if}\n\t</div>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t\tpadding: 1rem;\n\t}\n\n\t.container {\n\t\tpadding: 1rem;\n\t\tbackground-color: rgba(255, 255, 255, 0.8);\n\t\tposition: relative;\n\t\tborder-radius: 1rem;\n\t\tz-index: +10;\n\t}\n\n\tform {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 2rem;\n\t\ttext-align: center;\n\t}\n\n\tinput {\n\t\twidth: 300px;\n\t\tmax-width: 90%;\n\t\theight: 2.3rem;\n\t\tborder-radius: 4rem;\n\t\tborder: 0;\n\t\toutline: 0;\n\t\tpadding: 0 1rem;\n\t}\n\n\t.col.button {\n\t\tpadding-top: 1rem;\n\t}\n\th1 {\n\t\tpadding: 1rem;\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/bnlist/_list.svelte",
    "content": "<script>\n\timport { onMount, setContext } from 'svelte';\n\timport { API_HOST } from '$lib/env';\n\timport { imageCDN } from '$lib/helpers/assets';\n\timport { lazyLoad } from '$lib/helpers/lazyload';\n\timport { timeAgo } from '$lib/helpers/timeago';\n\timport { onlineBanner } from '$lib/helpers/banner-custom';\n\timport ButtonGeneral from '$lib/components/ButtonGeneral.svelte';\n\timport Pagination from '../_gachainfo/history/_pagination.svelte';\n\n\tlet activepage = 1;\n\tlet itemPerPage = 10;\n\tlet customList = [];\n\n\tconst block = async (id, db) => {\n\t\tawait onlineBanner.block(id, db);\n\t\tconst index = customList.findIndex(({ id: lID }) => id === lID);\n\t\tcustomList[index].blocked = true;\n\t};\n\n\tconst navigation = (page) => (activepage = page);\n\tsetContext('navigation', navigation);\n\n\tconst getItemPage = (data, activepage = 1) => {\n\t\tconst result = data.filter((d, i) => {\n\t\t\tconst begining = i > (activepage - 1) * itemPerPage - 1;\n\t\t\tconst end = i < itemPerPage * activepage;\n\t\t\treturn begining && end;\n\t\t});\n\t\treturn result;\n\t};\n\n\tconst loadBanners = async () => {\n\t\ttry {\n\t\t\tconst request = await fetch(API_HOST + '/storage');\n\t\t\tconst { success, data = [] } = await request.json();\n\t\t\tif (!success) return;\n\t\t\tconst dataToShow = data.filter(({ bannerName }) => bannerName);\n\t\t\tcustomList = window._.orderBy(dataToShow, ['lastModified'], ['desc']);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\tcustomList = [];\n\t\t}\n\t};\n\n\tonMount(() => {\n\t\tconst lodash = document.createElement('script');\n\t\tlodash.src = 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js';\n\t\tdocument.head.append(lodash);\n\n\t\tlodash.onload = loadBanners;\n\t});\n</script>\n\n<div class=\"list\" style=\"--content-width:1000px\">\n\t<div class=\"row total\">\n\t\t<span>\n\t\t\tTotal: {customList.length}\n\t\t</span>\n\t</div>\n\n\t<div class=\"row header\">\n\t\t<div class=\"col img\">Images</div>\n\t\t<div class=\"col info\">Banner information</div>\n\t\t<div class=\"col action\">Action</div>\n\t</div>\n\n\t{#if customList.length < 1}\n\t\t<div class=\"row\">\n\t\t\t<span> waiting ...</span>\n\t\t</div>\n\t{:else}\n\t\t{#each getItemPage(customList, activepage) as { bannerName, hostedImages = { }, blocked, id, db, lastModified }}\n\t\t\t<div class=\"row\" {id}>\n\t\t\t\t<div class=\"col img\">\n\t\t\t\t\t{#each ['artURL', 'faceURL', 'thumbnail'] as key}\n\t\t\t\t\t\t{#if hostedImages[key]}\n\t\t\t\t\t\t\t{#key hostedImages[key]}\n\t\t\t\t\t\t\t\t<a href={imageCDN(hostedImages[key])} target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t\t\t\t<img use:lazyLoad={imageCDN(hostedImages[key], 150)} alt={bannerName} />\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{/key}\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"col info\">\n\t\t\t\t\t<a class=\"name\" target=\"_blank\" href=\"/?banner={id}\">{bannerName}</a>\n\t\t\t\t\t<span class=\"time\"> {timeAgo(lastModified)} </span>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"col action\">\n\t\t\t\t\t{#if blocked}\n\t\t\t\t\t\t<ButtonGeneral disabled>Blocked</ButtonGeneral>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<ButtonGeneral on:click={() => block(id, db)}>Block</ButtonGeneral>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/each}\n\n\t\t<Pagination v2 {itemPerPage} {activepage} dataLength={customList.length} />\n\t{/if}\n</div>\n\n<style>\n\t.row {\n\t\tpadding: 0.2rem;\n\t\tborder-bottom: 1px solid rgba(0, 0, 0, 0.5);\n\t\tborder-right: 1px solid rgba(0, 0, 0, 0.5);\n\t\tborder-left: 1px solid rgba(0, 0, 0, 0.5);\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.total {\n\t\tpadding: 1rem;\n\t\tborder: none;\n\t}\n\t.header {\n\t\tbackground-color: rgba(0, 0, 0, 0.7);\n\t\tcolor: #fff;\n\t}\n\t.row:nth-child(odd) {\n\t\tbackground-color: rgba(255, 255, 255, 0.5);\n\t}\n\n\t.col {\n\t\tpadding: 1%;\n\t}\n\t.col.img {\n\t\twidth: 50%;\n\t}\n\t.img {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\t.img img {\n\t\tmax-height: 150px;\n\t\tmax-width: 100%;\n\t\tobject-fit: contain;\n\t}\n\n\t.header .col:not(.img),\n\t.col.action {\n\t\ttext-align: center;\n\t}\n\n\t.col.info {\n\t\tdisplay: block;\n\t\twidth: 30%;\n\t\tpadding: 2%;\n\t}\n\t.info a {\n\t\tdisplay: block;\n\t}\n\t.info span.time {\n\t\tdisplay: block;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tfont-style: italic;\n\t}\n\n\t.col.action {\n\t\twidth: 20%;\n\t\tpadding: 1rem;\n\t}\n\n\t@media screen and (max-width: 500px) {\n\t\t.row {\n\t\t\tflex-wrap: wrap;\n\t\t\tpadding: 0.5rem 0.1rem;\n\t\t}\n\t\t.row:nth-child(3) {\n\t\t\tborder-top: 1px solid rgba(0, 0, 0, 0.5);\n\t\t}\n\t\t.header {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.col.img,\n\t\t.col.info,\n\t\t.col.action {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/install/+page.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\timport { APP_TITLE } from '$lib/env';\n\timport { isMobile } from '$lib/store/app-stores';\n\timport { html as tutorAndroid } from '$post/install-android.md';\n\timport { html as tutorWindows } from '$post/install-windows.md';\n\n\tlet selected = 'windows';\n\t$: tutor = selected === 'android' ? tutorAndroid : tutorWindows;\n\n\tconst select = (device) => {\n\t\tselected = device;\n\t};\n\n\tonMount(() => {\n\t\tif ($isMobile) return (selected = 'android');\n\t\treturn;\n\t});\n</script>\n\n<svelte:head>\n\t<title>\n\t\tInstall Instruction | {$t('title', { default: APP_TITLE })}\n\t</title>\n</svelte:head>\n\n<section>\n\t<header>\n\t\t<div class=\"brand\">\n\t\t\t<a href=\"/\" on:click|preventDefault={() => window.location.replace('/')}>\n\t\t\t\tWishSimulator.App\n\t\t\t</a>\n\t\t</div>\n\t</header>\n\n\t<div class=\"select-device\">\n\t\t<button class:active={selected === 'android'} on:click={() => select('android')}>\n\t\t\t<i class=\"gi-android\" /> Android\n\t\t</button>\n\t\t<button class:active={selected === 'windows'} on:click={() => select('windows')}>\n\t\t\t<i class=\"gi-windows\" /> Windows\n\t\t</button>\n\t</div>\n\n\t<article class={selected}>\n\t\t{@html tutor}\n\t</article>\n\n\t<footer>\n\t\t<a href=\"/\" on:click|preventDefault={() => window.location.replace('/')}>\n\t\t\tStart Wishing Now !\n\t\t</a>\n\t</footer>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t\tbackground-color: #ebebeb;\n\t}\n\n\theader {\n\t\tdisplay: flex;\n\t\tpadding: 1rem 2%;\n\t\tjustify-content: space-between;\n\t\tbackground-color: rgb(20, 18, 15);\n\t\twidth: 100%;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tz-index: +10;\n\t\tcolor: #fff;\n\t\tfont-size: 1rem;\n\t}\n\n\tfooter {\n\t\ttext-align: right;\n\t\tmargin: 2rem 0;\n\t}\n\tfooter a:hover {\n\t\ttext-decoration: none;\n\t}\n\n\t.select-device,\n\tfooter {\n\t\tpadding: 1rem 10%;\n\t}\n\n\t.select-device button,\n\tfooter a {\n\t\tcolor: var(--text-color);\n\t\tmargin: 0 0.25rem;\n\t\topacity: 0.85;\n\t\tpadding: 0.5rem 1.2rem;\n\t\tfont-size: 1rem;\n\t\tborder-radius: 12rem;\n\t\tborder: 1px solid var(--text-color);\n\t\ttransition: all 0.2s;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.select-device button.active,\n\t.select-device button:hover,\n\tfooter a {\n\t\tbackground-color: var(--text-color);\n\t\tcolor: #fff;\n\t}\n\n\t.select-device button.active,\n\tfooter a:hover {\n\t\topacity: 1;\n\t}\n\n\ti {\n\t\tfont-size: 100%;\n\t\tmargin-right: 0.5rem;\n\t}\n\n\tarticle {\n\t\tcolor: var(--text-color);\n\t\tpadding: 0 10%;\n\t\tfont-size: 120%;\n\t}\n\n\tsection :global(h1) {\n\t\tfont-size: 1.7rem;\n\t\ttext-align: left;\n\t\tbackground-color: #dadada;\n\t\tpadding: 0.5rem 5%;\n\t\tposition: relative;\n\t\tfont-family: var(--genshin-font);\n\t}\n\t:global(.mobile) section :global(h1) {\n\t\tfont-size: 1.3rem;\n\t}\n\n\tsection :global(h1)::before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\twidth: 0.8rem;\n\t\theight: 80%;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tbackground-color: var(--text-color);\n\t}\n\n\t.android :global(h1 span) {\n\t\tcolor: #64ad15;\n\t}\n\t.windows :global(h1 span) {\n\t\tcolor: #3f8ed1;\n\t}\n\tsection :global(h2) {\n\t\tpadding: 1.5rem 0 0.5rem;\n\t}\n\n\tsection :global(ul),\n\tsection :global(ol) {\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t\tpadding-left: 1.5rem;\n\t}\n\tsection :global(p) {\n\t\tpadding: 0.4rem 0;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\tsection :global(img),\n\tsection :global(video) {\n\t\tmax-width: 100%;\n\t\tmax-height: 75vh;\n\t}\n\n\t@media screen and (max-width: 780px) {\n\t\t:global(main):not(.mobile) article {\n\t\t\tpadding: 3.5rem 5% 0;\n\t\t}\n\n\t\t:global(main):not(.mobile) article {\n\t\t\tpadding: 0 5% !important;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/privacy-policy/+page.svelte",
    "content": "<script>\n\timport { t } from 'svelte-i18n';\n\timport { APP_TITLE } from '$lib/env';\n\timport { html } from '$post/privacy.md';\n</script>\n\n<svelte:head>\n\t<title>\n\t\tPrivacy Policy | {$t('title', { default: APP_TITLE })}\n\t</title>\n</svelte:head>\n\n<section>\n\t<header>\n\t\t<h1>Privacy Policy for WishSimulator.App</h1>\n\t\t<h2>Genshin Impact Wish Simulator</h2>\n\t</header>\n\n\t<article>\n\t\t{@html html}\n\n\t\t<span id=\"ezoic-privacy-policy-embed\" />\n\t</article>\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow-y: auto;\n\t\tbackground-color: #ebebeb;\n\t}\n\n\theader {\n\t\theight: 20em;\n\t\tbackground-color: #458a74;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tcolor: #fff;\n\t\tbackground-image: url('https://user-images.githubusercontent.com/13815468/200537311-398f386d-00c3-4a5c-a338-54588c79095b.jpg');\n\t\tbackground-size: cover;\n\t\tposition: relative;\n\t}\n\theader::after {\n\t\tcontent: '';\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tbackground-color: rgba(0, 0, 0, 0.55);\n\t}\n\theader h1,\n\theader h2 {\n\t\tposition: relative;\n\t\tz-index: +1;\n\t}\n\n\theader h1 {\n\t\tfont-size: 2rem;\n\t}\n\n\theader h2 {\n\t\tfont-size: large;\n\t\tmargin-top: 1rem;\n\t}\n\n\tarticle {\n\t\tcolor: var(--text-color);\n\t\tpadding: 2% 10%;\n\t\tfont-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n\t}\n\n\tarticle :global(h2) {\n\t\tfont-family: var(--genshin-font);\n\t\tpadding: 1.5rem 0 0.5rem;\n\t}\n\n\tarticle :global(p) {\n\t\tpadding: 0.4rem 0;\n\t}\n\n\tarticle :global(a) {\n\t\tcolor: #dda04f;\n\t}\n\n\tarticle :global(ul) {\n\t\tlist-style-position: inside;\n\t}\n\n\t@media screen and (max-width: 900px) {\n\t\theader h1 {\n\t\t\tfont-size: 1.2rem;\n\t\t}\n\t\theader h2 {\n\t\t\tfont-size: 1rem;\n\t\t\tmargin-top: 0.5rem;\n\t\t}\n\n\t\tarticle {\n\t\t\tpadding: 2% 5%;\n\t\t}\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/screen/+page.svelte",
    "content": "<script>\n\timport { onMount } from 'svelte';\n\tonMount(() => window.location.replace('/'));\n</script>\n"
  },
  {
    "path": "src/routes/screen/chars/+page.svelte",
    "content": "<script>\n\timport { page } from '$app/stores';\n\timport { goto } from '$app/navigation';\n\timport { onMount } from 'svelte';\n\n\tconst { url } = $page;\n\tconst redirect = () => {\n\t\tconst replace = url.href.replace('/chars?a', '/wishitem?a');\n\t\treturn goto(replace);\n\t};\n\n\tonMount(redirect);\n</script>\n"
  },
  {
    "path": "src/routes/screen/wishitem/+page.svelte",
    "content": "<script>\n\timport { page } from '$app/stores';\n\timport { goto } from '$app/navigation';\n\timport { onMount } from 'svelte';\n\timport { t } from 'svelte-i18n';\n\n\timport { APP_TITLE } from '$lib/env';\n\timport { data as charDB } from '$lib/data/characters.json';\n\timport { data as weaponDB } from '$lib/data/weapons.json';\n\timport { decodeAndReadData } from '$lib/helpers/shareable-link';\n\timport WishResult from '../../_wish/wish-result/WishResult.svelte';\n\n\tlet list = [];\n\tlet itemName = '';\n\tlet isOutfit = false;\n\tconst { url } = $page;\n\n\tconst completeMissingData = (data) => {\n\t\tconst { name, type, useOutfit } = data;\n\t\titemName = name;\n\t\tisOutfit = useOutfit;\n\t\tconst itemdb = type === 'character' ? charDB : weaponDB;\n\t\tconst complement = itemdb.find((v) => v.name === name);\n\t\treturn { ...data, ...complement };\n\t};\n\n\tconst resolveData = () => {\n\t\ttry {\n\t\t\tconst itemData = url.searchParams.get('a');\n\t\t\tif (!itemData) throw new Error('no Data');\n\t\t\tconst parsed = decodeAndReadData.single(itemData);\n\t\t\tconst data = completeMissingData(parsed);\n\t\t\tlist = [data];\n\t\t} catch (e) {\n\t\t\tconsole.error('something Wrong');\n\t\t\tgoto('/');\n\t\t}\n\t};\n\n\tonMount(resolveData);\n</script>\n\n<svelte:head>\n\t<title>\n\t\t{$t(`${itemName}.name`)} | {$t('title')}\n\t</title>\n\n\t<meta name=\"title\" content={APP_TITLE} />\n\t<meta property=\"og:title\" content={APP_TITLE} />\n\t<meta property=\"twitter:title\" content={APP_TITLE} />\n</svelte:head>\n\n<section>\n\t{#if list.length > 0}\n\t\t<WishResult {list} {isOutfit} skip standalone />\n\t{/if}\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: var(--screen-height);\n\t}\n</style>\n"
  },
  {
    "path": "src/routes/screen/wishlist/+page.svelte",
    "content": "<script>\n\timport { page } from '$app/stores';\n\timport { goto } from '$app/navigation';\n\timport { onMount } from 'svelte';\n\n\timport { data as charDB } from '$lib/data/characters.json';\n\timport { data as weaponDB } from '$lib/data/weapons.json';\n\timport { decodeAndReadData } from '$lib/helpers/shareable-link';\n\timport WishResult from '../../_wish/wish-result/WishResult.svelte';\n\n\tlet list = [];\n\tconst { url } = $page;\n\n\tconst completeMissingData = (data) => {\n\t\tconst mergeData = data.map((itemData) => {\n\t\t\tconst { type, name } = itemData;\n\t\t\tconst itemdb = type === 'character' ? charDB : weaponDB;\n\t\t\tconst complement = itemdb.find((v) => v.name === name);\n\t\t\treturn { ...itemData, ...complement };\n\t\t});\n\t\treturn mergeData;\n\t};\n\n\tconst resolveData = () => {\n\t\ttry {\n\t\t\tconst itemData = url.searchParams.get('a');\n\t\t\tif (!itemData) throw new Error('no Data');\n\t\t\tconst parsed = decodeAndReadData.multi(itemData);\n\t\t\tlist = completeMissingData(parsed) || [];\n\t\t} catch (e) {\n\t\t\tconsole.error('something Wrong', e);\n\t\t\tgoto('/');\n\t\t}\n\t};\n\n\tonMount(resolveData);\n</script>\n\n<section>\n\t{#if list.length > 1}\n\t\t<WishResult {list} skip standalone />\n\t{/if}\n</section>\n\n<style>\n\tsection {\n\t\twidth: 100%;\n\t\theight: var(--screen-height);\n\t}\n</style>\n"
  },
  {
    "path": "src/sw.js",
    "content": "import { setCacheNameDetails, skipWaiting, clientsClaim } from 'workbox-core';\nimport { precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching';\nimport { registerRoute } from 'workbox-routing';\nimport { CacheFirst, NetworkFirst } from 'workbox-strategies';\nimport { CacheableResponsePlugin } from 'workbox-cacheable-response';\nimport { ExpirationPlugin } from 'workbox-expiration/ExpirationPlugin';\n\nconst cacheVersion = 'v3';\nconst maxAgeSeconds = 15 * 24 * 60 * 60; // 15 Days\nconst maxEntries = 60;\n\nclientsClaim();\nskipWaiting();\ncleanupOutdatedCaches();\n\nsetCacheNameDetails({\n\tprefix: 'WishSim',\n\tprecache: 'Core',\n\tsuffix: cacheVersion\n});\n\nlet precache = self.__WB_MANIFEST;\nprecache = [];\nprecacheAndRoute(precache, { ignoreURLParametersMatching: [/.*/] });\n\nregisterRoute('/', new NetworkFirst({ cacheName: `Static-${cacheVersion}` }));\n\nregisterRoute(\n\tnew RegExp('.(?:/?pwa=true|/?pwasc)'),\n\tnew NetworkFirst({\n\t\tcacheName: `Static-${cacheVersion}`,\n\t\tplugins: [\n\t\t\tnew ExpirationPlugin({ maxEntries, maxAgeSeconds }),\n\t\t\t{\n\t\t\t\tcachedResponseWillBeUsed: ({ cachedResponse }) => {\n\t\t\t\t\tif (cachedResponse) return cachedResponse;\n\t\t\t\t\treturn caches.match('/');\n\t\t\t\t},\n\t\t\t\tcacheWillUpdate: () => null // prevent update cache\n\t\t\t}\n\t\t]\n\t})\n);\n\nregisterRoute(\n\t({ url, request }) => {\n\t\tconst isAudio = url.href.includes('sfx');\n\t\tconst isVideo = url.href.includes('/videos');\n\n\t\tconst imgPath = url.pathname.includes('/internal/immutable/assets');\n\t\tconst transformPath = url.href.match(/(\\/transform\\/|\\/cb\\/)/);\n\t\tconst imagePaths = imgPath || transformPath;\n\n\t\tconst matchImage = url.href.match(new RegExp('.(?:svg|webp|jpg|png|jpeg)')) || [];\n\t\tconst isMatch = matchImage.length > 0;\n\t\tconst isImage = (request.destination === 'image' || isMatch) && imagePaths;\n\t\treturn isAudio || isImage || isVideo;\n\t},\n\tnew CacheFirst({\n\t\tcacheName: `Static-${cacheVersion}`,\n\t\tplugins: [\n\t\t\tnew CacheableResponsePlugin({ statuses: [0, 200] }),\n\t\t\tnew ExpirationPlugin({ maxEntries, maxAgeSeconds })\n\t\t]\n\t})\n);\n\nregisterRoute(\n\t({ url }) => {\n\t\tconst font = url.href.match(new RegExp('.(?:woff|woff2|ttf)$')) || [];\n\t\treturn font.length > 0;\n\t},\n\tnew NetworkFirst({\n\t\tcacheName: `Static-${cacheVersion}`,\n\t\tplugins: [\n\t\t\tnew CacheableResponsePlugin({ statuses: [0, 200] }),\n\t\t\tnew ExpirationPlugin({ maxEntries, maxAgeSeconds })\n\t\t]\n\t})\n);\n\nregisterRoute(\n\tnew RegExp('/internal/immutable/assets'),\n\tnew CacheFirst({\n\t\tcacheName: `Chunks-${cacheVersion}`,\n\t\tplugins: [new ExpirationPlugin({ maxEntries, maxAgeSeconds })]\n\t})\n);\n\nregisterRoute(\n\t({ url }) => {\n\t\tconst cdnParser = url.href.match('/js/image-cdn');\n\t\tconst isIcons = url.pathname.match('/icons');\n\t\tconst isStatic = url.pathname.match(new RegExp('.(?:css|js|json)$'));\n\t\tconst validOrigin = url.origin.match(new RegExp(/wishsimulator/));\n\t\treturn (cdnParser || isIcons || isStatic) && validOrigin;\n\t},\n\tnew NetworkFirst({\n\t\tcacheName: `Chunks-${cacheVersion}`,\n\t\tplugins: [new ExpirationPlugin({ maxEntries, maxAgeSeconds })]\n\t})\n);\n"
  },
  {
    "path": "static/.nojekyll",
    "content": ""
  },
  {
    "path": "static/.well-known/assetlinks.json",
    "content": "[\n\t{\n\t\t\"relation\": [\"delegate_permission/common.handle_all_urls\"],\n\t\t\"target\": {\n\t\t\t\"namespace\": \"android_app\",\n\t\t\t\"package_name\": \"twa.wishsimulator.app\",\n\t\t\t\"sha256_cert_fingerprints\": [\n\t\t\t\t\"64:37:0F:C3:47:0D:34:DA:C0:8B:3D:DA:4E:F6:FB:55:13:BD:92:6C:71:25:75:14:BB:9D:58:3F:7B:AD:70:84\",\n\t\t\t\t\"D8:1F:F7:07:1A:99:D9:4C:06:88:51:FC:9F:C5:51:6C:1F:37:2E:BC:13:EE:89:64:F4:99:85:AA:CF:DC:2F:D4\"\n\t\t\t]\n\t\t}\n\t}\n]\n"
  },
  {
    "path": "static/browserconfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig>\n    <msapplication>\n        <tile>\n            <square150x150logo src=\"/icons/mstile-150x150.png\"/>\n            <TileColor>#2d89ef</TileColor>\n        </tile>\n    </msapplication>\n</browserconfig>\n"
  },
  {
    "path": "static/google77966abbed90508f.html",
    "content": "google-site-verification: google77966abbed90508f.html\n"
  },
  {
    "path": "static/icons.css",
    "content": "@charset \"UTF-8\";\n\n@font-face {\n\tfont-family: 'genshin-icon';\n\tsrc: url('fonts/genshin-icon.eot');\n\tsrc: url('fonts/genshin-icon.eot?#iefix') format('embedded-opentype'),\n\t\turl('fonts/genshin-icon.woff') format('woff'), url('fonts/genshin-icon.ttf') format('truetype'),\n\t\turl('fonts/genshin-icon.svg#genshin-icon') format('svg');\n\tfont-weight: normal;\n\tfont-style: normal;\n}\n\n[data-icon]:before {\n\tfont-family: 'genshin-icon' !important;\n\tcontent: attr(data-icon);\n\tfont-style: normal !important;\n\tfont-weight: normal !important;\n\tfont-variant: normal !important;\n\ttext-transform: none !important;\n\tspeak: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n[class^='gi-']:before,\n[class*=' gi-']:before {\n\tfont-family: 'genshin-icon' !important;\n\tfont-style: normal !important;\n\tfont-weight: normal !important;\n\tfont-variant: normal !important;\n\ttext-transform: none !important;\n\tspeak: none;\n\tline-height: 1;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n.gi-anemo:before {\n\tcontent: '\\61';\n}\n.gi-bow:before {\n\tcontent: '\\7a';\n}\n.gi-catalyst:before {\n\tcontent: '\\65';\n}\n.gi-character:before {\n\tcontent: '\\66';\n}\n.gi-claymore:before {\n\tcontent: '\\79';\n}\n.gi-companion:before {\n\tcontent: '\\68';\n}\n.gi-close:before {\n\tcontent: '\\6b';\n}\n.gi-cryo:before {\n\tcontent: '\\6e';\n}\n.gi-dendro:before {\n\tcontent: '\\69';\n}\n.gi-domain:before {\n\tcontent: '\\6c';\n}\n.gi-dragonspine:before {\n\tcontent: '\\6d';\n}\n.gi-rotate-phone:before {\n\tcontent: '\\77';\n}\n.gi-recomended:before {\n\tcontent: '\\70';\n}\n.gi-pyro:before {\n\tcontent: '\\4c';\n}\n.gi-primo-star:before,\n.gi-captured:before {\n\tcontent: '\\72';\n}\n.gi-polearm:before {\n\tcontent: '\\73';\n}\n.gi-mondstadt:before {\n\tcontent: '\\75';\n}\n.gi-inazuma:before {\n\tcontent: '\\76';\n}\n.gi-hydro:before {\n\tcontent: '\\6f';\n}\n.gi-gift-shop:before {\n\tcontent: '\\78';\n}\n.gi-geo:before {\n\tcontent: '\\67';\n}\n.gi-electro:before {\n\tcontent: '\\64';\n}\n.gi-times:before {\n\tcontent: '\\41';\n}\n.gi-paimon-bargains:before {\n\tcontent: '\\42';\n}\n.gi-genesis:before {\n\tcontent: '\\43';\n}\n.gi-weapon:before {\n\tcontent: '\\44';\n}\n.gi-star:before {\n\tcontent: '\\45';\n}\n.gi-circle-o:before {\n\tcontent: '\\46';\n}\n.gi-caret-up:before {\n\tcontent: '\\47';\n}\n.gi-caret-down:before {\n\tcontent: '\\48';\n}\n.gi-angle-left:before {\n\tcontent: '\\49';\n}\n.gi-angle-right:before {\n\tcontent: '\\4a';\n}\n.gi-reply:before {\n\tcontent: '\\4b';\n}\n.gi-delete:before {\n\tcontent: '\\71';\n}\n.gi-arrow-up:before {\n\tcontent: '\\4d';\n}\n.gi-cancel:before {\n\tcontent: '\\4e';\n}\n.gi-exchange:before {\n\tcontent: '\\4f';\n}\n.gi-save:before {\n\tcontent: '\\50';\n}\n.gi-copy:before {\n\tcontent: '\\51';\n}\n.gi-help:before {\n\tcontent: '\\53';\n}\n.gi-twitter:before {\n\tcontent: '\\54';\n}\n.gi-facebook:before {\n\tcontent: '\\52';\n}\n.gi-instagram:before {\n\tcontent: '\\55';\n}\n.gi-link:before {\n\tcontent: '\\56';\n}\n.gi-dot-3:before {\n\tcontent: '\\57';\n}\n.gi-search:before {\n\tcontent: '\\58';\n}\n.gi-plus:before {\n\tcontent: '\\59';\n}\n.gi-outfit:before {\n\tcontent: '\\74';\n}\n.gi-shrink:before {\n\tcontent: '\\30';\n}\n.gi-lose:before {\n\tcontent: '\\31';\n}\n.gi-win:before {\n\tcontent: '\\33';\n}\n.gi-selected:before {\n\tcontent: '\\32';\n}\n.gi-guaranteed:before {\n\tcontent: '\\35';\n}\n.gi-apple:before {\n\tcontent: '\\34';\n}\n.gi-android:before {\n\tcontent: '\\36';\n}\n.gi-windows:before {\n\tcontent: '\\37';\n}\n.gi-eye-slash:before {\n\tcontent: '\\38';\n}\n.gi-eye:before {\n\tcontent: '\\39';\n}\n.gi-check:before {\n\tcontent: '\\21';\n}\n.gi-chat:before {\n\tcontent: '\\5a';\n}\n.gi-fullscreen:before {\n\tcontent: '\\23';\n}\n.gi-picture:before {\n\tcontent: '\\22';\n}\n.gi-team:before {\n\tcontent: '\\24';\n}\n.gi-user:before {\n\tcontent: '\\25';\n}\n.gi-min:before {\n\tcontent: '\\26';\n}\n.gi-gear:before {\n\tcontent: '\\27';\n}\n.gi-zoom-in:before {\n\tcontent: '\\28';\n}\n.gi-zoom-out:before {\n\tcontent: '\\29';\n}\n.gi-reset:before {\n\tcontent: '\\2a';\n}\n.gi-pen:before {\n\tcontent: '\\2b';\n}\n.gi-move:before {\n\tcontent: '\\2c';\n}\n.gi-lock:before {\n\tcontent: '\\2d';\n}\n.gi-share:before {\n\tcontent: '\\2e';\n}\n.gi-network:before {\n\tcontent: '\\2f';\n}\n.gi-cloud:before {\n\tcontent: '\\3a';\n}\n.gi-cloud-sync:before {\n\tcontent: '\\3b';\n}\n.gi-drive:before {\n\tcontent: '\\3c';\n}\n.gi-local:before {\n\tcontent: '\\3d';\n}\n.gi-import:before {\n\tcontent: '\\3e';\n}\n.gi-cloud-deleted:before {\n\tcontent: '\\3f';\n}\n.gi-refresh:before {\n\tcontent: '\\40';\n}\n.gi-fontaine:before {\n\tcontent: '\\5b';\n}\n.gi-sword:before {\n\tcontent: '\\6a';\n}\n.gi-sumeru:before {\n\tcontent: '\\5d';\n}\n.gi-liyue:before {\n\tcontent: '\\5e';\n}\n.gi-arrow-right:before {\n\tcontent: '\\5f';\n}\n.gi-arrow-left:before {\n\tcontent: '\\60';\n}\n"
  },
  {
    "path": "static/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nAllow: /install\nAllow: /privacy-policy\nAllow: /ads.txt\nAllow: /$\nDisallow: /\n"
  },
  {
    "path": "static/sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://wishsimulator.app</loc>\n    <changefreq>weekly</changefreq>\n    <lastmod>2023-05-23</lastmod>\n    <priority>0.8</priority>\n  </url>\n  <url>\n    <loc>https://wishsimulator.app/install</loc>\n    <changefreq>monthly</changefreq>\n    <lastmod>2023-04-08</lastmod>\n  </url>\n  <url>\n    <loc>https://wishsimulator.app/privacy-policy</loc>\n    <changefreq>monthly</changefreq>\n    <lastmod>2023-04-08</lastmod>\n  </url>\n</urlset>"
  },
  {
    "path": "svelte.config.js",
    "content": "import path from 'path';\nimport adapter from '@sveltejs/adapter-vercel';\nimport preprocess from 'svelte-preprocess';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\tkit: {\n\t\tappDir: 'internal',\n\t\tadapter: adapter(),\n\t\talias: {\n\t\t\t$post: path.resolve('./src/post')\n\t\t}\n\t},\n\tpreprocess: preprocess({ postcss: true })\n};\n\nexport default config;\n"
  },
  {
    "path": "vite.config.js",
    "content": "import path from 'path';\nimport { sveltekit } from '@sveltejs/kit/vite';\nimport { VitePWA } from 'vite-plugin-pwa';\nimport { imagetools } from 'vite-imagetools';\nimport { plugin as MdPlugin } from 'vite-plugin-markdown';\nimport { config as envConfig } from 'dotenv';\n\nenvConfig();\nconst { VITE_APP_TITLE, VITE_DESCRIPTION, VITE_HOST } = process.env;\nconst iconSize = [16, 32, 72, 96, 128, 144, 152, 192, 256, 384, 512];\nconst icons = iconSize.map((size) => {\n\tconst iconObj = {\n\t\tsrc: `./icons/icon-${size}x${size}.png`,\n\t\tsizes: `${size}x${size}`,\n\t\ttype: 'image/png'\n\t};\n\tif (size === 192) iconObj.purpose = 'maskable';\n\tif (size === 384) iconObj.purpose = 'any';\n\treturn iconObj;\n});\n\nconst screenshots = [\n\t{\n\t\tsizes: '591x1280',\n\t\tsrc: 'https://user-images.githubusercontent.com/13815468/200561929-52a32a57-bd2c-473c-b25d-dcd8877ce253.jpg',\n\t\tlabel: 'Section 1',\n\t\ttype: 'image/jpg'\n\t},\n\t{\n\t\tsizes: '591x1280',\n\t\tsrc: 'https://user-images.githubusercontent.com/13815468/200561938-c8429695-d7fe-4cf2-8391-d3e78daa789c.jpg',\n\t\tlabel: 'Section 2',\n\t\ttype: 'image/jpg'\n\t},\n\t{\n\t\tsizes: '591x1280',\n\t\tsrc: 'https://user-images.githubusercontent.com/13815468/200561909-2f965a06-6cdb-45a3-92c9-646546d514f8.jpg',\n\t\tlabel: 'Section 3',\n\t\ttype: 'image/jpg'\n\t},\n\t{\n\t\tsizes: '591x1280',\n\t\tsrc: 'https://user-images.githubusercontent.com/13815468/200561919-b76b11e2-dbda-4534-845e-48714f60fc40.jpg',\n\t\tlabel: 'Section 4',\n\t\ttype: 'image/jpg'\n\t}\n];\n\nconst manifest = {\n\torientation: 'landscape',\n\tname: VITE_APP_TITLE,\n\tdescription: VITE_DESCRIPTION,\n\tid: 'wishsimulator.app',\n\tshort_name: 'WishSimulator.App',\n\ttheme_color: '#ffffff',\n\tbackground_color: '#ffffff',\n\tdisplay: 'fullscreen',\n\tdisplay_override: [\n\t\t'fullscreen',\n\t\t'window-controls-overlay',\n\t\t'standalone',\n\t\t'minimal-ui',\n\t\t'browser'\n\t],\n\tscope: '/',\n\tscope_extensions: [{ origin: 'wishsimulator.app' }, { origin: 'wishsimulator.pages.dev' }],\n\tstart_url: '/?pwasc=homescreen',\n\tcategories: ['games', 'utilities'],\n\tdir: 'auto',\n\ticons,\n\tscreenshots,\n\thandle_links: 'preferred',\n\tprefer_related_applications: true,\n\tlaunch_handler: {\n\t\tclient_mode: ['focus-existing', 'auto']\n\t},\n\trelated_applications: [\n\t\t{\n\t\t\tplatform: 'webapp',\n\t\t\turl: `${VITE_HOST}/appmanifest.json`\n\t\t},\n\t\t{\n\t\t\tplatform: 'play',\n\t\t\turl: 'https://play.google.com/store/apps/details?id=twa.wishsimulator.app',\n\t\t\tid: 'twa.wishsimulator.app'\n\t\t}\n\t],\n\tedge_side_panel: {\n\t\tpreferred_width: 412\n\t}\n};\n\n/** @type {import('vite').UserConfig} */\nconst config = {\n\tplugins: [\n\t\timagetools(),\n\t\tsveltekit(),\n\t\tMdPlugin({ mode: 'html' }),\n\t\tVitePWA({\n\t\t\tstrategies: 'injectManifest',\n\t\t\tsrcDir: 'src',\n\t\t\toutDir: '.vercel/output/static',\n\t\t\tfilename: 'sw.js',\n\t\t\tregisterType: 'prompt',\n\t\t\tmanifestFilename: 'appmanifest.json',\n\t\t\tmanifest\n\t\t})\n\t],\n\tresolve: {\n\t\talias: {\n\t\t\t$post: path.resolve(__dirname, './src/post'),\n\t\t\t'@images': path.resolve(__dirname, './src/images')\n\t\t}\n\t},\n\tbuild: {\n\t\tchunkSizeWarningLimit: 350,\n\t\ttarget: ['es2020']\n\t}\n};\n\nexport default config;\n"
  },
  {
    "path": "vite.config.js.timestamp-1760945763883.mjs",
    "content": "// vite.config.js\nimport path from \"path\";\nimport { sveltekit } from \"file:///D:/Project/NodeJS/Wish%20Simulator/Genshin-Impact-Wish-Simulator/node_modules/@sveltejs/kit/src/exports/vite/index.js\";\nimport { VitePWA } from \"file:///D:/Project/NodeJS/Wish%20Simulator/Genshin-Impact-Wish-Simulator/node_modules/vite-plugin-pwa/dist/index.mjs\";\nimport { imagetools } from \"file:///D:/Project/NodeJS/Wish%20Simulator/Genshin-Impact-Wish-Simulator/node_modules/vite-imagetools/dist/index.js\";\nimport { plugin as MdPlugin } from \"file:///D:/Project/NodeJS/Wish%20Simulator/Genshin-Impact-Wish-Simulator/node_modules/vite-plugin-markdown/dist/index.js\";\nimport { config as envConfig } from \"file:///D:/Project/NodeJS/Wish%20Simulator/Genshin-Impact-Wish-Simulator/node_modules/dotenv/lib/main.js\";\nvar __vite_injected_original_dirname = \"D:\\\\Project\\\\NodeJS\\\\Wish Simulator\\\\Genshin-Impact-Wish-Simulator\";\nenvConfig();\nvar { VITE_APP_TITLE, VITE_DESCRIPTION, VITE_HOST } = process.env;\nvar iconSize = [16, 32, 72, 96, 128, 144, 152, 192, 256, 384, 512];\nvar icons = iconSize.map((size) => {\n  const iconObj = {\n    src: `./icons/icon-${size}x${size}.png`,\n    sizes: `${size}x${size}`,\n    type: \"image/png\"\n  };\n  if (size === 192)\n    iconObj.purpose = \"maskable\";\n  if (size === 384)\n    iconObj.purpose = \"any\";\n  return iconObj;\n});\nvar screenshots = [\n  {\n    sizes: \"591x1280\",\n    src: \"https://user-images.githubusercontent.com/13815468/200561929-52a32a57-bd2c-473c-b25d-dcd8877ce253.jpg\",\n    label: \"Section 1\",\n    type: \"image/jpg\"\n  },\n  {\n    sizes: \"591x1280\",\n    src: \"https://user-images.githubusercontent.com/13815468/200561938-c8429695-d7fe-4cf2-8391-d3e78daa789c.jpg\",\n    label: \"Section 2\",\n    type: \"image/jpg\"\n  },\n  {\n    sizes: \"591x1280\",\n    src: \"https://user-images.githubusercontent.com/13815468/200561909-2f965a06-6cdb-45a3-92c9-646546d514f8.jpg\",\n    label: \"Section 3\",\n    type: \"image/jpg\"\n  },\n  {\n    sizes: \"591x1280\",\n    src: \"https://user-images.githubusercontent.com/13815468/200561919-b76b11e2-dbda-4534-845e-48714f60fc40.jpg\",\n    label: \"Section 4\",\n    type: \"image/jpg\"\n  }\n];\nvar manifest = {\n  orientation: \"landscape\",\n  name: VITE_APP_TITLE,\n  description: VITE_DESCRIPTION,\n  id: \"wishsimulator.app\",\n  short_name: \"WishSimulator.App\",\n  theme_color: \"#ffffff\",\n  background_color: \"#ffffff\",\n  display: \"fullscreen\",\n  display_override: [\n    \"fullscreen\",\n    \"window-controls-overlay\",\n    \"standalone\",\n    \"minimal-ui\",\n    \"browser\"\n  ],\n  scope: \"/\",\n  scope_extensions: [{ origin: \"wishsimulator.app\" }, { origin: \"wishsimulator.pages.dev\" }],\n  start_url: \"/?pwasc=homescreen\",\n  categories: [\"games\", \"utilities\"],\n  dir: \"auto\",\n  icons,\n  screenshots,\n  handle_links: \"preferred\",\n  prefer_related_applications: true,\n  launch_handler: {\n    client_mode: [\"focus-existing\", \"auto\"]\n  },\n  related_applications: [\n    {\n      platform: \"webapp\",\n      url: `${VITE_HOST}/appmanifest.json`\n    },\n    {\n      platform: \"play\",\n      url: \"https://play.google.com/store/apps/details?id=twa.wishsimulator.app\",\n      id: \"twa.wishsimulator.app\"\n    }\n  ],\n  edge_side_panel: {\n    preferred_width: 412\n  }\n};\nvar config = {\n  plugins: [\n    imagetools(),\n    sveltekit(),\n    MdPlugin({ mode: \"html\" }),\n    VitePWA({\n      strategies: \"injectManifest\",\n      srcDir: \"src\",\n      outDir: \".vercel/output/static\",\n      filename: \"sw.js\",\n      registerType: \"prompt\",\n      manifestFilename: \"appmanifest.json\",\n      manifest\n    })\n  ],\n  resolve: {\n    alias: {\n      $post: path.resolve(__vite_injected_original_dirname, \"./src/post\"),\n      \"@images\": path.resolve(__vite_injected_original_dirname, \"./src/images\")\n    }\n  },\n  build: {\n    chunkSizeWarningLimit: 350,\n    target: [\"es2020\"]\n  }\n};\nvar vite_config_default = config;\nexport {\n  vite_config_default as default\n};\n//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxQcm9qZWN0XFxcXE5vZGVKU1xcXFxXaXNoIFNpbXVsYXRvclxcXFxHZW5zaGluLUltcGFjdC1XaXNoLVNpbXVsYXRvclwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxcUHJvamVjdFxcXFxOb2RlSlNcXFxcV2lzaCBTaW11bGF0b3JcXFxcR2Vuc2hpbi1JbXBhY3QtV2lzaC1TaW11bGF0b3JcXFxcdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L1Byb2plY3QvTm9kZUpTL1dpc2glMjBTaW11bGF0b3IvR2Vuc2hpbi1JbXBhY3QtV2lzaC1TaW11bGF0b3Ivdml0ZS5jb25maWcuanNcIjtpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IHsgc3ZlbHRla2l0IH0gZnJvbSAnQHN2ZWx0ZWpzL2tpdC92aXRlJztcclxuaW1wb3J0IHsgVml0ZVBXQSB9IGZyb20gJ3ZpdGUtcGx1Z2luLXB3YSc7XHJcbmltcG9ydCB7IGltYWdldG9vbHMgfSBmcm9tICd2aXRlLWltYWdldG9vbHMnO1xyXG5pbXBvcnQgeyBwbHVnaW4gYXMgTWRQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1tYXJrZG93bic7XHJcbmltcG9ydCB7IGNvbmZpZyBhcyBlbnZDb25maWcgfSBmcm9tICdkb3RlbnYnO1xyXG5cclxuZW52Q29uZmlnKCk7XHJcbmNvbnN0IHsgVklURV9BUFBfVElUTEUsIFZJVEVfREVTQ1JJUFRJT04sIFZJVEVfSE9TVCB9ID0gcHJvY2Vzcy5lbnY7XHJcbmNvbnN0IGljb25TaXplID0gWzE2LCAzMiwgNzIsIDk2LCAxMjgsIDE0NCwgMTUyLCAxOTIsIDI1NiwgMzg0LCA1MTJdO1xyXG5jb25zdCBpY29ucyA9IGljb25TaXplLm1hcCgoc2l6ZSkgPT4ge1xyXG5cdGNvbnN0IGljb25PYmogPSB7XHJcblx0XHRzcmM6IGAuL2ljb25zL2ljb24tJHtzaXplfXgke3NpemV9LnBuZ2AsXHJcblx0XHRzaXplczogYCR7c2l6ZX14JHtzaXplfWAsXHJcblx0XHR0eXBlOiAnaW1hZ2UvcG5nJ1xyXG5cdH07XHJcblx0aWYgKHNpemUgPT09IDE5MikgaWNvbk9iai5wdXJwb3NlID0gJ21hc2thYmxlJztcclxuXHRpZiAoc2l6ZSA9PT0gMzg0KSBpY29uT2JqLnB1cnBvc2UgPSAnYW55JztcclxuXHRyZXR1cm4gaWNvbk9iajtcclxufSk7XHJcblxyXG5jb25zdCBzY3JlZW5zaG90cyA9IFtcclxuXHR7XHJcblx0XHRzaXplczogJzU5MXgxMjgwJyxcclxuXHRcdHNyYzogJ2h0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEzODE1NDY4LzIwMDU2MTkyOS01MmEzMmE1Ny1iZDJjLTQ3M2MtYjI1ZC1kY2Q4ODc3Y2UyNTMuanBnJyxcclxuXHRcdGxhYmVsOiAnU2VjdGlvbiAxJyxcclxuXHRcdHR5cGU6ICdpbWFnZS9qcGcnXHJcblx0fSxcclxuXHR7XHJcblx0XHRzaXplczogJzU5MXgxMjgwJyxcclxuXHRcdHNyYzogJ2h0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEzODE1NDY4LzIwMDU2MTkzOC1jODQyOTY5NS1kN2ZlLTRjZjItODM5MS1kM2U3OGRhYTc4OWMuanBnJyxcclxuXHRcdGxhYmVsOiAnU2VjdGlvbiAyJyxcclxuXHRcdHR5cGU6ICdpbWFnZS9qcGcnXHJcblx0fSxcclxuXHR7XHJcblx0XHRzaXplczogJzU5MXgxMjgwJyxcclxuXHRcdHNyYzogJ2h0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEzODE1NDY4LzIwMDU2MTkwOS0yZjk2NWEwNi02Y2RiLTQ1YTMtOTJjOS02NDY1NDZkNTE0ZjguanBnJyxcclxuXHRcdGxhYmVsOiAnU2VjdGlvbiAzJyxcclxuXHRcdHR5cGU6ICdpbWFnZS9qcGcnXHJcblx0fSxcclxuXHR7XHJcblx0XHRzaXplczogJzU5MXgxMjgwJyxcclxuXHRcdHNyYzogJ2h0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEzODE1NDY4LzIwMDU2MTkxOS1iNzZiMTFlMi1kYmRhLTQ1MzQtODQ1ZS00ODcxNGY2MGZjNDAuanBnJyxcclxuXHRcdGxhYmVsOiAnU2VjdGlvbiA0JyxcclxuXHRcdHR5cGU6ICdpbWFnZS9qcGcnXHJcblx0fVxyXG5dO1xyXG5cclxuY29uc3QgbWFuaWZlc3QgPSB7XHJcblx0b3JpZW50YXRpb246ICdsYW5kc2NhcGUnLFxyXG5cdG5hbWU6IFZJVEVfQVBQX1RJVExFLFxyXG5cdGRlc2NyaXB0aW9uOiBWSVRFX0RFU0NSSVBUSU9OLFxyXG5cdGlkOiAnd2lzaHNpbXVsYXRvci5hcHAnLFxyXG5cdHNob3J0X25hbWU6ICdXaXNoU2ltdWxhdG9yLkFwcCcsXHJcblx0dGhlbWVfY29sb3I6ICcjZmZmZmZmJyxcclxuXHRiYWNrZ3JvdW5kX2NvbG9yOiAnI2ZmZmZmZicsXHJcblx0ZGlzcGxheTogJ2Z1bGxzY3JlZW4nLFxyXG5cdGRpc3BsYXlfb3ZlcnJpZGU6IFtcclxuXHRcdCdmdWxsc2NyZWVuJyxcclxuXHRcdCd3aW5kb3ctY29udHJvbHMtb3ZlcmxheScsXHJcblx0XHQnc3RhbmRhbG9uZScsXHJcblx0XHQnbWluaW1hbC11aScsXHJcblx0XHQnYnJvd3NlcidcclxuXHRdLFxyXG5cdHNjb3BlOiAnLycsXHJcblx0c2NvcGVfZXh0ZW5zaW9uczogW3sgb3JpZ2luOiAnd2lzaHNpbXVsYXRvci5hcHAnIH0sIHsgb3JpZ2luOiAnd2lzaHNpbXVsYXRvci5wYWdlcy5kZXYnIH1dLFxyXG5cdHN0YXJ0X3VybDogJy8/cHdhc2M9aG9tZXNjcmVlbicsXHJcblx0Y2F0ZWdvcmllczogWydnYW1lcycsICd1dGlsaXRpZXMnXSxcclxuXHRkaXI6ICdhdXRvJyxcclxuXHRpY29ucyxcclxuXHRzY3JlZW5zaG90cyxcclxuXHRoYW5kbGVfbGlua3M6ICdwcmVmZXJyZWQnLFxyXG5cdHByZWZlcl9yZWxhdGVkX2FwcGxpY2F0aW9uczogdHJ1ZSxcclxuXHRsYXVuY2hfaGFuZGxlcjoge1xyXG5cdFx0Y2xpZW50X21vZGU6IFsnZm9jdXMtZXhpc3RpbmcnLCAnYXV0byddXHJcblx0fSxcclxuXHRyZWxhdGVkX2FwcGxpY2F0aW9uczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwbGF0Zm9ybTogJ3dlYmFwcCcsXHJcblx0XHRcdHVybDogYCR7VklURV9IT1NUfS9hcHBtYW5pZmVzdC5qc29uYFxyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0cGxhdGZvcm06ICdwbGF5JyxcclxuXHRcdFx0dXJsOiAnaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPXR3YS53aXNoc2ltdWxhdG9yLmFwcCcsXHJcblx0XHRcdGlkOiAndHdhLndpc2hzaW11bGF0b3IuYXBwJ1xyXG5cdFx0fVxyXG5cdF0sXHJcblx0ZWRnZV9zaWRlX3BhbmVsOiB7XHJcblx0XHRwcmVmZXJyZWRfd2lkdGg6IDQxMlxyXG5cdH1cclxufTtcclxuXHJcbi8qKiBAdHlwZSB7aW1wb3J0KCd2aXRlJykuVXNlckNvbmZpZ30gKi9cclxuY29uc3QgY29uZmlnID0ge1xyXG5cdHBsdWdpbnM6IFtcclxuXHRcdGltYWdldG9vbHMoKSxcclxuXHRcdHN2ZWx0ZWtpdCgpLFxyXG5cdFx0TWRQbHVnaW4oeyBtb2RlOiAnaHRtbCcgfSksXHJcblx0XHRWaXRlUFdBKHtcclxuXHRcdFx0c3RyYXRlZ2llczogJ2luamVjdE1hbmlmZXN0JyxcclxuXHRcdFx0c3JjRGlyOiAnc3JjJyxcclxuXHRcdFx0b3V0RGlyOiAnLnZlcmNlbC9vdXRwdXQvc3RhdGljJyxcclxuXHRcdFx0ZmlsZW5hbWU6ICdzdy5qcycsXHJcblx0XHRcdHJlZ2lzdGVyVHlwZTogJ3Byb21wdCcsXHJcblx0XHRcdG1hbmlmZXN0RmlsZW5hbWU6ICdhcHBtYW5pZmVzdC5qc29uJyxcclxuXHRcdFx0bWFuaWZlc3RcclxuXHRcdH0pXHJcblx0XSxcclxuXHRyZXNvbHZlOiB7XHJcblx0XHRhbGlhczoge1xyXG5cdFx0XHQkcG9zdDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjL3Bvc3QnKSxcclxuXHRcdFx0J0BpbWFnZXMnOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMvaW1hZ2VzJylcclxuXHRcdH1cclxuXHR9LFxyXG5cdGJ1aWxkOiB7XHJcblx0XHRjaHVua1NpemVXYXJuaW5nTGltaXQ6IDM1MCxcclxuXHRcdHRhcmdldDogWydlczIwMjAnXVxyXG5cdH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF3WCxPQUFPLFVBQVU7QUFDelksU0FBUyxpQkFBaUI7QUFDMUIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsVUFBVSxnQkFBZ0I7QUFDbkMsU0FBUyxVQUFVLGlCQUFpQjtBQUxwQyxJQUFNLG1DQUFtQztBQU96QyxVQUFVO0FBQ1YsSUFBTSxFQUFFLGdCQUFnQixrQkFBa0IsVUFBVSxJQUFJLFFBQVE7QUFDaEUsSUFBTSxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHO0FBQ25FLElBQU0sUUFBUSxTQUFTLElBQUksQ0FBQyxTQUFTO0FBQ3BDLFFBQU0sVUFBVTtBQUFBLElBQ2YsS0FBSyxnQkFBZ0IsUUFBUTtBQUFBLElBQzdCLE9BQU8sR0FBRyxRQUFRO0FBQUEsSUFDbEIsTUFBTTtBQUFBLEVBQ1A7QUFDQSxNQUFJLFNBQVM7QUFBSyxZQUFRLFVBQVU7QUFDcEMsTUFBSSxTQUFTO0FBQUssWUFBUSxVQUFVO0FBQ3BDLFNBQU87QUFDUixDQUFDO0FBRUQsSUFBTSxjQUFjO0FBQUEsRUFDbkI7QUFBQSxJQUNDLE9BQU87QUFBQSxJQUNQLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLElBQ0MsT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsSUFDQyxPQUFPO0FBQUEsSUFDUCxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFBQSxJQUNDLE9BQU87QUFBQSxJQUNQLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxFQUNQO0FBQ0Q7QUFFQSxJQUFNLFdBQVc7QUFBQSxFQUNoQixhQUFhO0FBQUEsRUFDYixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixJQUFJO0FBQUEsRUFDSixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixrQkFBa0I7QUFBQSxFQUNsQixTQUFTO0FBQUEsRUFDVCxrQkFBa0I7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNEO0FBQUEsRUFDQSxPQUFPO0FBQUEsRUFDUCxrQkFBa0IsQ0FBQyxFQUFFLFFBQVEsb0JBQW9CLEdBQUcsRUFBRSxRQUFRLDBCQUEwQixDQUFDO0FBQUEsRUFDekYsV0FBVztBQUFBLEVBQ1gsWUFBWSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQ2pDLEtBQUs7QUFBQSxFQUNMO0FBQUEsRUFDQTtBQUFBLEVBQ0EsY0FBYztBQUFBLEVBQ2QsNkJBQTZCO0FBQUEsRUFDN0IsZ0JBQWdCO0FBQUEsSUFDZixhQUFhLENBQUMsa0JBQWtCLE1BQU07QUFBQSxFQUN2QztBQUFBLEVBQ0Esc0JBQXNCO0FBQUEsSUFDckI7QUFBQSxNQUNDLFVBQVU7QUFBQSxNQUNWLEtBQUssR0FBRztBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsTUFDQyxVQUFVO0FBQUEsTUFDVixLQUFLO0FBQUEsTUFDTCxJQUFJO0FBQUEsSUFDTDtBQUFBLEVBQ0Q7QUFBQSxFQUNBLGlCQUFpQjtBQUFBLElBQ2hCLGlCQUFpQjtBQUFBLEVBQ2xCO0FBQ0Q7QUFHQSxJQUFNLFNBQVM7QUFBQSxFQUNkLFNBQVM7QUFBQSxJQUNSLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUFBLElBQ3pCLFFBQVE7QUFBQSxNQUNQLFlBQVk7QUFBQSxNQUNaLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxNQUNSLFVBQVU7QUFBQSxNQUNWLGNBQWM7QUFBQSxNQUNkLGtCQUFrQjtBQUFBLE1BQ2xCO0FBQUEsSUFDRCxDQUFDO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1IsT0FBTztBQUFBLE1BQ04sT0FBTyxLQUFLLFFBQVEsa0NBQVcsWUFBWTtBQUFBLE1BQzNDLFdBQVcsS0FBSyxRQUFRLGtDQUFXLGNBQWM7QUFBQSxJQUNsRDtBQUFBLEVBQ0Q7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNOLHVCQUF1QjtBQUFBLElBQ3ZCLFFBQVEsQ0FBQyxRQUFRO0FBQUEsRUFDbEI7QUFDRDtBQUVBLElBQU8sc0JBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==\n"
  }
]