diff --git a/.github/DISCUSSION_TEMPLATE/general.yml b/.github/DISCUSSION_TEMPLATE/general.yml deleted file mode 100644 index 18d0f8585fb..00000000000 --- a/.github/DISCUSSION_TEMPLATE/general.yml +++ /dev/null @@ -1,17 +0,0 @@ -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: textarea - attributes: - label: Description - description: Please describe in detail what you want to share. - validations: - required: true diff --git a/.github/DISCUSSION_TEMPLATE/ideas.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml deleted file mode 100644 index e4c987d794e..00000000000 --- a/.github/DISCUSSION_TEMPLATE/ideas.yml +++ /dev/null @@ -1,7 +0,0 @@ -body: - - type: textarea - attributes: - label: Description - description: Please describe in detail what you want to share. - validations: - required: true diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yml b/.github/DISCUSSION_TEMPLATE/q-a.yml deleted file mode 100644 index a2e2aa150c0..00000000000 --- a/.github/DISCUSSION_TEMPLATE/q-a.yml +++ /dev/null @@ -1,40 +0,0 @@ -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: dropdown - id: download - attributes: - label: How did you create the site? - options: - - Generated from `chirpy-starter` - - Built from `jekyll-theme-chirpy` - validations: - required: true - - - type: textarea - attributes: - label: Description - description: Please describe your need in detail. - validations: - required: true - - - type: textarea - attributes: - label: Operations you have already tried - description: Describe the effort you went through. - validations: - required: true - - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Or logs? Anything that will give us more context about the issue you are encountering! diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f22921b7049..00000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -ko_fi: coteschung -custom: https://sponsor.cotes.page diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 7b513fb5841..00000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Bug Report -description: Create a report to help us improve -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: dropdown - id: download - attributes: - label: How did you create the site? - options: - - Generated from `chirpy-starter` - - Built from `jekyll-theme-chirpy` - validations: - required: true - - - type: textarea - attributes: - label: Describe the bug - description: A clear and concise description of what the bug is. - validations: - required: true - - - type: textarea - attributes: - label: Steps To Reproduce - description: Steps to reproduce the behavior. - placeholder: | - 1. In this environment... - 2. With this config... - 3. Run '...' - 4. See error... - validations: - required: true - - - type: textarea - attributes: - label: Expected Behavior - description: A concise description of what you expected to happen. - validations: - required: true - - - type: textarea - attributes: - label: Environment - value: | - - Ruby: - - Jekyll: - - Chirpy: - validations: - required: true - - - type: textarea - attributes: - label: Anything else? - description: | - Links? References? Or logs? Anything that will give us more context about the issue you are encountering! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 1dfb2b26dd0..00000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask the community for help - url: https://github.com/cotes2020/jekyll-theme-chirpy/discussions - about: Please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 79570359f17..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Feature Request -description: Suggest an idea for this project -labels: - - enhancement -body: - - type: checkboxes - attributes: - label: Checklist - description: Following the guidelines can make you more likely to get responses. - options: - - label: >- - I have read and accepted the - [contributing guidelines](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CONTRIBUTING.md). - required: true - - - type: textarea - attributes: - label: Is your feature request related to a problem? Please describe - description: A clear and concise description of what the problem is. - validations: - required: true - - - type: textarea - attributes: - label: Describe the solution you'd like - description: A clear and concise description of what you want to happen. - validations: - required: true - - - type: textarea - attributes: - label: Describe alternatives you've considered - description: A clear and concise description of any alternative solutions or features you've considered. - - - type: textarea - attributes: - label: Additional context - description: Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 0ff984a75d4..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -## Type of change - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Improvement (refactoring and improving code) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) -- [ ] Documentation update - -## Description - - -## Additional context - diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml deleted file mode 100644 index 1439beb5c5e..00000000000 --- a/.github/codeql/codeql-config.yml +++ /dev/null @@ -1,2 +0,0 @@ -paths-ignore: - - "assets/js" diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index a51f37eb0eb..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,28 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "bundler" - directory: "/" - schedule: - interval: "weekly" - - package-ecosystem: "npm" - directory: "/" - versioning-strategy: increase - groups: - prod-deps: - dependency-type: production - dev-deps: - dependency-type: development - schedule: - interval: "weekly" - - package-ecosystem: "github-actions" - directory: "/" - groups: - gh-actions: - update-types: - - "major" - schedule: - interval: "weekly" - - package-ecosystem: "devcontainers" - directory: "/" - schedule: - interval: weekly diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index c665f755e11..00000000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: CD - -on: - push: - branches: [production] - tags-ignore: ["**"] - -jobs: - release: - if: ${{ ! startsWith(github.event.head_commit.message, 'chore(release)') }} - permissions: - contents: write - issues: write - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3 - bundler-cache: true - - - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - run: npm install - - run: npx semantic-release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} - - publish: - needs: release - uses: ./.github/workflows/publish.yml - secrets: - GH_PAT: ${{ secrets.GH_PAT }} - BUILDER: ${{ secrets.BUILDER }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 31b878632b1..00000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: CI - -on: - push: - branches: - - master - - "hotfix/*" - paths-ignore: - - ".github/**" - - "!.github/workflows/ci.yml" - - .gitignore - - "docs/**" - - README.md - - LICENSE - pull_request: - paths-ignore: - - ".github/**" - - "!.github/workflows/ci.yml" - - .gitignore - - "docs/**" - - README.md - - LICENSE - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - ruby: ["3.1", "3.2", "3.3"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 # for posts's lastmod - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - bundler-cache: true - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - name: Build Assets - run: npm i && npm run build - - - name: Test Site - run: bash tools/test.sh diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 06feb7fd69a..00000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: ["master"] - paths: ["_javascript/**/*.js"] - pull_request: - paths: ["_javascript/**/*.js"] - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ["javascript"] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: "${{ matrix.language }}" - config-file: .github/codeql/codeql-config.yml - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml deleted file mode 100644 index 58f1a3ff3d1..00000000000 --- a/.github/workflows/commitlint.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Lint Commit Messages - -on: - push: - branches: - - master - - "hotfix/*" - pull_request: - -jobs: - commitlint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: wagoid/commitlint-github-action@v6 diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml new file mode 100644 index 00000000000..f8a1cdefa1c --- /dev/null +++ b/.github/workflows/jekyll.yml @@ -0,0 +1,64 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 + with: + ruby-version: '3.1' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-22.04 + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/pr-filter.yml b/.github/workflows/pr-filter.yml deleted file mode 100644 index 8e9a18b736f..00000000000 --- a/.github/workflows/pr-filter.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: PR Filter - -on: - pull_request_target: - types: [opened, reopened] - -jobs: - check-template: - if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - runs-on: ubuntu-latest - permissions: - pull-requests: write - - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Check PR Content - id: intercept - uses: actions/github-script@v7 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const script = require('.github/workflows/scripts/pr-filter.js'); - await script({ github, context, core }); diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index b0f9713f2ef..00000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Publish - -on: - push: - branches: - - docs - workflow_call: - secrets: - GH_PAT: - required: true - BUILDER: - required: true - workflow_dispatch: - -jobs: - launch: - runs-on: ubuntu-latest - steps: - - run: | - curl -X POST -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer ${{ secrets.GH_PAT }}" \ - https://api.github.com/repos/${{ secrets.BUILDER }}/dispatches \ - -d '{"event_type":"deploy", "client_payload":{"branch": "${{ github.ref_name }}"}}' diff --git a/.github/workflows/scripts/pr-filter.js b/.github/workflows/scripts/pr-filter.js deleted file mode 100644 index 03f50dc5ca2..00000000000 --- a/.github/workflows/scripts/pr-filter.js +++ /dev/null @@ -1,36 +0,0 @@ -function hasTypes(markdown) { - return /## Type of change/.test(markdown) && /-\s\[x\]/i.test(markdown); -} - -function hasDescription(markdown) { - return ( - /## Description/.test(markdown) && - !/## Description\s*\n\s*(##|\s*$)/.test(markdown) - ); -} - -module.exports = async ({ github, context, core }) => { - const pr = context.payload.pull_request; - const body = pr.body === null ? '' : pr.body; - const markdown = body.replace(//g, ''); - const action = context.payload.action; - - const isValid = - markdown !== '' && hasTypes(markdown) && hasDescription(markdown); - - if (!isValid) { - await github.rest.pulls.update({ - ...context.repo, - pull_number: pr.number, - state: 'closed' - }); - - await github.rest.issues.createComment({ - ...context.repo, - issue_number: pr.number, - body: `Oops, it seems you've ${action} an invalid pull request. No worries, we'll close it for you.` - }); - - core.setFailed('PR content does not meet template requirements.'); - } -}; diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 4f6e91cbf39..00000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: "Close stale issues and PRs" - -on: - schedule: - - cron: "0 0 * * *" # every day at 00:00 UTC - -permissions: - issues: write - pull-requests: write - -env: - STALE_LABEL: inactive - EXEMPT_LABELS: "pending,planning,in progress" - MESSAGE: > - This conversation has been automatically marked as stale because it has not had recent activity. - It will be closed if no further activity occurs. - Thank you for your contributions. - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v9 - with: - # 60 days before marking issues/PRs stale - days-before-close: -1 # does not close automatically - stale-issue-label: ${{ env.STALE_LABEL }} - exempt-issue-labels: ${{ env.EXEMPT_LABELS }} - stale-issue-message: ${{ env.MESSAGE }} - stale-pr-label: ${{ env.STALE_LABEL }} - exempt-pr-labels: ${{ env.EXEMPT_LABELS }} - stale-pr-message: ${{ env.MESSAGE }} diff --git a/.github/workflows/starter/pages-deploy.yml b/.github/workflows/starter/pages-deploy.yml deleted file mode 100644 index cc28f99fd25..00000000000 --- a/.github/workflows/starter/pages-deploy.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: "Build and Deploy" -on: - push: - branches: - - main - - master - paths-ignore: - - .gitignore - - README.md - - LICENSE - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - # submodules: true - # If using the 'assets' git submodule from Chirpy Starter, uncomment above - # (See: https://github.com/cotes2020/chirpy-starter/tree/main/assets) - - - name: Setup Pages - id: pages - uses: actions/configure-pages@v4 - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3 - bundler-cache: true - - - name: Build site - run: bundle exec jekyll b -d "_site${{ steps.pages.outputs.base_path }}" - env: - JEKYLL_ENV: "production" - - - name: Test site - run: | - bundle exec htmlproofer _site \ - \-\-disable-external \ - \-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" - - - name: Upload site artifact - uses: actions/upload-pages-artifact@v3 - with: - path: "_site${{ steps.pages.outputs.base_path }}" - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 7dd7cefd964..068268d02a1 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,4 @@ package-lock.json !.vscode/tasks.json # Misc -_sass/vendors -assets/js/dist +.DS_Store \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg index 0a4b97de53a..fd5fc78e744 100644 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1 +1 @@ -npx --no -- commitlint --edit $1 +# npx --no -- commitlint --edit $1 diff --git a/Gemfile b/Gemfile index e5415748ad5..d85bc481125 100644 --- a/Gemfile +++ b/Gemfile @@ -12,3 +12,8 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do end gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] + +gem "jekyll-admin", group: :jekyll_plugins +gem "sinatra", ">= 3", "< 4" +gem "rackup" +gem "jekyll-sitemap" \ No newline at end of file diff --git a/_config.yml b/_config.yml index d6f84c57815..72c02320fd9 100644 --- a/_config.yml +++ b/_config.yml @@ -9,44 +9,44 @@ theme: jekyll-theme-chirpy lang: en # Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker -timezone: Asia/Shanghai +timezone: # jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # ↓ -------------------------- -title: Chirpy # the main title +title: Padomin # the main title -tagline: A text-focused Jekyll theme # it will display as the subtitle +tagline: 문과형 공대생의 개발생활 # it will display as the subtitle description: >- # used by seo meta and the atom feed - A minimal, responsive and feature-rich Jekyll theme for technical writing. + 문과형 공대생의 개발생활 # Fill in the protocol & hostname for your site. # E.g. 'https://username.github.io', note that it does not end with a '/'. -url: "" +url: "https://padomin.github.io" github: - username: github_username # change to your GitHub username + username: padomin # change to your GitHub username twitter: - username: twitter_username # change to your Twitter username + username: # change to your Twitter username social: # Change to your full name. # It will be displayed as the default author of the posts and the copyright owner in the Footer - name: your_full_name - email: example@domain.com # change to your email address + name: Padomin + email: tsuna0311@gmail.com # change to your email address links: # The first element serves as the copyright owner's link - - https://twitter.com/username # change to your Twitter homepage - - https://github.com/username # change to your GitHub homepage + # - https://twitter.com/username # change to your Twitter homepage + - https://github.com/padomin # change to your GitHub homepage # Uncomment below to add more social links # - https://www.facebook.com/username # - https://www.linkedin.com/in/username # Site Verification Settings webmaster_verifications: - google: # fill in your Google verification code + google: KEBXzSsev8-3CHtvHH3bxIECrrmfvy9q96-8TPqTm6w # fill in your Google verification code bing: # fill in your Bing verification code alexa: # fill in your Alexa verification code yandex: # fill in your Yandex verification code @@ -59,7 +59,7 @@ webmaster_verifications: # Web Analytics Settings analytics: google: - id: # fill in your Google Analytics ID + id: G-G68DP4MGS6 # fill in your Google Analytics ID goatcounter: id: # fill in your GoatCounter ID umami: @@ -95,10 +95,10 @@ theme_mode: # [light | dark] # will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' # # e.g. 'https://cdn.com' -cdn: "https://chirpy-img.netlify.app" +cdn: # the avatar on sidebar, support local or CORS resources -avatar: "/commons/avatar.jpg" +avatar: avatars/bocchi.jpg # The URL of the site-wide social preview image used in SEO `og:image` meta tag. # It can be overridden by a customized `page.image` in front matter. @@ -109,7 +109,7 @@ toc: true comments: # Global switch for the post-comment system. Keeping it empty means disabled. - provider: # [disqus | utterances | giscus] + provider: giscus # [disqus | utterances | giscus] # The provider options are as follows: disqus: shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname @@ -119,14 +119,14 @@ comments: issue_term: # < url | pathname | title | ...> # Giscus options › https://giscus.app giscus: - repo: # / - repo_id: - category: - category_id: + repo: padomin/padomin.github.io # / + repo_id: R_kgDONj4G8Q + category: Announcements + category_id: DIC_kwDONj4G8c4Csuox mapping: # optional, default to 'pathname' strict: # optional, default to '0' - input_position: # optional, default to 'bottom' - lang: # optional, default to the value of `site.lang` + input_position: top # optional, default to 'bottom' + lang: ko # optional, default to the value of `site.lang` reactions_enabled: # optional, default to the value of `1` # Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets @@ -224,3 +224,10 @@ jekyll-archives: permalinks: tag: /tags/:name/ category: /categories/:name/ + +jekyll_admin: + hidden_links: + homepage: "" + +plugins: + - jekyll-sitemap \ No newline at end of file diff --git a/_data/contact.yml b/_data/contact.yml index ed40acb7e97..50f8b0d8267 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -3,16 +3,16 @@ - type: github icon: "fab fa-github" -- type: twitter - icon: "fa-brands fa-x-twitter" +# - type: twitter +# icon: "fa-brands fa-x-twitter" - type: email icon: "fas fa-envelope" noblank: true # open link in current tab -- type: rss - icon: "fas fa-rss" - noblank: true +# - type: rss +# icon: "fas fa-rss" +# noblank: true # Uncomment and complete the url below to enable more contact options # # - type: mastodon diff --git a/_data/share.yml b/_data/share.yml index 6f9756804f5..8b7df5e4806 100644 --- a/_data/share.yml +++ b/_data/share.yml @@ -10,9 +10,9 @@ platforms: icon: "fab fa-facebook-square" link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" - - type: Telegram - icon: "fab fa-telegram" - link: "https://t.me/share/url?url=URL&text=TITLE" + # - type: Telegram + # icon: "fab fa-telegram" + # link: "https://t.me/share/url?url=URL&text=TITLE" # Uncomment below if you need to. # diff --git a/_includes/head.html b/_includes/head.html index 4514666a541..b881e357816 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -123,4 +123,7 @@ {% endif %} {% include metadata-hook.html %} + {% if page.use_math %} + {% include mathjax_support.html %} + {% endif %} diff --git a/_includes/mathjax_support.html b/_includes/mathjax_support.html new file mode 100644 index 00000000000..7ca7d1fc232 --- /dev/null +++ b/_includes/mathjax_support.html @@ -0,0 +1,13 @@ + + + diff --git a/_posts/2019-08-08-text-and-typography.md b/_posts/2019-08-08-text-and-typography.md deleted file mode 100644 index a8db26a00ff..00000000000 --- a/_posts/2019-08-08-text-and-typography.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Text and Typography -description: Examples of text, typography, math equations, diagrams, flowcharts, pictures, videos, and more. -author: cotes -date: 2019-08-08 11:33:00 +0800 -categories: [Blogging, Demo] -tags: [typography] -pin: true -math: true -mermaid: true -image: - path: /commons/devices-mockup.png - lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA - alt: Responsive rendering of Chirpy theme on multiple devices. ---- - -## Headings - - - -# H1 — heading -{: .mt-4 .mb-0 } - -## H2 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -### H3 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -#### H4 — heading -{: data-toc-skip='' .mt-4 } - - -## Paragraph - -Quisque egestas convallis ipsum, ut sollicitudin risus tincidunt a. Maecenas interdum malesuada egestas. Duis consectetur porta risus, sit amet vulputate urna facilisis ac. Phasellus semper dui non purus ultrices sodales. Aliquam ante lorem, ornare a feugiat ac, finibus nec mauris. Vivamus ut tristique nisi. Sed vel leo vulputate, efficitur risus non, posuere mi. Nullam tincidunt bibendum rutrum. Proin commodo ornare sapien. Vivamus interdum diam sed sapien blandit, sit amet aliquam risus mattis. Nullam arcu turpis, mollis quis laoreet at, placerat id nibh. Suspendisse venenatis eros eros. - -## Lists - -### Ordered list - -1. Firstly -2. Secondly -3. Thirdly - -### Unordered list - -- Chapter - - Section - - Paragraph - -### ToDo list - -- [ ] Job - - [x] Step 1 - - [x] Step 2 - - [ ] Step 3 - -### Description list - -Sun -: the star around which the earth orbits - -Moon -: the natural satellite of the earth, visible by reflected light from the sun - -## Block Quote - -> This line shows the _block quote_. - -## Prompts - - - -> An example showing the `tip` type prompt. -{: .prompt-tip } - -> An example showing the `info` type prompt. -{: .prompt-info } - -> An example showing the `warning` type prompt. -{: .prompt-warning } - -> An example showing the `danger` type prompt. -{: .prompt-danger } - - -## Tables - -| Company | Contact | Country | -| :--------------------------- | :--------------- | ------: | -| Alfreds Futterkiste | Maria Anders | Germany | -| Island Trading | Helen Bennett | UK | -| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy | - -## Links - - - -## Footnote - -Click the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2]. - -## Inline code - -This is an example of `Inline Code`. - -## Filepath - -Here is the `/path/to/the/file.extend`{: .filepath}. - -## Code blocks - -### Common - -```text -This is a common code snippet, without syntax highlight and line number. -``` - -### Specific Language - -```bash -if [ $? -ne 0 ]; then - echo "The command was not successful."; - #do the needful / exit -fi; -``` - -### Specific filename - -```sass -@import - "colors/light-typography", - "colors/dark-typography"; -``` -{: file='_sass/jekyll-theme-chirpy.scss'} - -## Mathematics - -The mathematics powered by [**MathJax**](https://www.mathjax.org/): - -$$ -\begin{equation} - \sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6} - \label{eq:series} -\end{equation} -$$ - -We can reference the equation as \eqref{eq:series}. - -When $a \ne 0$, there are two solutions to $ax^2 + bx + c = 0$ and they are - -$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$ - -## Mermaid SVG - -```mermaid - gantt - title Adding GANTT diagram functionality to mermaid - apple :a, 2017-07-20, 1w - banana :crit, b, 2017-07-23, 1d - cherry :active, c, after b a, 1d -``` - -## Images - -### Default (with caption) - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" } -_Full screen width and center alignment_ - -### Left aligned - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-75 .normal} - -### Float to left - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .left} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Float to right - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .right} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Dark/Light mode & Shadow - -The image below will toggle dark/light mode based on theme preference, notice it has shadows. - -![light mode only](/posts/20190808/devtools-light.png){: .light .w-75 .shadow .rounded-10 w='1212' h='668' } -![dark mode only](/posts/20190808/devtools-dark.png){: .dark .w-75 .shadow .rounded-10 w='1212' h='668' } - -## Video - -{% include embed/youtube.html id='Balreaj8Yqs' %} - -## Reverse Footnote - -[^footnote]: The footnote source -[^fn-nth-2]: The 2nd footnote source diff --git a/_posts/2019-08-08-write-a-new-post.md b/_posts/2019-08-08-write-a-new-post.md deleted file mode 100644 index 085e7d67bf4..00000000000 --- a/_posts/2019-08-08-write-a-new-post.md +++ /dev/null @@ -1,505 +0,0 @@ ---- -title: Writing a New Post -author: cotes -date: 2019-08-08 14:10:00 +0800 -categories: [Blogging, Tutorial] -tags: [writing] -render_with_liquid: false ---- - -This tutorial will guide you how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set. - -## Naming and Path - -Create a new file named `YYYY-MM-DD-TITLE.EXTENSION`{: .filepath} and put it in the `_posts`{: .filepath} of the root directory. Please note that the `EXTENSION`{: .filepath} must be one of `md`{: .filepath} and `markdown`{: .filepath}. If you want to save time of creating files, please consider using the plugin [`Jekyll-Compose`](https://github.com/jekyll/jekyll-compose) to accomplish this. - -## Front Matter - -Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-matter/) as below at the top of the post: - -```yaml ---- -title: TITLE -date: YYYY-MM-DD HH:MM:SS +/-TTTT -categories: [TOP_CATEGORIE, SUB_CATEGORIE] -tags: [TAG] # TAG names should always be lowercase ---- -``` - -> The posts' _layout_ has been set to `post` by default, so there is no need to add the variable _layout_ in the Front Matter block. -{: .prompt-tip } - -### Timezone of Date - -To accurately record the release date of a post, you should not only set up the `timezone` of `_config.yml`{: .filepath} but also provide the post's timezone in variable `date` of its Front Matter block. Format: `+/-TTTT`, e.g. `+0800`. - -### Categories and Tags - -The `categories` of each post are designed to contain up to two elements, and the number of elements in `tags` can be zero to infinity. For instance: - -```yaml ---- -categories: [Animal, Insect] -tags: [bee] ---- -``` - -### Author Information - -The author information of the post usually does not need to be filled in the _Front Matter_ , they will be obtained from variables `social.name` and the first entry of `social.links` of the configuration file by default. But you can also override it as follows: - -Adding author information in `_data/authors.yml` (If your website doesn't have this file, don't hesitate to create one). - -```yaml -: - name: - twitter: - url: -``` -{: file="_data/authors.yml" } - -And then use `author` to specify a single entry or `authors` to specify multiple entries: - -```yaml ---- -author: # for single entry -# or -authors: [, ] # for multiple entries ---- -``` - -Having said that, the key `author` can also identify multiple entries. - -> The benefit of reading the author information from the file `_data/authors.yml`{: .filepath } is that the page will have the meta tag `twitter:creator`, which enriches the [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started#card-and-content-attribution) and is good for SEO. -{: .prompt-info } - -### Post Description - -By default, the first words of the post are used to display on the home page for a list of posts, in the _Further Reading_ section, and in the XML of the RSS feed. If you don't want to display the auto-generated description for the post, you can customize it using the `description` field in the _Front Matter_ as follows: - -```yaml ---- -description: Short summary of the post. ---- -``` - -Additionally, the `description` text will also be displayed under the post title on the post's page. - -## Table of Contents - -By default, the **T**able **o**f **C**ontents (TOC) is displayed on the right panel of the post. If you want to turn it off globally, go to `_config.yml`{: .filepath} and set the value of variable `toc` to `false`. If you want to turn off TOC for a specific post, add the following to the post's [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```yaml ---- -toc: false ---- -``` - -## Comments - -The global setting for comments is defined by the `comments.provider` option in the `_config.yml`{: .filepath} file. Once a comment system is selected for this variable, comments will be enabled for all posts. - -If you want to close the comment for a specific post, add the following to the **Front Matter** of the post: - -```yaml ---- -comments: false ---- -``` - -## Media - -We refer to images, audio and video as media resources in _Chirpy_. - -### URL Prefix - -From time to time we have to define duplicate URL prefixes for multiple resources in a post, which is a boring task that you can avoid by setting two parameters. - -- If you are using a CDN to host media files, you can specify the `cdn` in `_config.yml`{: .filepath }. The URLs of media resources for site avatar and posts are then prefixed with the CDN domain name. - - ```yaml - cdn: https://cdn.com - ``` - {: file='_config.yml' .nolineno } - -- To specify the resource path prefix for the current post/page range, set `media_subpath` in the _front matter_ of the post: - - ```yaml - --- - media_subpath: /path/to/media/ - --- - ``` - {: .nolineno } - -The option `site.cdn` and `page.media_subpath` can be used individually or in combination to flexibly compose the final resource URL: `[site.cdn/][page.media_subpath/]file.ext` - -### Images - -#### Caption - -Add italics to the next line of an image, then it will become the caption and appear at the bottom of the image: - -```markdown -![img-description](/path/to/image) -_Image Caption_ -``` -{: .nolineno} - -#### Size - -To prevent the page content layout from shifting when the image is loaded, we should set the width and height for each image. - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: width="700" height="400" } -``` -{: .nolineno} - -> For an SVG, you have to at least specify its _width_, otherwise it won't be rendered. -{: .prompt-info } - -Starting from _Chirpy v5.0.0_, `height` and `width` support abbreviations (`height` → `h`, `width` → `w`). The following example has the same effect as the above: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: w="700" h="400" } -``` -{: .nolineno} - -#### Position - -By default, the image is centered, but you can specify the position by using one of the classes `normal`, `left`, and `right`. - -> Once the position is specified, the image caption should not be added. -{: .prompt-warning } - -- **Normal position** - - Image will be left aligned in below sample: - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .normal } - ``` - {: .nolineno} - -- **Float to the left** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .left } - ``` - {: .nolineno} - -- **Float to the right** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .right } - ``` - {: .nolineno} - -#### Dark/Light mode - -You can make images follow theme preferences in dark/light mode. This requires you to prepare two images, one for dark mode and one for light mode, and then assign them a specific class (`dark` or `light`): - -```markdown -![Light mode only](/path/to/light-mode.png){: .light } -![Dark mode only](/path/to/dark-mode.png){: .dark } -``` - -#### Shadow - -The screenshots of the program window can be considered to show the shadow effect: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: .shadow } -``` -{: .nolineno} - -#### Preview Image - -If you want to add an image at the top of the post, please provide an image with a resolution of `1200 x 630`. Please note that if the image aspect ratio does not meet `1.91 : 1`, the image will be scaled and cropped. - -Knowing these prerequisites, you can start setting the image's attribute: - -```yaml ---- -image: - path: /path/to/image - alt: image alternative text ---- -``` - -Note that the [`media_subpath`](#url-prefix) can also be passed to the preview image, that is, when it has been set, the attribute `path` only needs the image file name. - -For simple use, you can also just use `image` to define the path. - -```yml ---- -image: /path/to/image ---- -``` - -#### LQIP - -For preview images: - -```yaml ---- -image: - lqip: /path/to/lqip-file # or base64 URI ---- -``` - -> You can observe LQIP in the preview image of post \"[Text and Typography](../text-and-typography/)\". - -For normal images: - -```markdown -![Image description](/path/to/image){: lqip="/path/to/lqip-file" } -``` -{: .nolineno } - -### Video - -#### Social Media Platform - -You can embed videos from social media platforms with the following syntax: - -```liquid -{% include embed/{Platform}.html id='{ID}' %} -``` - -Where `Platform` is the lowercase of the platform name, and `ID` is the video ID. - -The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms. - -| Video URL | Platform | ID | -| -------------------------------------------------------------------------------------------------- | ---------- | :------------- | -| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` | -| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` | -| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` | - -#### Video Files - -If you want to embed a video file directly, use the following syntax: - -```liquid -{% include embed/video.html src='{URL}' %} -``` - -Where `URL` is a URL to a video file e.g. `/path/to/sample/video.mp4`. - -You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed. - -- `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading -- `title='Text'` — title for a video that appears below the video and looks same as for images -- `autoplay=true` — video automatically begins to play back as soon as it can -- `loop=true` — automatically seek back to the start upon reaching the end of the video -- `muted=true` — audio will be initially silenced -- `types` — specify the extensions of additional video formats separated by `|`. Ensure these files exist in the same directory as your primary video file. - -Consider an example using all of the above: - -```liquid -{% - include embed/video.html - src='/path/to/video.mp4' - types='ogg|mov' - poster='poster.png' - title='Demo video' - autoplay=true - loop=true - muted=true -%} -``` - -### Audios - -If you want to embed an audio file directly, use the following syntax: - -```liquid -{% include embed/audio.html src='{URL}' %} -``` - -Where `URL` is a URL to an audio file e.g. `/path/to/audio.mp3`. - -You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed. - -- `title='Text'` — title for an audio that appears below the audio and looks same as for images -- `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file. - -Consider an example using all of the above: - -```liquid -{% - include embed/audio.html - src='/path/to/audio.mp3' - types='ogg|wav|aac' - title='Demo audio' -%} -``` - -## Pinned Posts - -You can pin one or more posts to the top of the home page, and the fixed posts are sorted in reverse order according to their release date. Enable by: - -```yaml ---- -pin: true ---- -``` - -## Prompts - -There are several types of prompts: `tip`, `info`, `warning`, and `danger`. They can be generated by adding the class `prompt-{type}` to the blockquote. For example, define a prompt of type `info` as follows: - -```md -> Example line for prompt. -{: .prompt-info } -``` -{: .nolineno } - -## Syntax - -### Inline Code - -```md -`inline code part` -``` -{: .nolineno } - -### Filepath Highlight - -```md -`/path/to/a/file.extend`{: .filepath} -``` -{: .nolineno } - -### Code Block - -Markdown symbols ```` ``` ```` can easily create a code block as follows: - -````md -``` -This is a plaintext code snippet. -``` -```` - -#### Specifying Language - -Using ```` ```{language} ```` you will get a code block with syntax highlight: - -````markdown -```yaml -key: value -``` -```` - -> The Jekyll tag `{% highlight %}` is not compatible with this theme. -{: .prompt-danger } - -#### Line Number - -By default, all languages except `plaintext`, `console`, and `terminal` will display line numbers. When you want to hide the line number of a code block, add the class `nolineno` to it: - -````markdown -```shell -echo 'No more line numbers!' -``` -{: .nolineno } -```` - -#### Specifying the Filename - -You may have noticed that the code language will be displayed at the top of the code block. If you want to replace it with the file name, you can add the attribute `file` to achieve this: - -````markdown -```shell -# content -``` -{: file="path/to/file" } -```` - -#### Liquid Codes - -If you want to display the **Liquid** snippet, surround the liquid code with `{% raw %}` and `{% endraw %}`: - -````markdown -{% raw %} -```liquid -{% if product.title contains 'Pack' %} - This product's title contains the word Pack. -{% endif %} -``` -{% endraw %} -```` - -Or adding `render_with_liquid: false` (Requires Jekyll 4.0 or higher) to the post's YAML block. - -## Mathematics - -We use [**MathJax**][mathjax] to generate mathematics. For website performance reasons, the mathematical feature won't be loaded by default. But it can be enabled by: - -[mathjax]: https://www.mathjax.org/ - -```yaml ---- -math: true ---- -``` - -After enabling the mathematical feature, you can add math equations with the following syntax: - -- **Block math** should be added with `$$ math $$` with **mandatory** blank lines before and after `$$` - - **Inserting equation numbering** should be added with `$$\begin{equation} math \end{equation}$$` - - **Referencing equation numbering** should be done with `\label{eq:label_name}` in the equation block and `\eqref{eq:label_name}` inline with text (see example below) -- **Inline math** (in lines) should be added with `$$ math $$` without any blank line before or after `$$` -- **Inline math** (in lists) should be added with `\$$ math $$` - -```markdown - - -$$ -LaTeX_math_expression -$$ - - - -$$ -\begin{equation} - LaTeX_math_expression - \label{eq:label_name} -\end{equation} -$$ - -Can be referenced as \eqref{eq:label_name}. - - - -"Lorem ipsum dolor sit amet, $$ LaTeX_math_expression $$ consectetur adipiscing elit." - - - -1. \$$ LaTeX_math_expression $$ -2. \$$ LaTeX_math_expression $$ -3. \$$ LaTeX_math_expression $$ -``` - -> Starting with `v7.0.0`, configuration options for **MathJax** have been moved to file `assets/js/data/mathjax.js`{: .filepath }, and you can change the options as needed, such as adding [extensions][mathjax-exts]. -> If you are building the site via `chirpy-starter`, copy that file from the gem installation directory (check with command `bundle info --path jekyll-theme-chirpy`) to the same directory in your repository. -{: .prompt-tip } - -[mathjax-exts]: https://docs.mathjax.org/en/latest/input/tex/extensions/index.html - -## Mermaid - -[**Mermaid**](https://github.com/mermaid-js/mermaid) is a great diagram generation tool. To enable it on your post, add the following to the YAML block: - -```yaml ---- -mermaid: true ---- -``` - -Then you can use it like other markdown languages: surround the graph code with ```` ```mermaid ```` and ```` ``` ````. - -## Learn More - -For more knowledge about Jekyll posts, visit the [Jekyll Docs: Posts](https://jekyllrb.com/docs/posts/). diff --git a/_posts/2019-08-09-getting-started.md b/_posts/2019-08-09-getting-started.md deleted file mode 100644 index 2681126947c..00000000000 --- a/_posts/2019-08-09-getting-started.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Getting Started -description: >- - Get started with Chirpy basics in this comprehensive overview. - You will learn how to install, configure, and use your first Chirpy-based website, as well as deploy it to a web server. -author: cotes -date: 2019-08-09 20:55:00 +0800 -categories: [Blogging, Tutorial] -tags: [getting started] -pin: true -media_subpath: '/posts/20180809' ---- - -## Creating a Site Repository - -When creating your site repository, you have two options depending on your needs: - -### Option 1. Using the Starter (Recommended) - -This approach simplifies upgrades, isolates unnecessary files, and is perfect for users who want to focus on writing with minimal configuration. - -1. Sign in to GitHub and navigate to the [**starter**][starter]. -2. Click the Use this template button and then select Create a new repository. -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -### Option 2. Forking the Theme - -This approach is convenient for modifying features or UI design, but presents challenges during upgrades. So don't try this unless you are familiar with Jekyll and plan to heavily modify this theme. - -1. Sign in to GitHub. -2. [Fork the theme repository](https://github.com/cotes2020/jekyll-theme-chirpy/fork). -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -## Setting up the Environment - -Once your repository is created, it's time to set up your development environment. There are two primary methods: - -### Using Dev Containers (Recommended for Windows) - -Dev Containers offer an isolated environment using Docker, which prevents conflicts with your system and ensures all dependencies are managed within the container. - -**Steps**: - -1. Install Docker: - - On Windows/macOS, install [Docker Desktop][docker-desktop]. - - On Linux, install [Docker Engine][docker-engine]. -2. Install [VS Code][vscode] and the [Dev Containers extension][dev-containers]. -3. Clone your repository: - - For Docker Desktop: Start VS Code and [clone your repo in a container volume][dc-clone-in-vol]. - - For Docker Engine: Clone your repo locally, then [open it in a container][dc-open-in-container] via VS Code. -4. Wait for the Dev Containers setup to complete. - -### Setting up Natively (Recommended for Unix-like OS) - -For Unix-like systems, you can set up the environment natively for optimal performance, though you can also use Dev Containers as an alternative. - -**Steps**: - -1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed. -2. Clone your repository to your local machine. -3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository. -4. Run command `bundle` in the root of your repository to install the dependencies. - -## Usage - -### Start the Jekyll Server - -To run the site locally, use the following command: - -```terminal -$ bundle exec jekyll s -``` - -> If you are using Dev Containers, you must run that command in the **VS Code** Terminal. -{: .prompt-info } - -After a few seconds, the local server will be available at . - -### Configuration - -Update the variables in `_config.yml`{: .filepath} as needed. Some typical options include: - -- `url` -- `avatar` -- `timezone` -- `lang` - -### Social Contact Options - -Social contact options are displayed at the bottom of the sidebar. You can enable or disable specific contacts in the `_data/contact.yml`{: .filepath} file. - -### Customizing the Stylesheet - -To customize the stylesheet, copy the theme's `assets/css/jekyll-theme-chirpy.scss`{: .filepath} file to the same path in your Jekyll site, and add your custom styles at the end of the file. - -### Customizing Static Assets - -Static assets configuration was introduced in version `5.1.0`. The CDN of the static assets is defined in `_data/origin/cors.yml`{: .filepath }. You can replace some of them based on the network conditions in the region where your website is published. - -If you prefer to self-host the static assets, refer to the [_chirpy-static-assets_](https://github.com/cotes2020/chirpy-static-assets#readme) repository. - -## Deployment - -Before deploying, check the `_config.yml`{: .filepath} file and ensure the `url` is configured correctly. If you prefer a [**project site**](https://help.github.com/en/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites) and don't use a custom domain, or if you want to visit your website with a base URL on a web server other than **GitHub Pages**, remember to set the `baseurl` to your project name, starting with a slash, e.g., `/project-name`. - -Now you can choose _ONE_ of the following methods to deploy your Jekyll site. - -### Deploy Using Github Actions - -Prepare the following: - -- If you're on the GitHub Free plan, keep your site repository public. -- If you have committed `Gemfile.lock`{: .filepath} to the repository, and your local machine is not running Linux, update the platform list of the lock file: - - ```console - $ bundle lock --add-platform x86_64-linux - ``` - -Next, configure the _Pages_ service: - -1. Go to your repository on GitHub. Select the _Settings_ tab, then click _Pages_ in the left navigation bar. In the **Source** section (under _Build and deployment_), select [**GitHub Actions**][pages-workflow-src] from the dropdown menu. - ![Build source](pages-source-light.png){: .light .border .normal w='375' h='140' } - ![Build source](pages-source-dark.png){: .dark .normal w='375' h='140' } - -2. Push any commits to GitHub to trigger the _Actions_ workflow. In the _Actions_ tab of your repository, you should see the workflow _Build and Deploy_ running. Once the build is complete and successful, the site will be deployed automatically. - -You can now visit the URL provided by GitHub to access your site. - -### Manual Build and Deployment - -For self-hosted servers, you will need to build the site on your local machine and then upload the site files to the server. - -Navigate to the root of the source project, and build your site with the following command: - -```console -$ JEKYLL_ENV=production bundle exec jekyll b -``` - -Unless you specified the output path, the generated site files will be placed in the `_site`{: .filepath} folder of the project's root directory. Upload these files to your target server. - -[nodejs]: https://nodejs.org/ -[starter]: https://github.com/cotes2020/chirpy-starter -[pages-workflow-src]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow -[docker-desktop]: https://www.docker.com/products/docker-desktop/ -[docker-engine]: https://docs.docker.com/engine/install/ -[vscode]: https://code.visualstudio.com/ -[dev-containers]: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers -[dc-clone-in-vol]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume -[dc-open-in-container]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container diff --git a/_posts/2019-08-11-customize-the-favicon.md b/_posts/2019-08-11-customize-the-favicon.md deleted file mode 100644 index a3278fa90eb..00000000000 --- a/_posts/2019-08-11-customize-the-favicon.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Customize the Favicon -author: cotes -date: 2019-08-11 00:34:00 +0800 -categories: [Blogging, Tutorial] -tags: [favicon] ---- - -The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/) are placed in the directory `assets/img/favicons/`{: .filepath}. You may want to replace them with your own. The following sections will guide you to create and replace the default favicons. - -## Generate the favicon - -Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button Select your Favicon image to upload your image file. - -In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button Generate your Favicons and HTML code to generate the favicon. - -## Download & Replace - -Download the generated package, unzip and delete the following two from the extracted files: - -- `browserconfig.xml`{: .filepath} -- `site.webmanifest`{: .filepath} - -And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one. - -The following table will help you understand the changes to the favicon files: - -| File(s) | From Online Tool | From Chirpy | -|---------------------|:---------------------------------:|:-----------:| -| `*.PNG` | ✓ | ✗ | -| `*.ICO` | ✓ | ✗ | - - -> ✓ means keep, ✗ means delete. -{: .prompt-info } - -The next time you build the site, the favicon will be replaced with a customized edition. diff --git "a/_posts/2025-07-10-macOS\354\227\220\354\204\234 \355\225\231\354\233\220\354\225\204\354\235\264\353\217\214\353\247\210\354\212\244\355\204\260\353\245\274 \355\224\214\353\240\210\354\235\264\355\225\230\353\212\224 \353\260\251\353\262\225.md" "b/_posts/2025-07-10-macOS\354\227\220\354\204\234 \355\225\231\354\233\220\354\225\204\354\235\264\353\217\214\353\247\210\354\212\244\355\204\260\353\245\274 \355\224\214\353\240\210\354\235\264\355\225\230\353\212\224 \353\260\251\353\262\225.md" new file mode 100644 index 00000000000..41e54bc5ce8 --- /dev/null +++ "b/_posts/2025-07-10-macOS\354\227\220\354\204\234 \355\225\231\354\233\220\354\225\204\354\235\264\353\217\214\353\247\210\354\212\244\355\204\260\353\245\274 \355\224\214\353\240\210\354\235\264\355\225\230\353\212\224 \353\260\251\353\262\225.md" @@ -0,0 +1,93 @@ +--- +title: macOS에서 학원아이돌마스터를 플레이하는 방법 +date: 2025-07-10 00:22 +0900 +categories: [macOS, game] +tag: [학원아이돌마스터, 학원마스, 학마, 学園アイドルマスター, 学マス] +use_math: false +--- + +## 개요 + +Apple Silicon Mac에 학원아이돌마스터(학원마스, 학마)를 구동시켜 보자. \ +아이폰용 앱을 Mac에서 구동하기 위해 Sideloadly를 사용한다. + +## 1. Sideloadly 다운로드 + +[sideloadly.io](https://sideloadly.io) 에서 Mac 버전 Sideloadly를 다운받아 설치한다. + +## 2. 학원아이돌마스터 ipa 파일 준비 + +[decrypt.day](https://decrypt.day/app/id6446659989) 에서 최신 버전의 학원아이돌마스터 ipa 파일을 다운로드한다. + +이 파일을 그대로 설치하여 플레이할 경우, portrait <-> landscape 전환이 되지 않아 화면이 제대로 나오지 않는다. + +따라서 ipa 파일을 수정하여 화면 전환이 가능하도록 만들어 줘야 한다. + +다운로드 받은 ipa 파일의 확장자를 zip으로 바꾼 후 압축을 풀어 주자. + +압축 해제된 Payload 폴더 안의 idolmaster_gakuen 파일을 우클릭하여 Show Package Contents (패키지 내용 보기) 로 앱 내부로 진입한다. + +![우클릭으로 앱 내부로 진입하는 모습](/assets/img/posts/20250710/payload_rightclick.png) +_앱 내부로 진입하는 모습_ + +내부의 `Info.plist` 파일에서 다음과 같은 부분을 찾아, + +``` + + UIInterfaceOrientationPortrait + +``` +{: file="Info.plist" } + +다음과 같이 두 줄을 추가한다. + +``` + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft + +``` +{: file="Info.plist" } + +그 다음 다시 Payload 폴더를 zip 파일로 압축한 후, 확장자를 ipa로 변경한다. + +## 3. 학원아이돌마스터 설치 + +Sideloadly를 처음 실행하면 다음과 같이 에러 메시지가 뜬다. + +![Sideloadly 에러](/assets/img/posts/20250710/sideloadly_not_opened.png) +_보안 상의 문제로 실행이 안 되는 모습_ + +이는 확인되지 않은 앱, 즉 앱스토어에서 내려받지 않은 앱이기 때문에 바로 실행을 안 시켜 주는 것인데, +System Settings > Privacy & Security > Security 에서 Open Anyway를 선택하여 실행할 수 있다. + +![확인되지 않은 앱 실행하기](/assets/img/posts/20250710/open_anyway.png) +_확인되지 않은 앱 실행하기_ + +올바르게 실행되었다면, 다음과 같은 창이 열릴 것이다. 아래의 순서대로 진행한다. + +![Sideloadly 설정](/assets/img/posts/20250710/sideloadly_setting.png) +_Sideloadly 설정_ + +1. 방금 생성한 ipa 파일을 불러온다. +2. iDevice가 Apple Silicon으로 되어 있는지 확인한다. +3. 사용하고 있는 Apple ID를 입력한다. +4. Advanced Options에서 Anisette Authentication을 Remote로 설정한다. +5. Start를 눌러 설치를 진행한다. +6. Apple ID의 비밀번호를 묻는 창이 나오면 입력하여 진행한다. + +## 4. 학원아이돌마스터 실행 확인 + +위 과정이 완료되면, 여타 앱들과 같이 설치가 된다. 실행할 때 Sideloadly 때와 마찬가지로 보안 경고가 뜨면, 같은 방법으로 시스템 설정에서 조작해주자. 첫 실행 때 한번만 해 두면 그 다음부터는 같은 경고가 출력되지 않는다. + +## 5. portrait <-> landscape 전환에 대하여 + +학원아이돌마스터를 플레이하다보면 화면 방향이 바뀌는 경우가 잦다. 이 경우 화면이 아예 출력되지 않는데, 조금 불편하긴 하지만 방향이 바뀔때마다 방향에 맞춰 메뉴막대의 View > Landscape Orientation 또는 View > Portrait Orientation 을 선택하여 수동으로 조작해야 한다. + +![화면 뱡향 전환](/assets/img/posts/20250710/rotation.png) +_화면 방향 전환_ + +## 해결하지 못한 점 + +앱을 실행할 때마다 트래킹을 허용해달라는 창이 뜬다. 원래라면 이 화면에서 아이폰의 팝업이 떠야하는데, Mac에서는 팝업이 뜰리가 만무하니 트래킹 허용도, 거부도 선택할 수가 없다. 그래서 앱을 실행할 때마다 창을 한번씩 닫아줘야 하는 귀찮음이 있지만, 그 외에는 큰 불편 없이 잘 플레이하고 있는 중이다. \ No newline at end of file diff --git a/_posts/2025-07-10-tsuki-typing.md b/_posts/2025-07-10-tsuki-typing.md new file mode 100644 index 00000000000..3f1eabab521 --- /dev/null +++ b/_posts/2025-07-10-tsuki-typing.md @@ -0,0 +1,15 @@ +--- +title: "月配列 2-263 タイピング練習" +date: 2025-07-11 10:30 +0900 +categories: [Projects] +tags: [Japanese, Projects] +use_math: false +--- + +月配列 2-263 타자 연습을 만들어 보았다. \ +月配列 2-263 タイピング練習を作ってみた。 + +전체화면은 [여기](/tsuki-typing/index.html)에서. \ +全画面は[こちら](/tsuki-typing/index.html)。 + + diff --git "a/_posts/2025-07-10-\344\272\214\345\215\201\346\255\263\353\212\224 \354\231\234 \343\201\257\343\201\237\343\201\241\353\235\274\352\263\240 \354\235\275\354\235\204\352\271\214.md" "b/_posts/2025-07-10-\344\272\214\345\215\201\346\255\263\353\212\224 \354\231\234 \343\201\257\343\201\237\343\201\241\353\235\274\352\263\240 \354\235\275\354\235\204\352\271\214.md" new file mode 100644 index 00000000000..1c44ae65341 --- /dev/null +++ "b/_posts/2025-07-10-\344\272\214\345\215\201\346\255\263\353\212\224 \354\231\234 \343\201\257\343\201\237\343\201\241\353\235\274\352\263\240 \354\235\275\354\235\204\352\271\214.md" @@ -0,0 +1,212 @@ +--- +title: 「二十歳」는 왜 「はたち」라고 읽을까 +date: 2025-07-10 00:22 +0900 +categories: [언어학, 일본어] +tag: [일본어, 독자연구] +use_math: false +--- + +일본어는 한국어와 마찬가지로 두 가지 수체계가 있다. 중국어에서 유래한 いち、に、さん...과, 고유어인 ひとつ、ふたつ、みっつ...가 그것이다. \ +이를 표로 나타내면 다음과 같다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
한어(漢語)고유어(和語)
고어현대어
1いちひとつひとつ
2ふたつふたつ
3さんみつみっつ
4よつよっつ
5いつついつつ
6ろくむつむっつ
7しちななつななつ
8はちやつやっつ
9きゅうここのつここのつ
10じゅうとをとお
20にじゅうはたちはたち
30さんじゅうみそぢみそじ
40しじゅうよそぢよそじ
50ごじゅういそぢいそじ
60ろくじゅうむそぢむそじ
70しちじゅうななそぢななそじ
80はちじゅうやそぢやそじ
90きゅうじゅうここのそぢここのそじ
100ひゃくもももも
+ +
+ +はたち는 글의 제목대로, 나이를 나타낼 때에도 쓰기 때문에 일본어를 접한 경험이 있는 사람에게는 친숙하다면 친숙한 단어이다. + +그런데 30 이후는 그다지 잘 볼 수 없는 표현이다. + +인명( + + 山本 + ( + やまもと + ) + + + 五十六 + ( + いそろく + ) + +) +이나 지명( + + 三十木 + ( + みそぎ + ) + +) +등에서나 찾아 볼 수 있을 뿐이다. 이런 수의 이름들은 어떻게 생겨난 것일까? + +일견 유래라고는 찾아볼 수 없는 것 같이 생긴 수 이름들이지만, 30 이후 이름들에는 공통점이 있다. ち(ぢ)로 끝난다는 점이 그것이다. 이 「ち」는 ひとつ, ふたつ의 「つ」와 같이 "개(個)" 의 의미를 갖는 조수사(助数詞)로 여겨지고 있다. 오키나와어의 수사가 ティーチ、ターチ、ミーチ、ユーチ、イチチムーチ、ナナチ、ヤーチ、ククヌチ、トゥー와 같이 「ち」로 끝나는 것도 이와 관련이 있을 것으로 보인다. + +접미사는 해결했으니, 이제 중앙의 「そ」를 보자. 30 이후 수사의 형태를 보면, 어간 + そ + ぢ 의 형태인 것을 알 수 있다. 30을 뜻하는 みそぢ의 경우, み(3)+ そ + ぢ(개)의 형태를 띠므로, 「そ」는 10의 의미를 가진다고 추측하는 것이 자연스럽다. 즉, 「そ」는 「とを」가 변화한 형태라고 봐야 하는 것이다. + +일본어에서 た행이 さ행으로 변화한 경우는 그렇게 많지 않은데, 다음과 같은 예가 있다. + +- 消つ → 消す +- 放つ → 放す +- ふたぐ → ふさぐ(塞ぐ) + +비슷한 마찰음화 현상은 영어에서도 볼 수 있다. +- nation [neɪʃən] + +한국어에서, 다음과 같은 "틀린" 발음을 하는 화자가 늘어나고 있는 것도 어느정도 관련이 있을 것으로 보인다. + +- 밭이 [바시] +- 꽃을 [꼬슬] + +본론으로 돌아와서, 수사의 원 형태에서 현 형태까지의 변화를 추측해 보자. + +- 20 : ふたとをち → ふたとち → ふたち → はたち +- 30 : みとをち → みとち → みそち → みそぢ → みそじ +- (이후 생략) + +20의 경우 ふ가 왜 は로 바뀌었는지 자세한 이유를 찾을 수는 없었다. \ +필자는 뒤의 た에 이끌려 변화했던지, ふたつ와의 구별을 위해 변화했다고 생각한다. + +결론. \ +はたち는 "2 + 10 + 개"의 뜻이나 본 형태에서 많이 멀어져 예외처럼 보이는 訓読み이다. \ No newline at end of file diff --git a/_sass/vendors/_bootstrap.scss b/_sass/vendors/_bootstrap.scss new file mode 100644 index 00000000000..3d54fe43bbe --- /dev/null +++ b/_sass/vendors/_bootstrap.scss @@ -0,0 +1,5 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.opacity-75{opacity:.75!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}} \ No newline at end of file diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png index 648097f4fc7..59de07a79cf 100644 Binary files a/assets/img/favicons/apple-touch-icon.png and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png index f44237a9a42..47bb6043eb2 100644 Binary files a/assets/img/favicons/favicon-16x16.png and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png index d5d021d85c8..0fc883daf8f 100644 Binary files a/assets/img/favicons/favicon-32x32.png and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon-96x96.png b/assets/img/favicons/favicon-96x96.png new file mode 100644 index 00000000000..87f418a1b93 Binary files /dev/null and b/assets/img/favicons/favicon-96x96.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico index 561156802e6..a35382dd059 100644 Binary files a/assets/img/favicons/favicon.ico and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/favicon.svg b/assets/img/favicons/favicon.svg new file mode 100644 index 00000000000..f86e08f4b5f --- /dev/null +++ b/assets/img/favicons/favicon.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/assets/img/favicons/web-app-manifest-192x192.png b/assets/img/favicons/web-app-manifest-192x192.png new file mode 100644 index 00000000000..5626f4a4c5b Binary files /dev/null and b/assets/img/favicons/web-app-manifest-192x192.png differ diff --git a/assets/img/favicons/web-app-manifest-512x512.png b/assets/img/favicons/web-app-manifest-512x512.png new file mode 100644 index 00000000000..eff35dd9e5e Binary files /dev/null and b/assets/img/favicons/web-app-manifest-512x512.png differ diff --git a/assets/img/posts/20250710/open_anyway.png b/assets/img/posts/20250710/open_anyway.png new file mode 100644 index 00000000000..0317864c630 Binary files /dev/null and b/assets/img/posts/20250710/open_anyway.png differ diff --git a/assets/img/posts/20250710/payload_rightclick.png b/assets/img/posts/20250710/payload_rightclick.png new file mode 100644 index 00000000000..100ccf6940f Binary files /dev/null and b/assets/img/posts/20250710/payload_rightclick.png differ diff --git a/assets/img/posts/20250710/rotation.png b/assets/img/posts/20250710/rotation.png new file mode 100644 index 00000000000..331239b171e Binary files /dev/null and b/assets/img/posts/20250710/rotation.png differ diff --git a/assets/img/posts/20250710/sideloadly_not_opened.png b/assets/img/posts/20250710/sideloadly_not_opened.png new file mode 100644 index 00000000000..724fe09b62f Binary files /dev/null and b/assets/img/posts/20250710/sideloadly_not_opened.png differ diff --git a/assets/img/posts/20250710/sideloadly_setting.png b/assets/img/posts/20250710/sideloadly_setting.png new file mode 100644 index 00000000000..1739c36d1b8 Binary files /dev/null and b/assets/img/posts/20250710/sideloadly_setting.png differ diff --git a/assets/js/dist/app.min.js b/assets/js/dist/app.min.js new file mode 100644 index 00000000000..f43ec11faea --- /dev/null +++ b/assets/js/dist/app.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,r){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,r):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const r=e.get(t);r.delete(n),0===r.size&&e.delete(t)}};const n="transitionend",r=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>"#".concat(CSS.escape(t))))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),i=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(r(e)):null,s=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,a=[],l=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},u=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void l(e);const r=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),o=Number.parseFloat(n);return r||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const i=r=>{let{target:s}=r;s===t&&(o=!0,t.removeEventListener(n,i),l(e))};t.addEventListener(n,i),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),r)},f=/[^.]*(?=\..*)\.|.*/,d=/\..*/,h=/::\d+$/,g={};let m=1;const p={mouseenter:"mouseover",mouseleave:"mouseout"},b=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function v(e,t){return t&&"".concat(t,"::").concat(m++)||e.uidEvent||m++}function y(e){const t=v(e);return e.uidEvent=t,g[t]=g[t]||{},g[t]}function _(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function E(e,t,n){const r="string"==typeof t,o=r?n:t||n;let i=j(e);return b.has(i)||(i=e),[r,o,i]}function w(e,t,n,r,o){if("string"!=typeof t||!e)return;let[i,s,c]=E(t,n,r);if(t in p){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const a=y(e),l=a[c]||(a[c]={}),u=_(l,s,i?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=v(s,t.replace(f,"")),h=i?function(e,t,n){return function r(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const c of i)if(c===s)return C(o,{delegateTarget:s}),r.oneOff&&A.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(r){return C(r,{delegateTarget:e}),n.oneOff&&A.off(e,r.type,t),t.apply(e,[r])}}(e,s);h.delegationSelector=i?n:null,h.callable=s,h.oneOff=o,h.uidEvent=d,l[d]=h,e.addEventListener(c,h,i)}function O(e,t,n,r,o){const i=_(t[n],r,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function S(e,t,n,r){const o=t[n]||{};for(const[i,s]of Object.entries(o))i.includes(r)&&O(e,t,n,s.callable,s.delegationSelector)}function j(e){return e=e.replace(d,""),p[e]||e}const A={on(e,t,n,r){w(e,t,n,r,!1)},one(e,t,n,r){w(e,t,n,r,!0)},off(e,t,n,r){if("string"!=typeof t||!e)return;const[o,i,s]=E(t,n,r),c=s!==t,a=y(e),l=a[s]||{},u=t.startsWith(".");if(void 0===i){if(u)for(const n of Object.keys(a))S(e,a,n,t.slice(1));for(const[n,r]of Object.entries(l)){const o=n.replace(h,"");c&&!t.includes(o)||O(e,a,s,r.callable,r.delegationSelector)}}else{if(!Object.keys(l).length)return;O(e,a,s,i,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const r=c();let o=null,i=!0,s=!0,a=!1;t!==j(t)&&r&&(o=r.Event(t,n),r(e).trigger(o),i=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=C(new Event(t,{bubbles:i,cancelable:!0}),n);return a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function C(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,r]of Object.entries(t))try{e[n]=r}catch(t){Object.defineProperty(e,n,{configurable:!0,get:()=>r})}return e}function T(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function D(e){for(var t=1;t"-".concat(e.toLowerCase())))}const k={setDataAttribute(e,t,n){e.setAttribute("data-bs-".concat(I(t)),n)},removeDataAttribute(e,t){e.removeAttribute("data-bs-".concat(I(t)))},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const r of n){let n=r.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=L(e.dataset[r])}return t},getDataAttribute:(e,t)=>L(e.getAttribute("data-bs-".concat(I(t))))};class P{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?k.getDataAttribute(t,"config"):{};return D(D(D(D({},this.constructor.Default),"object"==typeof n?n:{}),o(t)?k.getDataAttributes(t):{}),"object"==typeof e?e:{})}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[r,i]of Object.entries(t)){const t=e[r],s=o(t)?"element":null==(n=t)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(i).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(r,'" provided type "').concat(s,'" but expected type "').concat(i,'".'))}var n}}class M extends P{constructor(e,n){super(),(e=i(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),A.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){u(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(i(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(e){return"".concat(e).concat(this.EVENT_KEY)}}const K=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>r(e))).join(","):null},q={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let r=e.parentNode.closest(t);for(;r;)n.push(r),r=r.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>"".concat(e,':not([tabindex^="-"])'))).join(",");return this.find(t,e).filter((e=>!s(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=K(e);return t&&q.findOne(t)?t:null},getElementFromSelector(e){const t=K(e);return t?q.findOne(t):null},getMultipleElementsFromSelector(e){const t=K(e);return t?q.find(t):[]}},x=".".concat("bs.toast"),W="mouseover".concat(x),Y="mouseout".concat(x),F="focusin".concat(x),R="focusout".concat(x),V="hide".concat(x),Q="hidden".concat(x),z="show".concat(x),B="shown".concat(x),H="hide",U="show",G="showing",J={animation:"boolean",autohide:"boolean",delay:"number"},Z={animation:!0,autohide:!0,delay:5e3};class $ extends M{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Z}static get DefaultType(){return J}static get NAME(){return"toast"}show(){if(A.trigger(this._element,z).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(H),this._element.offsetHeight,this._element.classList.add(U,G),this._queueCallback((()=>{this._element.classList.remove(G),A.trigger(this._element,B),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(A.trigger(this._element,V).defaultPrevented)return;this._element.classList.add(G),this._queueCallback((()=>{this._element.classList.add(H),this._element.classList.remove(G,U),A.trigger(this._element,Q)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(U),super.dispose()}isShown(){return this._element.classList.contains(U)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){A.on(this._element,W,(e=>this._onInteraction(e,!0))),A.on(this._element,Y,(e=>this._onInteraction(e,!1))),A.on(this._element,F,(e=>this._onInteraction(e,!0))),A.on(this._element,R,(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=$.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}var X,ee;if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide";const n="click.dismiss".concat(e.EVENT_KEY),r=e.NAME;A.on(document,n,'[data-bs-dismiss="'.concat(r,'"]'),(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),s(this))return;const o=q.getElementFromSelector(this)||this.closest(".".concat(r));e.getOrCreateInstance(o)[t]()}))}($),X=$,ee=()=>{const e=c();if(e){const t=X.NAME,n=e.fn[t];e.fn[t]=X.jQueryInterface,e.fn[t].Constructor=X,e.fn[t].noConflict=()=>(e.fn[t]=n,X.jQueryInterface)}},"loading"===document.readyState?(a.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of a)e()})),a.push(ee)):ee(),"serviceWorker"in navigator){const e=new URL(document.currentScript.src),t=e.searchParams.get("register"),n=e.searchParams.get("baseurl");if(t){const e="".concat(n,"/sw.min.js"),t=document.getElementById("notification"),r=t.querySelector(".toast-body>button"),o=$.getOrCreateInstance(t);navigator.serviceWorker.register(e).then((e=>{e.waiting&&o.show(),e.addEventListener("updatefound",(()=>{e.installing.addEventListener("statechange",(()=>{e.waiting&&navigator.serviceWorker.controller&&o.show()}))})),r.addEventListener("click",(()=>{e.waiting&&e.waiting.postMessage("SKIP_WAITING"),o.hide()}))}));let i=!1;navigator.serviceWorker.addEventListener("controllerchange",(()=>{i||(window.location.reload(),i=!0)}))}else navigator.serviceWorker.getRegistrations().then((function(e){for(let t of e)t.unregister()}))}}(); diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js new file mode 100644 index 00000000000..022772796ed --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,g=/\..*/,m=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(b++)||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=T(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function T(t){return t=t.replace(g,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(m,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==T(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function D(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase())))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=M(t.dataset[i])}return e},getDataAttribute:(t,e)=>M(t.getAttribute("data-bs-".concat(B(e))))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?I.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends F{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=z(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?W.find(e):[]}},q=".".concat("bs.collapse"),R="show".concat(q),V="shown".concat(q),Y="hide".concat(q),U="hidden".concat(q),K="click".concat(q).concat(".data-api"),Q="show",X="collapse",$="collapsing",G=":scope .".concat(X," .").concat(X),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(J);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,R).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,Q),this._element.style[e]="",S.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,Q);for(const t of this._triggerArray){const e=W.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X),S.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(G,this._config.parent);return W.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}S.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et);const nt=document.getElementsByClassName("collapse");var it="top",ot="bottom",rt="right",st="left",at="auto",ct=[it,ot,rt,st],lt="start",ut="end",ft="clippingParents",dt="viewport",pt="popper",ht="reference",gt=ct.reduce((function(t,e){return t.concat([e+"-"+lt,e+"-"+ut])}),[]),mt=[].concat(ct,[at]).reduce((function(t,e){return t.concat([e,e+"-"+lt,e+"-"+ut])}),[]),vt="beforeRead",bt="read",yt="afterRead",_t="beforeMain",wt="main",Et="afterMain",Ot="beforeWrite",xt="write",At="afterWrite",Ct=[vt,bt,yt,_t,wt,Et,Ot,xt,At];function Lt(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function St(t){return t instanceof Tt(t).Element||t instanceof Element}function jt(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function kt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var Pt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Lt(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});jt(i)&&Lt(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Dt(t){return t.split("-")[0]}var Nt=Math.max,Mt=Math.min,Bt=Math.round;function It(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ft(){return!/^((?!chrome|android).)*safari/i.test(It())}function Ht(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Bt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Bt(i.height)/t.offsetHeight||1);var s=(St(t)?Tt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function zt(t){var e=Ht(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Wt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&kt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function qt(t){return Tt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Lt(t))>=0}function Vt(t){return((St(t)?t.ownerDocument:t.document)||window.document).documentElement}function Yt(t){return"html"===Lt(t)?t:t.assignedSlot||t.parentNode||(kt(t)?t.host:null)||Vt(t)}function Ut(t){return jt(t)&&"fixed"!==qt(t).position?t.offsetParent:null}function Kt(t){for(var e=Tt(t),n=Ut(t);n&&Rt(n)&&"static"===qt(n).position;)n=Ut(n);return n&&("html"===Lt(n)||"body"===Lt(n)&&"static"===qt(n).position)?e:n||function(t){var e=/firefox/i.test(It());if(/Trident/i.test(It())&&jt(t)&&"fixed"===qt(t).position)return null;var n=Yt(t);for(kt(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Lt(n))<0;){var i=qt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Xt(t,e,n){return Nt(t,Mt(e,n))}function $t(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Gt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Jt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Dt(n.placement),c=Qt(a),l=[st,rt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return $t("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Gt(t,ct))}(o.padding,n),f=zt(r),d="y"===c?it:st,p="y"===c?ot:rt,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],g=s[c]-n.rects.reference[c],m=Kt(r),v=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=u[d],_=v-f[l]-u[p],w=v/2-f[l]/2+b,E=Xt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Wt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zt(t){return t.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ee(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=st,_=it,w=window;if(l){var E=Kt(n),O="clientHeight",x="clientWidth";if(E===Tt(n)&&"static"!==qt(E=Vt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===it||(o===st||o===rt)&&r===ut)_=ot,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=c?1:-1;if(o===st||(o===it||o===ot)&&r===ut)y=rt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&te),L=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Bt(n*o)/o||0,y:Bt(i*o)/o||0}}({x:p,y:g},Tt(n)):{x:p,y:g};return p=L.x,g=L.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?g+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Dt(e.placement),variation:Zt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ee(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ee(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ie={passive:!0};var oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ie)})),a&&c.addEventListener("resize",n.update,ie),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ie)})),a&&c.removeEventListener("resize",n.update,ie)}},data:{}},re={left:"right",right:"left",bottom:"top",top:"bottom"};function se(t){return t.replace(/left|right|bottom|top/g,(function(t){return re[t]}))}var ae={start:"end",end:"start"};function ce(t){return t.replace(/start|end/g,(function(t){return ae[t]}))}function le(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ue(t){return Ht(Vt(t)).left+le(t).scrollLeft}function fe(t){var e=qt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function de(t){return["html","body","#document"].indexOf(Lt(t))>=0?t.ownerDocument.body:jt(t)&&fe(t)?t:de(Yt(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],fe(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(pe(Yt(s)))}function he(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ge(t,e,n){return e===dt?he(function(t,e){var n=Tt(t),i=Vt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+ue(t),y:c}}(t,n)):St(e)?function(t,e){var n=Ht(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):he(function(t){var e,n=Vt(t),i=le(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Nt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Nt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+ue(t),c=-i.scrollTop;return"rtl"===qt(o||n).direction&&(a+=Nt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Vt(t)))}function me(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(Yt(t)),n=["absolute","fixed"].indexOf(qt(t).position)>=0&&jt(t)?Kt(t):t;return St(n)?e.filter((function(t){return St(t)&&Wt(t,n)&&"body"!==Lt(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ge(t,n,i);return e.top=Nt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Nt(o.left,e.left),e}),ge(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ve(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Dt(o):null,s=o?Zt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case it:e={x:a,y:n.y-i.height};break;case ot:e={x:a,y:n.y+n.height};break;case rt:e={x:n.x+n.width,y:c};break;case st:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Qt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case lt:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ut:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ft:a,l=n.rootBoundary,u=void 0===l?dt:l,f=n.elementContext,d=void 0===f?pt:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=$t("number"!=typeof m?m:Gt(m,ct)),b=d===pt?ht:pt,y=t.rects.popper,_=t.elements[h?b:d],w=me(St(_)?_:_.contextElement||Vt(t.elements.popper),c,u,s),E=Ht(t.elements.reference),O=ve({reference:E,element:y,strategy:"absolute",placement:o}),x=he(Object.assign({},y,O)),A=d===pt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=t.modifiersData.offset;if(d===pt&&L){var T=L[o];Object.keys(C).forEach((function(t){var e=[rt,ot].indexOf(t)>=0?1:-1,n=[it,ot].indexOf(t)>=0?"y":"x";C[t]+=T[n]*e}))}return C}function ye(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?mt:c,u=Zt(i),f=u?a?gt:gt.filter((function(t){return Zt(t)===u})):ct,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Dt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var _e={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=e.options.placement,v=Dt(m),b=c||(v===m||!h?[se(m)]:function(t){if(Dt(t)===at)return[];var e=se(t);return[ce(t),e,ce(e)]}(m)),y=[m].concat(b).reduce((function(t,n){return t.concat(Dt(n)===at?ye(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:g}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),P=S?T?rt:st:T?ot:it;_[j]>w[j]&&(P=se(P));var D=se(P),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[P]<=0,k[D]<=0),N.every((function(t){return t}))){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function we(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ee(t){return[it,rt,ot,st].some((function(e){return t[e]>=0}))}var Oe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=we(s,i),l=we(a,o,r),u=Ee(c),f=Ee(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var xe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=mt.reduce((function(t,n){return t[n]=function(t,e,n){var i=Dt(t),o=[st,it].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[st,rt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ve({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var Ce={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),v=Dt(e.placement),b=Zt(e.placement),y=!b,_=Qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?it:st,k="y"===_?ot:rt,P="y"===_?"height":"width",D=E[_],N=D+m[j],M=D-m[k],B=p?-x[P]/2:0,I=b===lt?O[P]:x[P],F=b===lt?-x[P]:-O[P],H=e.elements.arrow,z=p&&H?zt(H):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=W[j],R=W[k],V=Xt(0,O[P],z[P]),Y=y?O[P]/2-B-V-q-C.mainAxis:I-V-q-C.mainAxis,U=y?-O[P]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=e.elements.arrow&&Kt(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(S=null==L?void 0:L[_])?S:0,$=D+U-X,G=Xt(p?Mt(N,D+Y-X-Q):N,D,p?Nt(M,$):M);E[_]=G,T[_]=G-D}if(a){var J,Z="x"===_?it:st,tt="x"===_?ot:rt,et=E[w],nt="y"===w?"height":"width",at=et+m[Z],ct=et-m[tt],ut=-1!==[it,st].indexOf(v),ft=null!=(J=null==L?void 0:L[w])?J:0,dt=ut?at:et-O[nt]-x[nt]-ft+C.altAxis,pt=ut?et+O[nt]+x[nt]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Xt(t,e,n);return i>n?n:i}(dt,et,pt):Xt(p?dt:at,et,p?pt:ct);E[w]=ht,T[w]=ht-et}e.modifiersData[i]=T}},requiresIfExists:["offset"]};function Le(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Bt(e.width)/t.offsetWidth||1,i=Bt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Vt(e),c=Ht(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Lt(e)||fe(a))&&(l=(i=e)!==Tt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:le(i)),jt(e)?((u=Ht(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=ue(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Se={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Ie.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const ze={allowList:Be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},We={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},qe={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ze}static get DefaultType(){return We}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},qe)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)He(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ve=new Set(["sanitize","allowList","sanitizeFn"]),Ye="fade",Ue="show",Ke=".tooltip-inner",Qe=".".concat("modal"),Xe="hide.bs.modal",$e="hover",Ge="focus",Je={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ze={allowList:Be,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},tn={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class en extends H{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ze}static get DefaultType(){return tn}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Qe),Xe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ue),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ge]=!1,this._activeTrigger[$e]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ye,Ue),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ye),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ke]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ye)}_isShown(){return this.tip&&this.tip.classList.contains(Ue)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Je[e.toUpperCase()];return Ne(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===$e?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===$e?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ge:$e]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ge:$e]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Qe),Xe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=I.getDataAttributes(this._element);for(const t of Object.keys(e))Ve.has(t)&&delete e[t];return t=N(N({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=en.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}var nn;f(en);const on=document.getElementById("toc-bar"),rn=document.getElementById("toc-solo-trigger"),sn=document.getElementsByClassName("toc-trigger"),an=document.getElementById("toc-popup"),cn=document.getElementById("toc-popup-close"),ln="overflow-hidden",un="closing";class fn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{on.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(k(fn,this,pn)._,"px 0px 0px 0px")}).observe(rn),dn._=k(fn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){k(fn,this,dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return an.open}static showPopup(){this.lockScroll(!0),an.showModal();an.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){an.toggleAttribute(un),an.addEventListener("animationend",(()=>{an.toggleAttribute(un),an.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(ln,t),document.body.classList.toggle(ln,t)}static clickBackdrop(t){if(an.hasAttribute(un))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...sn].forEach((t=>{t.onclick=()=>this.showPopup()})),an.onclick=t=>this.clickBackdrop(t),cn.onclick=()=>this.hidePopup(),an.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var dn={_:!0},pn={_:48};P(fn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(nn=fn,nn,pn)._});P(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const hn=document.getElementById("mode-toggle");const gn=document.getElementById("sidebar"),mn=document.getElementById("sidebar-trigger"),vn=document.getElementById("mask");class bn{static toggle(){yn._=k(bn,this,!k(bn,this,yn)._),document.body.toggleAttribute("sidebar-display",k(bn,this,yn)._),gn.classList.toggle("z-2",k(bn,this,yn)._),vn.classList.toggle("d-none",!k(bn,this,yn)._)}}var yn={_:!1};const _n=document.getElementById("sidebar-trigger"),wn=document.getElementById("search-trigger"),En=document.getElementById("search-cancel"),On=document.querySelectorAll("#main-wrapper>.container>.row"),xn=document.getElementById("topbar-title"),An=document.getElementById("search"),Cn=document.getElementById("search-result-wrapper"),Ln=document.getElementById("search-results"),Tn=document.getElementById("search-input"),Sn=document.getElementById("search-hints"),jn="d-block",kn="d-none",Pn="input-focus",Dn="d-flex";class Nn{static on(){_n.classList.add(kn),xn.classList.add(kn),wn.classList.add(kn),An.classList.add(Dn),En.classList.add(jn)}static off(){En.classList.remove(jn),An.classList.remove(Dn),_n.classList.remove(kn),xn.classList.remove(kn),wn.classList.remove(kn)}}class Mn{static on(){this.resultVisible||(Cn.classList.remove(kn),On.forEach((t=>{t.classList.add(kn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Ln.innerHTML="",Sn.classList.contains(kn)&&Sn.classList.remove(kn),Cn.classList.add(kn),On.forEach((t=>{t.classList.remove(kn)})),Tn.textContent="",this.resultVisible=!1)}}function Bn(){return En.classList.contains(jn)}P(Mn,"resultVisible",!1),hn&&hn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new en(t))),mn.onclick=vn.onclick=()=>bn.toggle(),wn.addEventListener("click",(()=>{Nn.on(),Mn.on(),Tn.focus()})),En.addEventListener("click",(()=>{Nn.off(),Mn.off()})),Tn.addEventListener("focus",(()=>{An.classList.add(Pn)})),Tn.addEventListener("focusout",(()=>{An.classList.remove(Pn)})),Tn.addEventListener("input",(()=>{""===Tn.value?Bn()?Sn.classList.remove(kn):Mn.off():(Mn.on(),Bn()&&Sn.classList.add(kn))})),[...nt].forEach((t=>{const e="h_"+t.id.substring(2),n=document.getElementById(e);t.addEventListener("hide.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder-open").className="far fa-folder fa-fw",n.querySelector(".fas.fa-angle-down").classList.add("rotate"),n.classList.remove("hide-border-bottom"))})),t.addEventListener("show.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder").className="far fa-folder-open fa-fw",n.querySelector(".fas.fa-angle-down").classList.remove("rotate"),n.classList.add("hide-border-bottom"))}))}))}(); diff --git a/assets/js/dist/commons.min.js b/assets/js/dist/commons.min.js new file mode 100644 index 00000000000..381e2090064 --- /dev/null +++ b/assets/js/dist/commons.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,g=/\..*/,m=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(b++)||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=T(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return S(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return S(i,{delegateTarget:t}),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function L(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function T(t){return t=t.replace(g,""),y[t]||t}const j={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))L(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(m,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==T(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=S(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function S(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function P(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function D(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function M(t){for(var e=1;e"-".concat(t.toLowerCase())))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=N(t.dataset[i])}return e},getDataAttribute:(t,e)=>N(t.getAttribute("data-bs-".concat(B(e))))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?I.getDataAttribute(e,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends F{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=z(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?W.find(e):[]}},R=".".concat("bs.collapse"),q="show".concat(R),V="shown".concat(R),Y="hide".concat(R),U="hidden".concat(R),K="click".concat(R).concat(".data-api"),Q="show",X="collapse",$="collapsing",G=":scope .".concat(X," .").concat(X),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(J);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,q).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,Q),this._element.style[e]="",j.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,Q);for(const t of this._triggerArray){const e=W.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X),j.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(G,this._config.parent);return W.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}j.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et),document.getElementsByClassName("collapse");var nt="top",it="bottom",ot="right",rt="left",st="auto",at=[nt,it,ot,rt],ct="start",lt="end",ut="clippingParents",ft="viewport",dt="popper",pt="reference",ht=at.reduce((function(t,e){return t.concat([e+"-"+ct,e+"-"+lt])}),[]),gt=[].concat(at,[st]).reduce((function(t,e){return t.concat([e,e+"-"+ct,e+"-"+lt])}),[]),mt="beforeRead",vt="read",bt="afterRead",yt="beforeMain",_t="main",wt="afterMain",Et="beforeWrite",Ot="write",xt="afterWrite",At=[mt,vt,bt,yt,_t,wt,Et,Ot,xt];function Ct(t){return t?(t.nodeName||"").toLowerCase():null}function Lt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Tt(t){return t instanceof Lt(t).Element||t instanceof Element}function jt(t){return t instanceof Lt(t).HTMLElement||t instanceof HTMLElement}function St(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Lt(t).ShadowRoot||t instanceof ShadowRoot)}var kt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Ct(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});jt(i)&&Ct(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Pt(t){return t.split("-")[0]}var Dt=Math.max,Mt=Math.min,Nt=Math.round;function Bt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function It(){return!/^((?!chrome|android).)*safari/i.test(Bt())}function Ft(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Nt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Nt(i.height)/t.offsetHeight||1);var s=(Tt(t)?Lt(t):window).visualViewport,a=!It()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function Ht(t){var e=Ft(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function zt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&St(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Wt(t){return Lt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Ct(t))>=0}function qt(t){return((Tt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vt(t){return"html"===Ct(t)?t:t.assignedSlot||t.parentNode||(St(t)?t.host:null)||qt(t)}function Yt(t){return jt(t)&&"fixed"!==Wt(t).position?t.offsetParent:null}function Ut(t){for(var e=Lt(t),n=Yt(t);n&&Rt(n)&&"static"===Wt(n).position;)n=Yt(n);return n&&("html"===Ct(n)||"body"===Ct(n)&&"static"===Wt(n).position)?e:n||function(t){var e=/firefox/i.test(Bt());if(/Trident/i.test(Bt())&&jt(t)&&"fixed"===Wt(t).position)return null;var n=Vt(t);for(St(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Ct(n))<0;){var i=Wt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t,e,n){return Dt(t,Mt(e,n))}function Xt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function $t(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Gt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Pt(n.placement),c=Kt(a),l=[rt,ot].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Xt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:$t(t,at))}(o.padding,n),f=Ht(r),d="y"===c?nt:rt,p="y"===c?it:ot,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],g=s[c]-n.rects.reference[c],m=Ut(r),v=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=u[d],_=v-f[l]-u[p],w=v/2-f[l]/2+b,E=Qt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&zt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Jt(t){return t.split("-")[1]}var Zt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=rt,_=nt,w=window;if(l){var E=Ut(n),O="clientHeight",x="clientWidth";if(E===Lt(n)&&"static"!==Wt(E=qt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===nt||(o===rt||o===ot)&&r===lt)_=it,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=c?1:-1;if(o===rt||(o===nt||o===it)&&r===lt)y=ot,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&Zt),L=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Nt(n*o)/o||0,y:Nt(i*o)/o||0}}({x:p,y:g},Lt(n)):{x:p,y:g};return p=L.x,g=L.y,c?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?g+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var ee={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Pt(e.placement),variation:Jt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,te(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,te(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ne={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Lt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ne)})),a&&c.addEventListener("resize",n.update,ne),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ne)})),a&&c.removeEventListener("resize",n.update,ne)}},data:{}},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t){return t.replace(/left|right|bottom|top/g,(function(t){return oe[t]}))}var se={start:"end",end:"start"};function ae(t){return t.replace(/start|end/g,(function(t){return se[t]}))}function ce(t){var e=Lt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function le(t){return Ft(qt(t)).left+ce(t).scrollLeft}function ue(t){var e=Wt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function fe(t){return["html","body","#document"].indexOf(Ct(t))>=0?t.ownerDocument.body:jt(t)&&ue(t)?t:fe(Vt(t))}function de(t,e){var n;void 0===e&&(e=[]);var i=fe(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Lt(i),s=o?[r].concat(r.visualViewport||[],ue(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(de(Vt(s)))}function pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function he(t,e,n){return e===ft?pe(function(t,e){var n=Lt(t),i=qt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=It();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+le(t),y:c}}(t,n)):Tt(e)?function(t,e){var n=Ft(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):pe(function(t){var e,n=qt(t),i=ce(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Dt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Dt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+le(t),c=-i.scrollTop;return"rtl"===Wt(o||n).direction&&(a+=Dt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(qt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=de(Vt(t)),n=["absolute","fixed"].indexOf(Wt(t).position)>=0&&jt(t)?Ut(t):t;return Tt(n)?e.filter((function(t){return Tt(t)&&zt(t,n)&&"body"!==Ct(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=he(t,n,i);return e.top=Dt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Dt(o.left,e.left),e}),he(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function me(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Pt(o):null,s=o?Jt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case nt:e={x:a,y:n.y-i.height};break;case it:e={x:a,y:n.y+n.height};break;case ot:e={x:n.x+n.width,y:c};break;case rt:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Kt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case ct:e[l]=e[l]-(n[u]/2-i[u]/2);break;case lt:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ut:a,l=n.rootBoundary,u=void 0===l?ft:l,f=n.elementContext,d=void 0===f?dt:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Xt("number"!=typeof m?m:$t(m,at)),b=d===dt?pt:dt,y=t.rects.popper,_=t.elements[h?b:d],w=ge(Tt(_)?_:_.contextElement||qt(t.elements.popper),c,u,s),E=Ft(t.elements.reference),O=me({reference:E,element:y,strategy:"absolute",placement:o}),x=pe(Object.assign({},y,O)),A=d===dt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=t.modifiersData.offset;if(d===dt&&L){var T=L[o];Object.keys(C).forEach((function(t){var e=[ot,it].indexOf(t)>=0?1:-1,n=[nt,it].indexOf(t)>=0?"y":"x";C[t]+=T[n]*e}))}return C}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Jt(i),f=u?a?ht:ht.filter((function(t){return Jt(t)===u})):at,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=ve(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Pt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ye={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=e.options.placement,v=Pt(m),b=c||(v===m||!h?[re(m)]:function(t){if(Pt(t)===st)return[];var e=re(t);return[ae(t),e,ae(e)]}(m)),y=[m].concat(b).reduce((function(t,n){return t.concat(Pt(n)===st?be(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:g}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",k=ve(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),P=j?T?ot:rt:T?it:nt;_[S]>w[S]&&(P=re(P));var D=re(P),M=[];if(r&&M.push(k[L]<=0),a&&M.push(k[P]<=0,k[D]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _e(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function we(t){return[nt,ot,it,rt].some((function(e){return t[e]>=0}))}var Ee={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=ve(e,{elementContext:"reference"}),a=ve(e,{altBoundary:!0}),c=_e(s,i),l=_e(a,o,r),u=we(c),f=we(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce((function(t,n){return t[n]=function(t,e,n){var i=Pt(t),o=[rt,nt].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[rt,ot].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=me({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var Ae={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=ve(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),v=Pt(e.placement),b=Jt(e.placement),y=!b,_=Kt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,T={x:0,y:0};if(E){if(r){var j,S="y"===_?nt:rt,k="y"===_?it:ot,P="y"===_?"height":"width",D=E[_],M=D+m[S],N=D-m[k],B=p?-x[P]/2:0,I=b===ct?O[P]:x[P],F=b===ct?-x[P]:-O[P],H=e.elements.arrow,z=p&&H?Ht(H):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=W[S],q=W[k],V=Qt(0,O[P],z[P]),Y=y?O[P]/2-B-V-R-C.mainAxis:I-V-R-C.mainAxis,U=y?-O[P]/2+B+V+q+C.mainAxis:F+V+q+C.mainAxis,K=e.elements.arrow&&Ut(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==L?void 0:L[_])?j:0,$=D+U-X,G=Qt(p?Mt(M,D+Y-X-Q):M,D,p?Dt(N,$):N);E[_]=G,T[_]=G-D}if(a){var J,Z="x"===_?nt:rt,tt="x"===_?it:ot,et=E[w],st="y"===w?"height":"width",at=et+m[Z],lt=et-m[tt],ut=-1!==[nt,rt].indexOf(v),ft=null!=(J=null==L?void 0:L[w])?J:0,dt=ut?at:et-O[st]-x[st]-ft+C.altAxis,pt=ut?et+O[st]+x[st]-ft-C.altAxis:lt,ht=p&&ut?function(t,e,n){var i=Qt(t,e,n);return i>n?n:i}(dt,et,pt):Qt(p?dt:at,et,p?pt:lt);E[w]=ht,T[w]=ht-et}e.modifiersData[i]=T}},requiresIfExists:["offset"]};function Ce(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Nt(e.width)/t.offsetWidth||1,i=Nt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=qt(e),c=Ft(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ct(e)||ue(a))&&(l=(i=e)!==Lt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ce(i)),jt(e)?((u=Ft(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=le(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Le(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Te={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Be.has(n)||Boolean(Ie.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const He={allowList:Ne,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ze={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},We={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return He}static get DefaultType(){return ze}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=M(M({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},We)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Fe(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const qe=new Set(["sanitize","allowList","sanitizeFn"]),Ve="fade",Ye="show",Ue=".tooltip-inner",Ke=".".concat("modal"),Qe="hide.bs.modal",Xe="hover",$e="focus",Ge={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Je={allowList:Ne,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ze={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tn extends H{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Je}static get DefaultType(){return Ze}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Ke),Qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",a);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[$e]=!1,this._activeTrigger[Xe]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ve,Ye),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ve),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(M(M({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ue]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ve)}_isShown(){return this.tip&&this.tip.classList.contains(Ye)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ge[e.toUpperCase()];return De(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return M(M({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Xe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Xe?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?$e:Xe]=!0,e._enter()})),j.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?$e:Xe]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Ke),Qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=I.getDataAttributes(this._element);for(const t of Object.keys(e))qe.has(t)&&delete e[t];return t=M(M({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=tn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}var en;f(tn);const nn=document.getElementById("toc-bar"),on=document.getElementById("toc-solo-trigger"),rn=document.getElementsByClassName("toc-trigger"),sn=document.getElementById("toc-popup"),an=document.getElementById("toc-popup-close"),cn="overflow-hidden",ln="closing";class un{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{nn.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(k(un,this,dn)._,"px 0px 0px 0px")}).observe(on),fn._=k(un,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){k(un,this,fn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return sn.open}static showPopup(){this.lockScroll(!0),sn.showModal();sn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){sn.toggleAttribute(ln),sn.addEventListener("animationend",(()=>{sn.toggleAttribute(ln),sn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(cn,t),document.body.classList.toggle(cn,t)}static clickBackdrop(t){if(sn.hasAttribute(ln))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...rn].forEach((t=>{t.onclick=()=>this.showPopup()})),sn.onclick=t=>this.clickBackdrop(t),an.onclick=()=>this.hidePopup(),sn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var fn={_:!0},dn={_:48};P(un,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(en=un,en,dn)._});P(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const pn=document.getElementById("mode-toggle");const hn=document.getElementById("sidebar"),gn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class vn{static toggle(){bn._=k(vn,this,!k(vn,this,bn)._),document.body.toggleAttribute("sidebar-display",k(vn,this,bn)._),hn.classList.toggle("z-2",k(vn,this,bn)._),mn.classList.toggle("d-none",!k(vn,this,bn)._)}}var bn={_:!1};const yn=document.getElementById("sidebar-trigger"),_n=document.getElementById("search-trigger"),wn=document.getElementById("search-cancel"),En=document.querySelectorAll("#main-wrapper>.container>.row"),On=document.getElementById("topbar-title"),xn=document.getElementById("search"),An=document.getElementById("search-result-wrapper"),Cn=document.getElementById("search-results"),Ln=document.getElementById("search-input"),Tn=document.getElementById("search-hints"),jn="d-block",Sn="d-none",kn="input-focus",Pn="d-flex";class Dn{static on(){yn.classList.add(Sn),On.classList.add(Sn),_n.classList.add(Sn),xn.classList.add(Pn),wn.classList.add(jn)}static off(){wn.classList.remove(jn),xn.classList.remove(Pn),yn.classList.remove(Sn),On.classList.remove(Sn),_n.classList.remove(Sn)}}class Mn{static on(){this.resultVisible||(An.classList.remove(Sn),En.forEach((t=>{t.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Cn.innerHTML="",Tn.classList.contains(Sn)&&Tn.classList.remove(Sn),An.classList.add(Sn),En.forEach((t=>{t.classList.remove(Sn)})),Ln.textContent="",this.resultVisible=!1)}}function Nn(){return wn.classList.contains(jn)}P(Mn,"resultVisible",!1),gn.onclick=mn.onclick=()=>vn.toggle(),_n.addEventListener("click",(()=>{Dn.on(),Mn.on(),Ln.focus()})),wn.addEventListener("click",(()=>{Dn.off(),Mn.off()})),Ln.addEventListener("focus",(()=>{xn.classList.add(kn)})),Ln.addEventListener("focusout",(()=>{xn.classList.remove(kn)})),Ln.addEventListener("input",(()=>{""===Ln.value?Nn()?Tn.classList.remove(Sn):Mn.off():(Mn.on(),Nn()&&Tn.classList.add(Sn))})),pn&&pn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new tn(t)))}(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js new file mode 100644 index 00000000000..87fbe9ef323 --- /dev/null +++ b/assets/js/dist/home.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(v++)||t.uidEvent||v++}function E(t){const e=w(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return S(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return S(i,{delegateTarget:t}),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const j={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))T(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=S(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function S(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function D(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function k(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function M(t){for(var e=1;e"-".concat(t.toLowerCase())))}const F={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=N(t.dataset[i])}return e},getDataAttribute:(t,e)=>N(t.getAttribute("data-bs-".concat(B(e))))};class I{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?F.getDataAttribute(e,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?F.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends I{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},q={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=z(t);return e&&q.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?q.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?q.find(e):[]}},W=".".concat("bs.collapse"),R="show".concat(W),V="shown".concat(W),Y="hide".concat(W),U="hidden".concat(W),K="click".concat(W).concat(".data-api"),Q="show",X="collapse",$="collapsing",G=":scope .".concat(X," .").concat(X),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=q.find(J);for(const t of n){const e=q.getSelectorFromElement(t),n=q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,R).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,Q),this._element.style[e]="",j.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,Q);for(const t of this._triggerArray){const e=q.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X),j.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=q.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=q.find(G,this._config.parent);return q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}j.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of q.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et),document.getElementsByClassName("collapse");var nt="top",it="bottom",ot="right",rt="left",st="auto",at=[nt,it,ot,rt],ct="start",lt="end",ut="clippingParents",ft="viewport",dt="popper",pt="reference",ht=at.reduce((function(t,e){return t.concat([e+"-"+ct,e+"-"+lt])}),[]),mt=[].concat(at,[st]).reduce((function(t,e){return t.concat([e,e+"-"+ct,e+"-"+lt])}),[]),gt="beforeRead",bt="read",vt="afterRead",yt="beforeMain",_t="main",wt="afterMain",Et="beforeWrite",Ot="write",xt="afterWrite",At=[gt,bt,vt,yt,_t,wt,Et,Ot,xt];function Ct(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Lt(t){return t instanceof Tt(t).Element||t instanceof Element}function jt(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function St(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var Dt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Ct(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});jt(i)&&Ct(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function kt(t){return t.split("-")[0]}var Pt=Math.max,Mt=Math.min,Nt=Math.round;function Bt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ft(){return!/^((?!chrome|android).)*safari/i.test(Bt())}function It(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Nt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Nt(i.height)/t.offsetHeight||1);var s=(Lt(t)?Tt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function Ht(t){var e=It(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function zt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&St(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function qt(t){return Tt(t).getComputedStyle(t)}function Wt(t){return["table","td","th"].indexOf(Ct(t))>=0}function Rt(t){return((Lt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vt(t){return"html"===Ct(t)?t:t.assignedSlot||t.parentNode||(St(t)?t.host:null)||Rt(t)}function Yt(t){return jt(t)&&"fixed"!==qt(t).position?t.offsetParent:null}function Ut(t){for(var e=Tt(t),n=Yt(t);n&&Wt(n)&&"static"===qt(n).position;)n=Yt(n);return n&&("html"===Ct(n)||"body"===Ct(n)&&"static"===qt(n).position)?e:n||function(t){var e=/firefox/i.test(Bt());if(/Trident/i.test(Bt())&&jt(t)&&"fixed"===qt(t).position)return null;var n=Vt(t);for(St(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Ct(n))<0;){var i=qt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t,e,n){return Pt(t,Mt(e,n))}function Xt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function $t(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Gt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=kt(n.placement),c=Kt(a),l=[rt,ot].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Xt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:$t(t,at))}(o.padding,n),f=Ht(r),d="y"===c?nt:rt,p="y"===c?it:ot,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Ut(r),b=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Qt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&zt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Jt(t){return t.split("-")[1]}var Zt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=rt,_=nt,w=window;if(l){var E=Ut(n),O="clientHeight",x="clientWidth";if(E===Tt(n)&&"static"!==qt(E=Rt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===nt||(o===rt||o===ot)&&r===lt)_=it,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===rt||(o===nt||o===it)&&r===lt)y=ot,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&Zt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Nt(n*o)/o||0,y:Nt(i*o)/o||0}}({x:p,y:m},Tt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((A={})[_]=v?"0":"",A[y]=b?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ee={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:kt(e.placement),variation:Jt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,te(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,te(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ne={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ne)})),a&&c.addEventListener("resize",n.update,ne),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ne)})),a&&c.removeEventListener("resize",n.update,ne)}},data:{}},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t){return t.replace(/left|right|bottom|top/g,(function(t){return oe[t]}))}var se={start:"end",end:"start"};function ae(t){return t.replace(/start|end/g,(function(t){return se[t]}))}function ce(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function le(t){return It(Rt(t)).left+ce(t).scrollLeft}function ue(t){var e=qt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function fe(t){return["html","body","#document"].indexOf(Ct(t))>=0?t.ownerDocument.body:jt(t)&&ue(t)?t:fe(Vt(t))}function de(t,e){var n;void 0===e&&(e=[]);var i=fe(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],ue(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(de(Vt(s)))}function pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function he(t,e,n){return e===ft?pe(function(t,e){var n=Tt(t),i=Rt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+le(t),y:c}}(t,n)):Lt(e)?function(t,e){var n=It(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):pe(function(t){var e,n=Rt(t),i=ce(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Pt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Pt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+le(t),c=-i.scrollTop;return"rtl"===qt(o||n).direction&&(a+=Pt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Rt(t)))}function me(t,e,n,i){var o="clippingParents"===e?function(t){var e=de(Vt(t)),n=["absolute","fixed"].indexOf(qt(t).position)>=0&&jt(t)?Ut(t):t;return Lt(n)?e.filter((function(t){return Lt(t)&&zt(t,n)&&"body"!==Ct(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=he(t,n,i);return e.top=Pt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Pt(o.left,e.left),e}),he(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ge(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?kt(o):null,s=o?Jt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case nt:e={x:a,y:n.y-i.height};break;case it:e={x:a,y:n.y+n.height};break;case ot:e={x:n.x+n.width,y:c};break;case rt:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Kt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case ct:e[l]=e[l]-(n[u]/2-i[u]/2);break;case lt:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ut:a,l=n.rootBoundary,u=void 0===l?ft:l,f=n.elementContext,d=void 0===f?dt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Xt("number"!=typeof g?g:$t(g,at)),v=d===dt?pt:dt,y=t.rects.popper,_=t.elements[h?v:d],w=me(Lt(_)?_:_.contextElement||Rt(t.elements.popper),c,u,s),E=It(t.elements.reference),O=ge({reference:E,element:y,strategy:"absolute",placement:o}),x=pe(Object.assign({},y,O)),A=d===dt?x:E,C={top:w.top-A.top+b.top,bottom:A.bottom-w.bottom+b.bottom,left:w.left-A.left+b.left,right:A.right-w.right+b.right},T=t.modifiersData.offset;if(d===dt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[ot,it].indexOf(t)>=0?1:-1,n=[nt,it].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?mt:c,u=Jt(i),f=u?a?ht:ht.filter((function(t){return Jt(t)===u})):at,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[kt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ye={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=kt(g),v=c||(b===g||!h?[re(g)]:function(t){if(kt(t)===st)return[];var e=re(t);return[ae(t),e,ae(e)]}(g)),y=[g].concat(v).reduce((function(t,n){return t.concat(kt(n)===st?ve(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",D=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=j?L?ot:rt:L?it:nt;_[S]>w[S]&&(k=re(k));var P=re(k),M=[];if(r&&M.push(D[T]<=0),a&&M.push(D[k]<=0,D[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _e(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function we(t){return[nt,ot,it,rt].some((function(e){return t[e]>=0}))}var Ee={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=_e(s,i),l=_e(a,o,r),u=we(c),f=we(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=mt.reduce((function(t,n){return t[n]=function(t,e,n){var i=kt(t),o=[rt,nt].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[rt,ot].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ge({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var Ae={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=kt(e.placement),v=Jt(e.placement),y=!v,_=Kt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var j,S="y"===_?nt:rt,D="y"===_?it:ot,k="y"===_?"height":"width",P=E[_],M=P+g[S],N=P-g[D],B=p?-x[k]/2:0,F=v===ct?O[k]:x[k],I=v===ct?-x[k]:-O[k],H=e.elements.arrow,z=p&&H?Ht(H):{width:0,height:0},q=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=q[S],R=q[D],V=Qt(0,O[k],z[k]),Y=y?O[k]/2-B-V-W-C.mainAxis:F-V-W-C.mainAxis,U=y?-O[k]/2+B+V+R+C.mainAxis:I+V+R+C.mainAxis,K=e.elements.arrow&&Ut(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==T?void 0:T[_])?j:0,$=P+U-X,G=Qt(p?Mt(M,P+Y-X-Q):M,P,p?Pt(N,$):N);E[_]=G,L[_]=G-P}if(a){var J,Z="x"===_?nt:rt,tt="x"===_?it:ot,et=E[w],st="y"===w?"height":"width",at=et+g[Z],lt=et-g[tt],ut=-1!==[nt,rt].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[st]-x[st]-ft+C.altAxis,pt=ut?et+O[st]+x[st]-ft-C.altAxis:lt,ht=p&&ut?function(t,e,n){var i=Qt(t,e,n);return i>n?n:i}(dt,et,pt):Qt(p?dt:at,et,p?pt:lt);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ce(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Nt(e.width)/t.offsetWidth||1,i=Nt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Rt(e),c=It(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ct(e)||ue(a))&&(l=(i=e)!==Tt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ce(i)),jt(e)?((u=It(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=le(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Le={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Be.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const He={allowList:Ne,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ze={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},qe={entry:"(string|element|function|null)",selector:"(string|element)"};class We extends I{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return He}static get DefaultType(){return ze}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=M(M({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},qe)}_setContent(t,e,n){const i=q.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Ie(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Re=new Set(["sanitize","allowList","sanitizeFn"]),Ve="fade",Ye="show",Ue=".tooltip-inner",Ke=".".concat("modal"),Qe="hide.bs.modal",Xe="hover",$e="focus",Ge={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Je={allowList:Ne,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ze={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tn extends H{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Je}static get DefaultType(){return Ze}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Ke),Qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",a);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[$e]=!1,this._activeTrigger[Xe]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ve,Ye),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ve),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new We(M(M({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ue]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ve)}_isShown(){return this.tip&&this.tip.classList.contains(Ye)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ge[e.toUpperCase()];return Pe(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return M(M({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Xe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Xe?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?$e:Xe]=!0,e._enter()})),j.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?$e:Xe]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Ke),Qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Re.has(t)&&delete e[t];return t=M(M({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=tn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}f(tn);const en="data-src",nn="data-lqip",on="shimmer",rn="blur";function sn(t){this.parentElement.classList.remove(t)}function an(){this.complete&&(this.hasAttribute(nn)?sn.call(this,rn):sn.call(this,on))}function cn(){const t=this.getAttribute(en);this.setAttribute("src",encodeURI(t)),this.removeAttribute(en)}class ln{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var un;const fn=document.getElementById("toc-bar"),dn=document.getElementById("toc-solo-trigger"),pn=document.getElementsByClassName("toc-trigger"),hn=document.getElementById("toc-popup"),mn=document.getElementById("toc-popup-close"),gn="overflow-hidden",bn="closing";class vn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{fn.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(D(vn,this,_n)._,"px 0px 0px 0px")}).observe(dn),yn._=D(vn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){D(vn,this,yn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return hn.open}static showPopup(){this.lockScroll(!0),hn.showModal();hn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){hn.toggleAttribute(bn),hn.addEventListener("animationend",(()=>{hn.toggleAttribute(bn),hn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(gn,t),document.body.classList.toggle(gn,t)}static clickBackdrop(t){if(hn.hasAttribute(bn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...pn].forEach((t=>{t.onclick=()=>this.showPopup()})),hn.onclick=t=>this.clickBackdrop(t),mn.onclick=()=>this.hidePopup(),hn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var yn={_:!0},_n={_:48};k(vn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:D(un=vn,un,_n)._});k(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const wn=document.getElementById("mode-toggle");const En=document.getElementById("sidebar"),On=document.getElementById("sidebar-trigger"),xn=document.getElementById("mask");class An{static toggle(){Cn._=D(An,this,!D(An,this,Cn)._),document.body.toggleAttribute("sidebar-display",D(An,this,Cn)._),En.classList.toggle("z-2",D(An,this,Cn)._),xn.classList.toggle("d-none",!D(An,this,Cn)._)}}var Cn={_:!1};const Tn=document.getElementById("sidebar-trigger"),Ln=document.getElementById("search-trigger"),jn=document.getElementById("search-cancel"),Sn=document.querySelectorAll("#main-wrapper>.container>.row"),Dn=document.getElementById("topbar-title"),kn=document.getElementById("search"),Pn=document.getElementById("search-result-wrapper"),Mn=document.getElementById("search-results"),Nn=document.getElementById("search-input"),Bn=document.getElementById("search-hints"),Fn="d-block",In="d-none",Hn="input-focus",zn="d-flex";class qn{static on(){Tn.classList.add(In),Dn.classList.add(In),Ln.classList.add(In),kn.classList.add(zn),jn.classList.add(Fn)}static off(){jn.classList.remove(Fn),kn.classList.remove(zn),Tn.classList.remove(In),Dn.classList.remove(In),Ln.classList.remove(In)}}class Wn{static on(){this.resultVisible||(Pn.classList.remove(In),Sn.forEach((t=>{t.classList.add(In)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Mn.innerHTML="",Bn.classList.contains(In)&&Bn.classList.remove(In),Pn.classList.add(In),Sn.forEach((t=>{t.classList.remove(In)})),Nn.textContent="",this.resultVisible=!1)}}function Rn(){return jn.classList.contains(Fn)}k(Wn,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",an)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&sn.call(t,on)}));const e=document.querySelectorAll("article img[".concat(nn,'="true"]'));e.length&&e.forEach((t=>{cn.call(t)}))}(),dayjs.locale(ln.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(ln.attrTimestamp,"]")).forEach((t=>{const e=dayjs.unix(ln.getTimestamp(t)),n=e.format(ln.getDateFormat(t));if(t.textContent=n,t.removeAttribute(ln.attrTimestamp),t.removeAttribute(ln.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),On.onclick=xn.onclick=()=>An.toggle(),Ln.addEventListener("click",(()=>{qn.on(),Wn.on(),Nn.focus()})),jn.addEventListener("click",(()=>{qn.off(),Wn.off()})),Nn.addEventListener("focus",(()=>{kn.classList.add(Hn)})),Nn.addEventListener("focusout",(()=>{kn.classList.remove(Hn)})),Nn.addEventListener("input",(()=>{""===Nn.value?Rn()?Bn.classList.remove(In):Wn.off():(Wn.on(),Rn()&&Bn.classList.add(In))})),wn&&wn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new tn(t)))}(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 00000000000..e90f35198b8 --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,g=/\..*/,m=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(v++)||t.uidEvent||v++}function E(t){const e=w(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return S(o,{delegateTarget:s}),i.oneOff&&j.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return S(i,{delegateTarget:t}),n.oneOff&&j.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(g,""),y[t]||t}const j={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))T(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(m,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=S(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function S(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function D(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function k(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function M(t){for(var e=1;e"-".concat(t.toLowerCase())))}const F={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=N(t.dataset[i])}return e},getDataAttribute:(t,e)=>N(t.getAttribute("data-bs-".concat(B(e))))};class I{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?F.getDataAttribute(e,"config"):{};return M(M(M(M({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?F.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends I{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const z=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},W={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=z(t);return e&&W.findOne(e)?e:null},getElementFromSelector(t){const e=z(t);return e?W.findOne(e):null},getMultipleElementsFromSelector(t){const e=z(t);return e?W.find(e):[]}},R=".".concat("bs.collapse"),q="show".concat(R),V="shown".concat(R),Y="hide".concat(R),U="hidden".concat(R),K="click".concat(R).concat(".data-api"),Q="show",X="collapse",$="collapsing",G=":scope .".concat(X," .").concat(X),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=W.find(J);for(const t of n){const e=W.getSelectorFromElement(t),n=W.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,q).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(X),this._element.classList.add($),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X,Q),this._element.style[e]="",j.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add($),this._element.classList.remove(X,Q);for(const t of this._triggerArray){const e=W.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove($),this._element.classList.add(X),j.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=W.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=W.find(G,this._config.parent);return W.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}j.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of W.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et),document.getElementsByClassName("collapse");var nt="top",it="bottom",ot="right",rt="left",st="auto",at=[nt,it,ot,rt],ct="start",lt="end",ut="clippingParents",ft="viewport",dt="popper",pt="reference",ht=at.reduce((function(t,e){return t.concat([e+"-"+ct,e+"-"+lt])}),[]),gt=[].concat(at,[st]).reduce((function(t,e){return t.concat([e,e+"-"+ct,e+"-"+lt])}),[]),mt="beforeRead",bt="read",vt="afterRead",yt="beforeMain",_t="main",wt="afterMain",Et="beforeWrite",Ot="write",xt="afterWrite",At=[mt,bt,vt,yt,_t,wt,Et,Ot,xt];function Ct(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Lt(t){return t instanceof Tt(t).Element||t instanceof Element}function jt(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function St(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var Dt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];jt(o)&&Ct(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});jt(i)&&Ct(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function kt(t){return t.split("-")[0]}var Pt=Math.max,Mt=Math.min,Nt=Math.round;function Bt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ft(){return!/^((?!chrome|android).)*safari/i.test(Bt())}function It(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&jt(t)&&(o=t.offsetWidth>0&&Nt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Nt(i.height)/t.offsetHeight||1);var s=(Lt(t)?Tt(t):window).visualViewport,a=!Ft()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function Ht(t){var e=It(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function zt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&St(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Wt(t){return Tt(t).getComputedStyle(t)}function Rt(t){return["table","td","th"].indexOf(Ct(t))>=0}function qt(t){return((Lt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vt(t){return"html"===Ct(t)?t:t.assignedSlot||t.parentNode||(St(t)?t.host:null)||qt(t)}function Yt(t){return jt(t)&&"fixed"!==Wt(t).position?t.offsetParent:null}function Ut(t){for(var e=Tt(t),n=Yt(t);n&&Rt(n)&&"static"===Wt(n).position;)n=Yt(n);return n&&("html"===Ct(n)||"body"===Ct(n)&&"static"===Wt(n).position)?e:n||function(t){var e=/firefox/i.test(Bt());if(/Trident/i.test(Bt())&&jt(t)&&"fixed"===Wt(t).position)return null;var n=Vt(t);for(St(n)&&(n=n.host);jt(n)&&["html","body"].indexOf(Ct(n))<0;){var i=Wt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t,e,n){return Pt(t,Mt(e,n))}function Xt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function $t(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Gt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=kt(n.placement),c=Kt(a),l=[rt,ot].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Xt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:$t(t,at))}(o.padding,n),f=Ht(r),d="y"===c?nt:rt,p="y"===c?it:ot,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],g=s[c]-n.rects.reference[c],m=Ut(r),b=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,v=h/2-g/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Qt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&zt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Jt(t){return t.split("-")[1]}var Zt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=rt,_=nt,w=window;if(l){var E=Ut(n),O="clientHeight",x="clientWidth";if(E===Tt(n)&&"static"!==Wt(E=qt(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===nt||(o===rt||o===ot)&&r===lt)_=it,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=c?1:-1;if(o===rt||(o===nt||o===it)&&r===lt)y=ot,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=c?1:-1}var A,C=Object.assign({position:a},l&&Zt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Nt(n*o)/o||0,y:Nt(i*o)/o||0}}({x:p,y:g},Tt(n)):{x:p,y:g};return p=T.x,g=T.y,c?Object.assign({},C,((A={})[_]=v?"0":"",A[y]=b?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((e={})[_]=v?g+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ee={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:kt(e.placement),variation:Jt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,te(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,te(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ne={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ne)})),a&&c.addEventListener("resize",n.update,ne),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ne)})),a&&c.removeEventListener("resize",n.update,ne)}},data:{}},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t){return t.replace(/left|right|bottom|top/g,(function(t){return oe[t]}))}var se={start:"end",end:"start"};function ae(t){return t.replace(/start|end/g,(function(t){return se[t]}))}function ce(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function le(t){return It(qt(t)).left+ce(t).scrollLeft}function ue(t){var e=Wt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function fe(t){return["html","body","#document"].indexOf(Ct(t))>=0?t.ownerDocument.body:jt(t)&&ue(t)?t:fe(Vt(t))}function de(t,e){var n;void 0===e&&(e=[]);var i=fe(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],ue(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(de(Vt(s)))}function pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function he(t,e,n){return e===ft?pe(function(t,e){var n=Tt(t),i=qt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=Ft();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+le(t),y:c}}(t,n)):Lt(e)?function(t,e){var n=It(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):pe(function(t){var e,n=qt(t),i=ce(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Pt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Pt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+le(t),c=-i.scrollTop;return"rtl"===Wt(o||n).direction&&(a+=Pt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(qt(t)))}function ge(t,e,n,i){var o="clippingParents"===e?function(t){var e=de(Vt(t)),n=["absolute","fixed"].indexOf(Wt(t).position)>=0&&jt(t)?Ut(t):t;return Lt(n)?e.filter((function(t){return Lt(t)&&zt(t,n)&&"body"!==Ct(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=he(t,n,i);return e.top=Pt(o.top,e.top),e.right=Mt(o.right,e.right),e.bottom=Mt(o.bottom,e.bottom),e.left=Pt(o.left,e.left),e}),he(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function me(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?kt(o):null,s=o?Jt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case nt:e={x:a,y:n.y-i.height};break;case it:e={x:a,y:n.y+n.height};break;case ot:e={x:n.x+n.width,y:c};break;case rt:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Kt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case ct:e[l]=e[l]-(n[u]/2-i[u]/2);break;case lt:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ut:a,l=n.rootBoundary,u=void 0===l?ft:l,f=n.elementContext,d=void 0===f?dt:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,b=Xt("number"!=typeof m?m:$t(m,at)),v=d===dt?pt:dt,y=t.rects.popper,_=t.elements[h?v:d],w=ge(Lt(_)?_:_.contextElement||qt(t.elements.popper),c,u,s),E=It(t.elements.reference),O=me({reference:E,element:y,strategy:"absolute",placement:o}),x=pe(Object.assign({},y,O)),A=d===dt?x:E,C={top:w.top-A.top+b.top,bottom:A.bottom-w.bottom+b.bottom,left:w.left-A.left+b.left,right:A.right-w.right+b.right},T=t.modifiersData.offset;if(d===dt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[ot,it].indexOf(t)>=0?1:-1,n=[nt,it].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?gt:c,u=Jt(i),f=u?a?ht:ht.filter((function(t){return Jt(t)===u})):at,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[kt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ye={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=e.options.placement,b=kt(m),v=c||(b===m||!h?[re(m)]:function(t){if(kt(t)===st)return[];var e=re(t);return[ae(t),e,ae(e)]}(m)),y=[m].concat(v).reduce((function(t,n){return t.concat(kt(n)===st?ve(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:g}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,S=j?"width":"height",D=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=j?L?ot:rt:L?it:nt;_[S]>w[S]&&(k=re(k));var P=re(k),M=[];if(r&&M.push(D[T]<=0),a&&M.push(D[k]<=0,D[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _e(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function we(t){return[nt,ot,it,rt].some((function(e){return t[e]>=0}))}var Ee={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=_e(s,i),l=_e(a,o,r),u=we(c),f=we(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=gt.reduce((function(t,n){return t[n]=function(t,e,n){var i=kt(t),o=[rt,nt].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[rt,ot].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var xe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=me({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var Ae={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=kt(e.placement),v=Jt(e.placement),y=!v,_=Kt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var j,S="y"===_?nt:rt,D="y"===_?it:ot,k="y"===_?"height":"width",P=E[_],M=P+m[S],N=P-m[D],B=p?-x[k]/2:0,F=v===ct?O[k]:x[k],I=v===ct?-x[k]:-O[k],H=e.elements.arrow,z=p&&H?Ht(H):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=W[S],q=W[D],V=Qt(0,O[k],z[k]),Y=y?O[k]/2-B-V-R-C.mainAxis:F-V-R-C.mainAxis,U=y?-O[k]/2+B+V+q+C.mainAxis:I+V+q+C.mainAxis,K=e.elements.arrow&&Ut(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,X=null!=(j=null==T?void 0:T[_])?j:0,$=P+U-X,G=Qt(p?Mt(M,P+Y-X-Q):M,P,p?Pt(N,$):N);E[_]=G,L[_]=G-P}if(a){var J,Z="x"===_?nt:rt,tt="x"===_?it:ot,et=E[w],st="y"===w?"height":"width",at=et+m[Z],lt=et-m[tt],ut=-1!==[nt,rt].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[st]-x[st]-ft+C.altAxis,pt=ut?et+O[st]+x[st]-ft-C.altAxis:lt,ht=p&&ut?function(t,e,n){var i=Qt(t,e,n);return i>n?n:i}(dt,et,pt):Qt(p?dt:at,et,p?pt:lt);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ce(t,e,n){void 0===n&&(n=!1);var i,o,r=jt(e),s=jt(e)&&function(t){var e=t.getBoundingClientRect(),n=Nt(e.width)/t.offsetWidth||1,i=Nt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=qt(e),c=It(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ct(e)||ue(a))&&(l=(i=e)!==Tt(i)&&jt(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ce(i)),jt(e)?((u=It(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=le(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Le={placement:"bottom",modifiers:[],strategy:"absolute"};function je(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Be.has(n)||Boolean(Fe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const He={allowList:Ne,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ze={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},We={entry:"(string|element|function|null)",selector:"(string|element)"};class Re extends I{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return He}static get DefaultType(){return ze}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=M(M({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},We)}_setContent(t,e,n){const i=W.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Ie(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const qe=new Set(["sanitize","allowList","sanitizeFn"]),Ve="fade",Ye="show",Ue=".tooltip-inner",Ke=".".concat("modal"),Qe="hide.bs.modal",Xe="hover",$e="focus",Ge={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Je={allowList:Ne,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ze={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tn extends H{constructor(t,e){if(void 0===Me)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Je}static get DefaultType(){return Ze}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(Ke),Qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",a);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[$e]=!1,this._activeTrigger[Xe]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ve,Ye),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ve),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Re(M(M({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ue]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ve)}_isShown(){return this.tip&&this.tip.classList.contains(Ye)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ge[e.toUpperCase()];return Pe(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return M(M({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Xe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Xe?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?$e:Xe]=!0,e._enter()})),j.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?$e:Xe]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(Ke),Qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))qe.has(t)&&delete e[t];return t=M(M({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=tn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}f(tn);class en{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var nn;const on=document.getElementById("toc-bar"),rn=document.getElementById("toc-solo-trigger"),sn=document.getElementsByClassName("toc-trigger"),an=document.getElementById("toc-popup"),cn=document.getElementById("toc-popup-close"),ln="overflow-hidden",un="closing";class fn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{on.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(D(fn,this,pn)._,"px 0px 0px 0px")}).observe(rn),dn._=D(fn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){D(fn,this,dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return an.open}static showPopup(){this.lockScroll(!0),an.showModal();an.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){an.toggleAttribute(un),an.addEventListener("animationend",(()=>{an.toggleAttribute(un),an.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(ln,t),document.body.classList.toggle(ln,t)}static clickBackdrop(t){if(an.hasAttribute(un))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...sn].forEach((t=>{t.onclick=()=>this.showPopup()})),an.onclick=t=>this.clickBackdrop(t),cn.onclick=()=>this.hidePopup(),an.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var dn={_:!0},pn={_:48};k(fn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:D(nn=fn,nn,pn)._});k(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const hn=document.getElementById("mode-toggle");const gn=document.getElementById("sidebar"),mn=document.getElementById("sidebar-trigger"),bn=document.getElementById("mask");class vn{static toggle(){yn._=D(vn,this,!D(vn,this,yn)._),document.body.toggleAttribute("sidebar-display",D(vn,this,yn)._),gn.classList.toggle("z-2",D(vn,this,yn)._),bn.classList.toggle("d-none",!D(vn,this,yn)._)}}var yn={_:!1};const _n=document.getElementById("sidebar-trigger"),wn=document.getElementById("search-trigger"),En=document.getElementById("search-cancel"),On=document.querySelectorAll("#main-wrapper>.container>.row"),xn=document.getElementById("topbar-title"),An=document.getElementById("search"),Cn=document.getElementById("search-result-wrapper"),Tn=document.getElementById("search-results"),Ln=document.getElementById("search-input"),jn=document.getElementById("search-hints"),Sn="d-block",Dn="d-none",kn="input-focus",Pn="d-flex";class Mn{static on(){_n.classList.add(Dn),xn.classList.add(Dn),wn.classList.add(Dn),An.classList.add(Pn),En.classList.add(Sn)}static off(){En.classList.remove(Sn),An.classList.remove(Pn),_n.classList.remove(Dn),xn.classList.remove(Dn),wn.classList.remove(Dn)}}class Nn{static on(){this.resultVisible||(Cn.classList.remove(Dn),On.forEach((t=>{t.classList.add(Dn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Tn.innerHTML="",jn.classList.contains(Dn)&&jn.classList.remove(Dn),Cn.classList.add(Dn),On.forEach((t=>{t.classList.remove(Dn)})),Ln.textContent="",this.resultVisible=!1)}}function Bn(){return En.classList.contains(Sn)}k(Nn,"resultVisible",!1),mn.onclick=bn.onclick=()=>vn.toggle(),wn.addEventListener("click",(()=>{Mn.on(),Nn.on(),Ln.focus()})),En.addEventListener("click",(()=>{Mn.off(),Nn.off()})),Ln.addEventListener("focus",(()=>{An.classList.add(kn)})),Ln.addEventListener("focusout",(()=>{An.classList.remove(kn)})),Ln.addEventListener("input",(()=>{""===Ln.value?Bn()?jn.classList.remove(Dn):Nn.off():(Nn.on(),Bn()&&jn.classList.add(Dn))})),dayjs.locale(en.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(en.attrTimestamp,"]")).forEach((t=>{const e=dayjs.unix(en.getTimestamp(t)),n=e.format(en.getDateFormat(t));if(t.textContent=n,t.removeAttribute(en.attrTimestamp),t.removeAttribute(en.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),hn&&hn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new tn(t)))}(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 00000000000..9da95d2178b --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(v++)||t.uidEvent||v++}function E(t){const e=w(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function x(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){x(t,e,n,i,!1)},one(t,e,n,i){x(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))T(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function D(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase())))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=M(t.dataset[i])}return e},getDataAttribute:(t,e)=>M(t.getAttribute("data-bs-".concat(B(e))))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?I.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends F{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const q=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},z={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=q(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=q(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=q(t);return e?z.find(e):[]}},W=".".concat("bs.collapse"),R="show".concat(W),V="shown".concat(W),Y="hide".concat(W),U="hidden".concat(W),K="click".concat(W).concat(".data-api"),Q="show",G="collapse",X="collapsing",$=":scope .".concat(G," .").concat(G),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=z.find(J);for(const t of n){const e=z.getSelectorFromElement(t),n=z.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,R).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(G),this._element.classList.add(X),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(X),this._element.classList.add(G,Q),this._element.style[e]="",S.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add(X),this._element.classList.remove(G,Q);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(X),this._element.classList.add(G),S.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find($,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}S.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et),document.getElementsByClassName("collapse");var nt="top",it="bottom",ot="right",rt="left",st="auto",at=[nt,it,ot,rt],ct="start",lt="end",ut="clippingParents",ft="viewport",dt="popper",pt="reference",ht=at.reduce((function(t,e){return t.concat([e+"-"+ct,e+"-"+lt])}),[]),mt=[].concat(at,[st]).reduce((function(t,e){return t.concat([e,e+"-"+ct,e+"-"+lt])}),[]),gt="beforeRead",bt="read",vt="afterRead",yt="beforeMain",_t="main",wt="afterMain",Et="beforeWrite",Ot="write",At="afterWrite",xt=[gt,bt,vt,yt,_t,wt,Et,Ot,At];function Ct(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Lt(t){return t instanceof Tt(t).Element||t instanceof Element}function St(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function jt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var kt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];St(o)&&Ct(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});St(i)&&Ct(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Dt(t){return t.split("-")[0]}var Pt=Math.max,Nt=Math.min,Mt=Math.round;function Bt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function It(){return!/^((?!chrome|android).)*safari/i.test(Bt())}function Ft(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&St(t)&&(o=t.offsetWidth>0&&Mt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Mt(i.height)/t.offsetHeight||1);var s=(Lt(t)?Tt(t):window).visualViewport,a=!It()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function Ht(t){var e=Ft(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function qt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&jt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function zt(t){return Tt(t).getComputedStyle(t)}function Wt(t){return["table","td","th"].indexOf(Ct(t))>=0}function Rt(t){return((Lt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vt(t){return"html"===Ct(t)?t:t.assignedSlot||t.parentNode||(jt(t)?t.host:null)||Rt(t)}function Yt(t){return St(t)&&"fixed"!==zt(t).position?t.offsetParent:null}function Ut(t){for(var e=Tt(t),n=Yt(t);n&&Wt(n)&&"static"===zt(n).position;)n=Yt(n);return n&&("html"===Ct(n)||"body"===Ct(n)&&"static"===zt(n).position)?e:n||function(t){var e=/firefox/i.test(Bt());if(/Trident/i.test(Bt())&&St(t)&&"fixed"===zt(t).position)return null;var n=Vt(t);for(jt(n)&&(n=n.host);St(n)&&["html","body"].indexOf(Ct(n))<0;){var i=zt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t,e,n){return Pt(t,Nt(e,n))}function Gt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Xt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var $t={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Dt(n.placement),c=Kt(a),l=[rt,ot].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Gt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Xt(t,at))}(o.padding,n),f=Ht(r),d="y"===c?nt:rt,p="y"===c?it:ot,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Ut(r),b=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Qt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&qt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Jt(t){return t.split("-")[1]}var Zt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=rt,_=nt,w=window;if(l){var E=Ut(n),O="clientHeight",A="clientWidth";if(E===Tt(n)&&"static"!==zt(E=Rt(n)).position&&"absolute"===a&&(O="scrollHeight",A="scrollWidth"),o===nt||(o===rt||o===ot)&&r===lt)_=it,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===rt||(o===nt||o===it)&&r===lt)y=ot,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[A])-i.width,p*=c?1:-1}var x,C=Object.assign({position:a},l&&Zt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Mt(n*o)/o||0,y:Mt(i*o)/o||0}}({x:p,y:m},Tt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((x={})[_]=v?"0":"",x[y]=b?"0":"",x.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",x)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ee={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:Dt(e.placement),variation:Jt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,te(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,te(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ne={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ne)})),a&&c.addEventListener("resize",n.update,ne),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ne)})),a&&c.removeEventListener("resize",n.update,ne)}},data:{}},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t){return t.replace(/left|right|bottom|top/g,(function(t){return oe[t]}))}var se={start:"end",end:"start"};function ae(t){return t.replace(/start|end/g,(function(t){return se[t]}))}function ce(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function le(t){return Ft(Rt(t)).left+ce(t).scrollLeft}function ue(t){var e=zt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function fe(t){return["html","body","#document"].indexOf(Ct(t))>=0?t.ownerDocument.body:St(t)&&ue(t)?t:fe(Vt(t))}function de(t,e){var n;void 0===e&&(e=[]);var i=fe(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],ue(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(de(Vt(s)))}function pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function he(t,e,n){return e===ft?pe(function(t,e){var n=Tt(t),i=Rt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=It();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+le(t),y:c}}(t,n)):Lt(e)?function(t,e){var n=Ft(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):pe(function(t){var e,n=Rt(t),i=ce(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Pt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Pt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+le(t),c=-i.scrollTop;return"rtl"===zt(o||n).direction&&(a+=Pt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Rt(t)))}function me(t,e,n,i){var o="clippingParents"===e?function(t){var e=de(Vt(t)),n=["absolute","fixed"].indexOf(zt(t).position)>=0&&St(t)?Ut(t):t;return Lt(n)?e.filter((function(t){return Lt(t)&&qt(t,n)&&"body"!==Ct(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=he(t,n,i);return e.top=Pt(o.top,e.top),e.right=Nt(o.right,e.right),e.bottom=Nt(o.bottom,e.bottom),e.left=Pt(o.left,e.left),e}),he(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ge(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Dt(o):null,s=o?Jt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case nt:e={x:a,y:n.y-i.height};break;case it:e={x:a,y:n.y+n.height};break;case ot:e={x:n.x+n.width,y:c};break;case rt:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Kt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case ct:e[l]=e[l]-(n[u]/2-i[u]/2);break;case lt:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ut:a,l=n.rootBoundary,u=void 0===l?ft:l,f=n.elementContext,d=void 0===f?dt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Gt("number"!=typeof g?g:Xt(g,at)),v=d===dt?pt:dt,y=t.rects.popper,_=t.elements[h?v:d],w=me(Lt(_)?_:_.contextElement||Rt(t.elements.popper),c,u,s),E=Ft(t.elements.reference),O=ge({reference:E,element:y,strategy:"absolute",placement:o}),A=pe(Object.assign({},y,O)),x=d===dt?A:E,C={top:w.top-x.top+b.top,bottom:x.bottom-w.bottom+b.bottom,left:w.left-x.left+b.left,right:x.right-w.right+b.right},T=t.modifiersData.offset;if(d===dt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[ot,it].indexOf(t)>=0?1:-1,n=[nt,it].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?mt:c,u=Jt(i),f=u?a?ht:ht.filter((function(t){return Jt(t)===u})):at,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Dt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ye={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=Dt(g),v=c||(b===g||!h?[re(g)]:function(t){if(Dt(t)===st)return[];var e=re(t);return[ae(t),e,ae(e)]}(g)),y=[g].concat(v).reduce((function(t,n){return t.concat(Dt(n)===st?ve(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,A=y[0],x=0;x=0,j=S?"width":"height",k=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),D=S?L?ot:rt:L?it:nt;_[j]>w[j]&&(D=re(D));var P=re(D),N=[];if(r&&N.push(k[T]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every((function(t){return t}))){A=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return A=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==A&&(e.modifiersData[i]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _e(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function we(t){return[nt,ot,it,rt].some((function(e){return t[e]>=0}))}var Ee={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=_e(s,i),l=_e(a,o,r),u=we(c),f=we(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=mt.reduce((function(t,n){return t[n]=function(t,e,n){var i=Dt(t),o=[rt,nt].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[rt,ot].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ge({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var xe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=Dt(e.placement),v=Jt(e.placement),y=!v,_=Kt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,A=e.rects.popper,x="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?nt:rt,k="y"===_?it:ot,D="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[k],B=p?-A[D]/2:0,I=v===ct?O[D]:A[D],F=v===ct?-A[D]:-O[D],H=e.elements.arrow,q=p&&H?Ht(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],V=Qt(0,O[D],q[D]),Y=y?O[D]/2-B-V-W-C.mainAxis:I-V-W-C.mainAxis,U=y?-O[D]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=e.elements.arrow&&Ut(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,G=null!=(S=null==T?void 0:T[_])?S:0,X=P+U-G,$=Qt(p?Nt(N,P+Y-G-Q):N,P,p?Pt(M,X):M);E[_]=$,L[_]=$-P}if(a){var J,Z="x"===_?nt:rt,tt="x"===_?it:ot,et=E[w],st="y"===w?"height":"width",at=et+g[Z],lt=et-g[tt],ut=-1!==[nt,rt].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[st]-A[st]-ft+C.altAxis,pt=ut?et+O[st]+A[st]-ft-C.altAxis:lt,ht=p&&ut?function(t,e,n){var i=Qt(t,e,n);return i>n?n:i}(dt,et,pt):Qt(p?dt:at,et,p?pt:lt);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ce(t,e,n){void 0===n&&(n=!1);var i,o,r=St(e),s=St(e)&&function(t){var e=t.getBoundingClientRect(),n=Mt(e.width)/t.offsetWidth||1,i=Mt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Rt(e),c=Ft(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ct(e)||ue(a))&&(l=(i=e)!==Tt(i)&&St(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ce(i)),St(e)?((u=Ft(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=le(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Le={placement:"bottom",modifiers:[],strategy:"absolute"};function Se(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Be.has(n)||Boolean(Ie.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const He={allowList:Me,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},qe={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ze={entry:"(string|element|function|null)",selector:"(string|element)"};class We extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return He}static get DefaultType(){return qe}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},ze)}_setContent(t,e,n){const i=z.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Fe(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Re=new Set(["sanitize","allowList","sanitizeFn"]),Ve="fade",Ye="show",Ue=".tooltip-inner",Ke=".".concat("modal"),Qe="hide.bs.modal",Ge="hover",Xe="focus",$e={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Je={allowList:Me,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ze={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tn extends H{constructor(t,e){if(void 0===Ne)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Je}static get DefaultType(){return Ze}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Ke),Qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Xe]=!1,this._activeTrigger[Ge]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ve,Ye),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ve),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new We(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ue]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ve)}_isShown(){return this.tip&&this.tip.classList.contains(Ye)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=$e[e.toUpperCase()];return Pe(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ge?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ge?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Xe:Ge]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Xe:Ge]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Ke),Qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=I.getDataAttributes(this._element);for(const t of Object.keys(e))Re.has(t)&&delete e[t];return t=N(N({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=tn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}f(tn);const en=".code-header>button",nn="timeout",on="data-title-succeed",rn="data-bs-original-title",sn=2e3;function an(t){if(t.hasAttribute(nn)){let e=t.getAttribute(nn);if(Number(e)>Date.now())return!0}return!1}function cn(t){t.setAttribute(nn,Date.now()+sn)}function ln(t){t.removeAttribute(nn)}function un(){const t=document.querySelectorAll(en);if(0===t.length)return;const e=new ClipboardJS(en,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map((t=>new tn(t,{placement:"left"}))),e.on("success",(t=>{const e=t.trigger;(t.clearSelection(),an(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(on);t.setAttribute(rn,e),tn.getInstance(t).show()}(e),cn(e),setTimeout((()=>{!function(t){tn.getInstance(t).hide(),t.removeAttribute(rn)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),ln(e)}),sn))}))}const fn="data-src",dn="data-lqip",pn="shimmer",hn="blur";function mn(t){this.parentElement.classList.remove(t)}function gn(){this.complete&&(this.hasAttribute(dn)?mn.call(this,hn):mn.call(this,pn))}function bn(){const t=this.getAttribute(fn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(fn)}const vn=".popup:not(.dark)",yn=".popup:not(.light)";let _n=vn;var wn;const En=document.getElementById("toc-bar"),On=document.getElementById("toc-solo-trigger"),An=document.getElementsByClassName("toc-trigger"),xn=document.getElementById("toc-popup"),Cn=document.getElementById("toc-popup-close"),Tn="overflow-hidden",Ln="closing";class Sn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{En.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(k(Sn,this,kn)._,"px 0px 0px 0px")}).observe(On),jn._=k(Sn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){k(Sn,this,jn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return xn.open}static showPopup(){this.lockScroll(!0),xn.showModal();xn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){xn.toggleAttribute(Ln),xn.addEventListener("animationend",(()=>{xn.toggleAttribute(Ln),xn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Tn,t),document.body.classList.toggle(Tn,t)}static clickBackdrop(t){if(xn.hasAttribute(Ln))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...An].forEach((t=>{t.onclick=()=>this.showPopup()})),xn.onclick=t=>this.clickBackdrop(t),Cn.onclick=()=>this.hidePopup(),xn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var jn={_:!0},kn={_:48};D(Sn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:k(wn=Sn,wn,kn)._});D(class{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)");const Dn="mermaid",Pn=Theme.getThemeMapper("default","dark");function Nn(t){if(t.source===window&&t.data&&t.data.id===Theme.ID){[...document.getElementsByClassName(Dn)].forEach((t=>{const e=t.previousSibling.children.item(0).textContent;t.textContent=e,t.removeAttribute("data-processed")}));const t=Pn[Theme.visualState];mermaid.initialize({theme:t}),mermaid.init(null,".".concat(Dn))}}function Mn(t){const e=t.textContent,n=t.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Dn);const o=document.createTextNode(e);i.appendChild(o),n.after(i)}const Bn=document.getElementById("mode-toggle");const In=document.getElementById("sidebar"),Fn=document.getElementById("sidebar-trigger"),Hn=document.getElementById("mask");class qn{static toggle(){zn._=k(qn,this,!k(qn,this,zn)._),document.body.toggleAttribute("sidebar-display",k(qn,this,zn)._),In.classList.toggle("z-2",k(qn,this,zn)._),Hn.classList.toggle("d-none",!k(qn,this,zn)._)}}var zn={_:!1};const Wn=document.getElementById("sidebar-trigger"),Rn=document.getElementById("search-trigger"),Vn=document.getElementById("search-cancel"),Yn=document.querySelectorAll("#main-wrapper>.container>.row"),Un=document.getElementById("topbar-title"),Kn=document.getElementById("search"),Qn=document.getElementById("search-result-wrapper"),Gn=document.getElementById("search-results"),Xn=document.getElementById("search-input"),$n=document.getElementById("search-hints"),Jn="d-block",Zn="d-none",ti="input-focus",ei="d-flex";class ni{static on(){Wn.classList.add(Zn),Un.classList.add(Zn),Rn.classList.add(Zn),Kn.classList.add(ei),Vn.classList.add(Jn)}static off(){Vn.classList.remove(Jn),Kn.classList.remove(ei),Wn.classList.remove(Zn),Un.classList.remove(Zn),Rn.classList.remove(Zn)}}class ii{static on(){this.resultVisible||(Qn.classList.remove(Zn),Yn.forEach((t=>{t.classList.add(Zn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Gn.innerHTML="",$n.classList.contains(Zn)&&$n.classList.remove(Zn),Qn.classList.add(Zn),Yn.forEach((t=>{t.classList.remove(Zn)})),Xn.textContent="",this.resultVisible=!1)}}function oi(){return Vn.classList.contains(Jn)}D(ii,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",gn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&mn.call(t,pn)}));const e=document.querySelectorAll("article img[".concat(dn,'="true"]'));e.length&&e.forEach((t=>{bn.call(t)}))}(),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(_n=yn);let e=GLightbox({selector:"".concat(_n)});if(t&&Theme.switchable){let t=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(t,e){_n=_n===vn?yn:vn,null===e&&(e=GLightbox({selector:"".concat(_n)})),[t,e]=[e,t]}(e,t)}))}}(),Fn.onclick=Hn.onclick=()=>qn.toggle(),Rn.addEventListener("click",(()=>{ni.on(),ii.on(),Xn.focus()})),Vn.addEventListener("click",(()=>{ni.off(),ii.off()})),Xn.addEventListener("focus",(()=>{Kn.classList.add(ti)})),Xn.addEventListener("focusout",(()=>{Kn.classList.remove(ti)})),Xn.addEventListener("input",(()=>{""===Xn.value?oi()?$n.classList.remove(Zn):ii.off():(ii.on(),oi()&&$n.classList.add(Zn))})),un(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",(t=>{const e=t.target;an(e)||navigator.clipboard.writeText(window.location.href).then((()=>{const t=e.getAttribute(rn),n=e.getAttribute(on);e.setAttribute(rn,n),tn.getInstance(e).show(),cn(e),setTimeout((()=>{e.setAttribute(rn,t),ln(e)}),sn)}))})),t.addEventListener("mouseleave",(t=>{tn.getInstance(t.target).hide()})))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let t={theme:Pn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Mn),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",Nn)}(),Bn&&Bn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new tn(t)))}(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 00000000000..1b8c3d6a7df --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(o.keys())[0],"."))},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>"#".concat(CSS.escape(e))))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},c=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=c();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of l)t()})),l.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&"".concat(e,"::").concat(v++)||t.uidEvent||v++}function E(t){const e=w(t);return t.uidEvent=e,b[e]=b[e]||{},b[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function A(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function x(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=A(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const c=E(t),l=c[a]||(c[a]={}),u=O(l,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,l[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){x(t,e,n,i,!1)},one(t,e,n,i){x(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=A(e,n,i),a=s!==e,c=E(t),l=c[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(c))T(t,c,n,e.slice(1));for(const[n,i]of Object.entries(l)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,c,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(l).length)return;C(t,c,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=c();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const l=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&l.preventDefault(),s&&t.dispatchEvent(l),l.defaultPrevented&&o&&o.preventDefault(),l}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch(e){Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function D(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function k(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function N(t){for(var e=1;e"-".concat(t.toLowerCase())))}const I={setDataAttribute(t,e,n){t.setAttribute("data-bs-".concat(B(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-bs-".concat(B(e)))},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=M(t.dataset[i])}return e},getDataAttribute:(t,e)=>M(t.getAttribute("data-bs-".concat(B(e))))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?I.getDataAttribute(e,"config"):{};return N(N(N(N({},this.constructor.Default),"object"==typeof n?n:{}),o(e)?I.getDataAttributes(e):{}),"object"==typeof t?t:{})}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?"".concat(n):Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError("".concat(this.constructor.NAME.toUpperCase(),': Option "').concat(i,'" provided type "').concat(s,'" but expected type "').concat(r,'".'))}var n}}class H extends F{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return"bs.".concat(this.NAME)}static get EVENT_KEY(){return".".concat(this.DATA_KEY)}static eventName(t){return"".concat(t).concat(this.EVENT_KEY)}}const q=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},z={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>"".concat(t,':not([tabindex^="-"])'))).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=q(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=q(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=q(t);return e?z.find(e):[]}},W=".".concat("bs.collapse"),R="show".concat(W),V="shown".concat(W),Y="hide".concat(W),U="hidden".concat(W),K="click".concat(W).concat(".data-api"),Q="show",G="collapse",X="collapsing",$=":scope .".concat(G," .").concat(G),J='[data-bs-toggle="collapse"]',Z={parent:null,toggle:!0},tt={parent:"(null|element)",toggle:"boolean"};class et extends H{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=z.find(J);for(const t of n){const e=z.getSelectorFromElement(t),n=z.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Z}static get DefaultType(){return tt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>et.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,R).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(G),this._element.classList.add(X),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=e[0].toUpperCase()+e.slice(1),i="scroll".concat(n);this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(X),this._element.classList.add(G,Q),this._element.style[e]="",S.trigger(this._element,V)}),this._element,!0),this._element.style[e]="".concat(this._element[i],"px")}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,Y).defaultPrevented)return;const t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),this._element.offsetHeight,this._element.classList.add(X),this._element.classList.remove(G,Q);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(X),this._element.classList.add(G),S.trigger(this._element,U)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(J);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find($,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'.concat(t,'"'));n[t]()}}))}}S.on(document,K,J,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))et.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(et),document.getElementsByClassName("collapse");var nt="top",it="bottom",ot="right",rt="left",st="auto",at=[nt,it,ot,rt],ct="start",lt="end",ut="clippingParents",ft="viewport",dt="popper",pt="reference",ht=at.reduce((function(t,e){return t.concat([e+"-"+ct,e+"-"+lt])}),[]),mt=[].concat(at,[st]).reduce((function(t,e){return t.concat([e,e+"-"+ct,e+"-"+lt])}),[]),gt="beforeRead",bt="read",vt="afterRead",yt="beforeMain",_t="main",wt="afterMain",Et="beforeWrite",Ot="write",At="afterWrite",xt=[gt,bt,vt,yt,_t,wt,Et,Ot,At];function Ct(t){return t?(t.nodeName||"").toLowerCase():null}function Tt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Lt(t){return t instanceof Tt(t).Element||t instanceof Element}function St(t){return t instanceof Tt(t).HTMLElement||t instanceof HTMLElement}function jt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Tt(t).ShadowRoot||t instanceof ShadowRoot)}var Dt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];St(o)&&Ct(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});St(i)&&Ct(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function kt(t){return t.split("-")[0]}var Pt=Math.max,Nt=Math.min,Mt=Math.round;function Bt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function It(){return!/^((?!chrome|android).)*safari/i.test(Bt())}function Ft(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&St(t)&&(o=t.offsetWidth>0&&Mt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&Mt(i.height)/t.offsetHeight||1);var s=(Lt(t)?Tt(t):window).visualViewport,a=!It()&&n,c=(i.left+(a&&s?s.offsetLeft:0))/o,l=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function Ht(t){var e=Ft(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function qt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&jt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function zt(t){return Tt(t).getComputedStyle(t)}function Wt(t){return["table","td","th"].indexOf(Ct(t))>=0}function Rt(t){return((Lt(t)?t.ownerDocument:t.document)||window.document).documentElement}function Vt(t){return"html"===Ct(t)?t:t.assignedSlot||t.parentNode||(jt(t)?t.host:null)||Rt(t)}function Yt(t){return St(t)&&"fixed"!==zt(t).position?t.offsetParent:null}function Ut(t){for(var e=Tt(t),n=Yt(t);n&&Wt(n)&&"static"===zt(n).position;)n=Yt(n);return n&&("html"===Ct(n)||"body"===Ct(n)&&"static"===zt(n).position)?e:n||function(t){var e=/firefox/i.test(Bt());if(/Trident/i.test(Bt())&&St(t)&&"fixed"===zt(t).position)return null;var n=Vt(t);for(jt(n)&&(n=n.host);St(n)&&["html","body"].indexOf(Ct(n))<0;){var i=zt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qt(t,e,n){return Pt(t,Nt(e,n))}function Gt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Xt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var $t={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=kt(n.placement),c=Kt(a),l=[rt,ot].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Gt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Xt(t,at))}(o.padding,n),f=Ht(r),d="y"===c?nt:rt,p="y"===c?it:ot,h=n.rects.reference[l]+n.rects.reference[c]-s[c]-n.rects.popper[l],m=s[c]-n.rects.reference[c],g=Ut(r),b=g?"y"===c?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[d],_=b-f[l]-u[p],w=b/2-f[l]/2+v,E=Qt(y,w,_),O=c;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&qt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Jt(t){return t.split("-")[1]}var Zt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=rt,_=nt,w=window;if(l){var E=Ut(n),O="clientHeight",A="clientWidth";if(E===Tt(n)&&"static"!==zt(E=Rt(n)).position&&"absolute"===a&&(O="scrollHeight",A="scrollWidth"),o===nt||(o===rt||o===ot)&&r===lt)_=it,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=c?1:-1;if(o===rt||(o===nt||o===it)&&r===lt)y=ot,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[A])-i.width,p*=c?1:-1}var x,C=Object.assign({position:a},l&&Zt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:Mt(n*o)/o||0,y:Mt(i*o)/o||0}}({x:p,y:m},Tt(n)):{x:p,y:m};return p=T.x,m=T.y,c?Object.assign({},C,((x={})[_]=v?"0":"",x[y]=b?"0":"",x.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",x)):Object.assign({},C,((e={})[_]=v?m+"px":"",e[y]=b?p+"px":"",e.transform="",e))}var ee={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,c=void 0===a||a,l={placement:kt(e.placement),variation:Jt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,te(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,te(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},ne={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,c=Tt(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener("scroll",n.update,ne)})),a&&c.addEventListener("resize",n.update,ne),function(){r&&l.forEach((function(t){t.removeEventListener("scroll",n.update,ne)})),a&&c.removeEventListener("resize",n.update,ne)}},data:{}},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function re(t){return t.replace(/left|right|bottom|top/g,(function(t){return oe[t]}))}var se={start:"end",end:"start"};function ae(t){return t.replace(/start|end/g,(function(t){return se[t]}))}function ce(t){var e=Tt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function le(t){return Ft(Rt(t)).left+ce(t).scrollLeft}function ue(t){var e=zt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function fe(t){return["html","body","#document"].indexOf(Ct(t))>=0?t.ownerDocument.body:St(t)&&ue(t)?t:fe(Vt(t))}function de(t,e){var n;void 0===e&&(e=[]);var i=fe(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Tt(i),s=o?[r].concat(r.visualViewport||[],ue(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(de(Vt(s)))}function pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function he(t,e,n){return e===ft?pe(function(t,e){var n=Tt(t),i=Rt(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=It();(l||!l&&"fixed"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+le(t),y:c}}(t,n)):Lt(e)?function(t,e){var n=Ft(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):pe(function(t){var e,n=Rt(t),i=ce(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Pt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Pt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+le(t),c=-i.scrollTop;return"rtl"===zt(o||n).direction&&(a+=Pt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(Rt(t)))}function me(t,e,n,i){var o="clippingParents"===e?function(t){var e=de(Vt(t)),n=["absolute","fixed"].indexOf(zt(t).position)>=0&&St(t)?Ut(t):t;return Lt(n)?e.filter((function(t){return Lt(t)&&qt(t,n)&&"body"!==Ct(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=he(t,n,i);return e.top=Pt(o.top,e.top),e.right=Nt(o.right,e.right),e.bottom=Nt(o.bottom,e.bottom),e.left=Pt(o.left,e.left),e}),he(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ge(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?kt(o):null,s=o?Jt(o):null,a=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case nt:e={x:a,y:n.y-i.height};break;case it:e={x:a,y:n.y+n.height};break;case ot:e={x:n.x+n.width,y:c};break;case rt:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?Kt(r):null;if(null!=l){var u="y"===l?"height":"width";switch(s){case ct:e[l]=e[l]-(n[u]/2-i[u]/2);break;case lt:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}function be(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,c=void 0===a?ut:a,l=n.rootBoundary,u=void 0===l?ft:l,f=n.elementContext,d=void 0===f?dt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Gt("number"!=typeof g?g:Xt(g,at)),v=d===dt?pt:dt,y=t.rects.popper,_=t.elements[h?v:d],w=me(Lt(_)?_:_.contextElement||Rt(t.elements.popper),c,u,s),E=Ft(t.elements.reference),O=ge({reference:E,element:y,strategy:"absolute",placement:o}),A=pe(Object.assign({},y,O)),x=d===dt?A:E,C={top:w.top-x.top+b.top,bottom:x.bottom-w.bottom+b.bottom,left:w.left-x.left+b.left,right:x.right-w.right+b.right},T=t.modifiersData.offset;if(d===dt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[ot,it].indexOf(t)>=0?1:-1,n=[nt,it].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function ve(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?mt:c,u=Jt(i),f=u?a?ht:ht.filter((function(t){return Jt(t)===u})):at,d=f.filter((function(t){return l.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=be(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[kt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var ye={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,b=kt(g),v=c||(b===g||!h?[re(g)]:function(t){if(kt(t)===st)return[];var e=re(t);return[ae(t),e,ae(e)]}(g)),y=[g].concat(v).reduce((function(t,n){return t.concat(kt(n)===st?ve(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,A=y[0],x=0;x=0,j=S?"width":"height",D=be(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:l}),k=S?L?ot:rt:L?it:nt;_[j]>w[j]&&(k=re(k));var P=re(k),N=[];if(r&&N.push(D[T]<=0),a&&N.push(D[k]<=0,D[P]<=0),N.every((function(t){return t}))){A=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return A=e,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}e.placement!==A&&(e.modifiersData[i]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _e(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function we(t){return[nt,ot,it,rt].some((function(e){return t[e]>=0}))}var Ee={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=be(e,{elementContext:"reference"}),a=be(e,{altBoundary:!0}),c=_e(s,i),l=_e(a,o,r),u=we(c),f=we(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var Oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=mt.reduce((function(t,n){return t[n]=function(t,e,n){var i=kt(t),o=[rt,nt].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[rt,ot].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],c=a.x,l=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=s}};var Ae={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=ge({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var xe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=be(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),b=kt(e.placement),v=Jt(e.placement),y=!v,_=Kt(b),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,A=e.rects.popper,x="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof x?{mainAxis:x,altAxis:x}:Object.assign({mainAxis:0,altAxis:0},x),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?nt:rt,D="y"===_?it:ot,k="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[D],B=p?-A[k]/2:0,I=v===ct?O[k]:A[k],F=v===ct?-A[k]:-O[k],H=e.elements.arrow,q=p&&H?Ht(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[D],V=Qt(0,O[k],q[k]),Y=y?O[k]/2-B-V-W-C.mainAxis:I-V-W-C.mainAxis,U=y?-O[k]/2+B+V+R+C.mainAxis:F+V+R+C.mainAxis,K=e.elements.arrow&&Ut(e.elements.arrow),Q=K?"y"===_?K.clientTop||0:K.clientLeft||0:0,G=null!=(S=null==T?void 0:T[_])?S:0,X=P+U-G,$=Qt(p?Nt(N,P+Y-G-Q):N,P,p?Pt(M,X):M);E[_]=$,L[_]=$-P}if(a){var J,Z="x"===_?nt:rt,tt="x"===_?it:ot,et=E[w],st="y"===w?"height":"width",at=et+g[Z],lt=et-g[tt],ut=-1!==[nt,rt].indexOf(b),ft=null!=(J=null==T?void 0:T[w])?J:0,dt=ut?at:et-O[st]-A[st]-ft+C.altAxis,pt=ut?et+O[st]+A[st]-ft-C.altAxis:lt,ht=p&&ut?function(t,e,n){var i=Qt(t,e,n);return i>n?n:i}(dt,et,pt):Qt(p?dt:at,et,p?pt:lt);E[w]=ht,L[w]=ht-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ce(t,e,n){void 0===n&&(n=!1);var i,o,r=St(e),s=St(e)&&function(t){var e=t.getBoundingClientRect(),n=Mt(e.width)/t.offsetWidth||1,i=Mt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Rt(e),c=Ft(t,s,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ct(e)||ue(a))&&(l=(i=e)!==Tt(i)&&St(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ce(i)),St(e)?((u=Ft(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=le(a))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function Te(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Le={placement:"bottom",modifiers:[],strategy:"absolute"};function Se(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!Be.has(n)||Boolean(Ie.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const He={allowList:Me,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},qe={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ze={entry:"(string|element|function|null)",selector:"(string|element)"};class We extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return He}static get DefaultType(){return qe}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content=N(N({},this._config.content),t),this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},ze)}_setContent(t,e,n){const i=z.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Fe(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Re=new Set(["sanitize","allowList","sanitizeFn"]),Ve="fade",Ye="show",Ue=".tooltip-inner",Ke=".".concat("modal"),Qe="hide.bs.modal",Ge="hover",Xe="focus",$e={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Je={allowList:Me,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ze={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tn extends H{constructor(t,e){if(void 0===Ne)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Je}static get DefaultType(){return Ze}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Ke),Qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Ye),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Xe]=!1,this._activeTrigger[Ge]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ve,Ye),e.classList.add("bs-".concat(this.constructor.NAME,"-auto"));const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add(Ve),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new We(N(N({},this._config),{},{content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}_getContentForTemplate(){return{[Ue]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ve)}_isShown(){return this.tip&&this.tip.classList.contains(Ye)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=$e[e.toUpperCase()];return Pe(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return N(N({},e),d(this._config.popperConfig,[e]))}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ge?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ge?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Xe:Ge]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Xe:Ge]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Ke),Qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=I.getDataAttributes(this._element);for(const t of Object.keys(e))Re.has(t)&&delete e[t];return t=N(N({},e),"object"==typeof t&&t?t:{}),t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=tn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'.concat(t,'"'));e[t]()}}))}}f(tn);const en=".code-header>button",nn="timeout",on="data-title-succeed",rn="data-bs-original-title",sn=2e3;function an(t){if(t.hasAttribute(nn)){let e=t.getAttribute(nn);if(Number(e)>Date.now())return!0}return!1}function cn(t){t.setAttribute(nn,Date.now()+sn)}function ln(t){t.removeAttribute(nn)}function un(){const t=document.querySelectorAll(en);if(0===t.length)return;const e=new ClipboardJS(en,{target:t=>t.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...t].map((t=>new tn(t,{placement:"left"}))),e.on("success",(t=>{const e=t.trigger;(t.clearSelection(),an(e))||(e.children[0].setAttribute("class","fas fa-check"),function(t){const e=t.getAttribute(on);t.setAttribute(rn,e),tn.getInstance(t).show()}(e),cn(e),setTimeout((()=>{!function(t){tn.getInstance(t).hide(),t.removeAttribute(rn)}(e),function(t){t.children[0].setAttribute("class","far fa-clipboard")}(e),ln(e)}),sn))}))}const fn="data-src",dn="data-lqip",pn="shimmer",hn="blur";function mn(t){this.parentElement.classList.remove(t)}function gn(){this.complete&&(this.hasAttribute(dn)?mn.call(this,hn):mn.call(this,pn))}function bn(){const t=this.getAttribute(fn);this.setAttribute("src",encodeURI(t)),this.removeAttribute(fn)}const vn=".popup:not(.dark)",yn=".popup:not(.light)";let _n=vn;class wn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}var En;const On=document.getElementById("toc-bar"),An=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),Cn=document.getElementById("toc-popup"),Tn=document.getElementById("toc-popup-close"),Ln="overflow-hidden",Sn="closing";class jn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{On.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:"-".concat(D(jn,this,kn)._,"px 0px 0px 0px")}).observe(An),Dn._=D(jn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){D(jn,this,Dn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Cn.open}static showPopup(){this.lockScroll(!0),Cn.showModal();Cn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Cn.toggleAttribute(Sn),Cn.addEventListener("animationend",(()=>{Cn.toggleAttribute(Sn),Cn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(Ln,t),document.body.classList.toggle(Ln,t)}static clickBackdrop(t){if(Cn.hasAttribute(Sn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach((t=>{t.onclick=()=>this.showPopup()})),Cn.onclick=t=>this.clickBackdrop(t),Tn.onclick=()=>this.hidePopup(),Cn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Dn={_:!0},kn={_:48};k(jn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:D(En=jn,En,kn)._});class Pn{static refresh(){tocbot.refresh(this.options)}static init(){tocbot.init(this.options)}}k(Pn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const Nn=matchMedia("(min-width: 1200px)");function Mn(t){t.matches?(jn.popupOpened&&jn.hidePopup(),Pn.refresh()):jn.refresh()}const Bn="mermaid",In=Theme.getThemeMapper("default","dark");function Fn(t){if(t.source===window&&t.data&&t.data.id===Theme.ID){[...document.getElementsByClassName(Bn)].forEach((t=>{const e=t.previousSibling.children.item(0).textContent;t.textContent=e,t.removeAttribute("data-processed")}));const t=In[Theme.visualState];mermaid.initialize({theme:t}),mermaid.init(null,".".concat(Bn))}}function Hn(t){const e=t.textContent,n=t.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Bn);const o=document.createTextNode(e);i.appendChild(o),n.after(i)}const qn=document.getElementById("mode-toggle");const zn=document.getElementById("sidebar"),Wn=document.getElementById("sidebar-trigger"),Rn=document.getElementById("mask");class Vn{static toggle(){Yn._=D(Vn,this,!D(Vn,this,Yn)._),document.body.toggleAttribute("sidebar-display",D(Vn,this,Yn)._),zn.classList.toggle("z-2",D(Vn,this,Yn)._),Rn.classList.toggle("d-none",!D(Vn,this,Yn)._)}}var Yn={_:!1};const Un=document.getElementById("sidebar-trigger"),Kn=document.getElementById("search-trigger"),Qn=document.getElementById("search-cancel"),Gn=document.querySelectorAll("#main-wrapper>.container>.row"),Xn=document.getElementById("topbar-title"),$n=document.getElementById("search"),Jn=document.getElementById("search-result-wrapper"),Zn=document.getElementById("search-results"),ti=document.getElementById("search-input"),ei=document.getElementById("search-hints"),ni="d-block",ii="d-none",oi="input-focus",ri="d-flex";class si{static on(){Un.classList.add(ii),Xn.classList.add(ii),Kn.classList.add(ii),$n.classList.add(ri),Qn.classList.add(ni)}static off(){Qn.classList.remove(ni),$n.classList.remove(ri),Un.classList.remove(ii),Xn.classList.remove(ii),Kn.classList.remove(ii)}}class ai{static on(){this.resultVisible||(Jn.classList.remove(ii),Gn.forEach((t=>{t.classList.add(ii)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Zn.innerHTML="",ei.classList.contains(ii)&&ei.classList.remove(ii),Jn.classList.add(ii),Gn.forEach((t=>{t.classList.remove(ii)})),ti.textContent="",this.resultVisible=!1)}}function ci(){return Qn.classList.contains(ni)}k(ai,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",gn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&mn.call(t,pn)}));const e=document.querySelectorAll("article img[".concat(dn,'="true"]'));e.length&&e.forEach((t=>{bn.call(t)}))}(),function(){if(null===document.querySelector('main>article[data-toc="true"]'))return;Nn.matches?Pn.init():jn.init(),document.getElementById("toc-wrapper").classList.remove("invisible"),Nn.onchange=Mn}(),function(){if(null===document.querySelector(".popup"))return;const t=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(_n=yn);let e=GLightbox({selector:"".concat(_n)});if(t&&Theme.switchable){let t=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(t,e){_n=_n===vn?yn:vn,null===e&&(e=GLightbox({selector:"".concat(_n)})),[t,e]=[e,t]}(e,t)}))}}(),Wn.onclick=Rn.onclick=()=>Vn.toggle(),dayjs.locale(wn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll("[".concat(wn.attrTimestamp,"]")).forEach((t=>{const e=dayjs.unix(wn.getTimestamp(t)),n=e.format(wn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(wn.attrTimestamp),t.removeAttribute(wn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),un(),function(){const t=document.getElementById("copy-link");null!==t&&(t.addEventListener("click",(t=>{const e=t.target;an(e)||navigator.clipboard.writeText(window.location.href).then((()=>{const t=e.getAttribute(rn),n=e.getAttribute(on);e.setAttribute(rn,n),tn.getInstance(e).show(),cn(e),setTimeout((()=>{e.setAttribute(rn,t),ln(e)}),sn)}))})),t.addEventListener("mouseleave",(t=>{tn.getInstance(t.target).hide()})))}(),Kn.addEventListener("click",(()=>{si.on(),ai.on(),ti.focus()})),Qn.addEventListener("click",(()=>{si.off(),ai.off()})),ti.addEventListener("focus",(()=>{$n.classList.add(oi)})),ti.addEventListener("focusout",(()=>{$n.classList.remove(oi)})),ti.addEventListener("input",(()=>{""===ti.value?ci()?ei.classList.remove(ii):ai.off():(ai.on(),ci()&&ei.classList.add(ii))})),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let t={theme:In[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Hn),mermaid.initialize(t),Theme.switchable&&window.addEventListener("message",Fn)}(),qn&&qn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new tn(t)))}(); diff --git a/assets/js/dist/sw.min.js b/assets/js/dist/sw.min.js new file mode 100644 index 00000000000..04e48e95335 --- /dev/null +++ b/assets/js/dist/sw.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";importScripts("./assets/js/data/swconf.js");const e=swconf.purge,t=swconf.interceptor;self.addEventListener("install",(t=>{e||t.waitUntil(caches.open(swconf.cacheName).then((e=>e.addAll(swconf.resources))))})),self.addEventListener("activate",(t=>{t.waitUntil(caches.keys().then((t=>Promise.all(t.map((t=>e||t!==swconf.cacheName?caches.delete(t):void 0))))))})),self.addEventListener("message",(e=>{"SKIP_WAITING"===e.data&&self.skipWaiting()})),self.addEventListener("fetch",(s=>{s.request.headers.has("range")||s.respondWith(caches.match(s.request).then((n=>n||fetch(s.request).then((n=>{const r=s.request.url;if(e||"GET"!==s.request.method||!function(e){const s=new URL(e),n=s.pathname;if(!s.protocol.startsWith("http"))return!1;for(const e of t.urlPrefixes)if(s.href.startsWith(e))return!1;for(const e of t.paths)if(n.startsWith(e))return!1;return!0}(r))return n;let a=n.clone();return caches.open(swconf.cacheName).then((e=>{e.put(s.request,a)})),n})))))}))}(); diff --git a/assets/js/dist/theme.min.js b/assets/js/dist/theme.min.js new file mode 100644 index 00000000000..9c6adaa72ca --- /dev/null +++ b/assets/js/dist/theme.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.2.4 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +var Theme=function(){"use strict";function t(t,e,i){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:i;throw new TypeError("Private element is not present on this object")}function e(e,i,s){return s(t(e,i))}var i;class s{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(s,this,o)?e(s,this,n):e(s,this,h)?this.DARK:this.LIGHT}static getThemeMapper(t,e){return{[this.LIGHT]:t,[this.DARK]:e}}static init(){this.switchable&&(t(s,this,b)._.addEventListener("change",(()=>{const i=e(s,this,n);t(s,this,c).call(this),i!==this.visualState&&t(s,this,l).call(this)})),e(s,this,o)&&(e(s,this,r)?t(s,this,a).call(this):t(s,this,u).call(this)))}static flip(){e(s,this,o)?t(s,this,c).call(this):e(s,this,h)?t(s,this,u).call(this):t(s,this,a).call(this),t(s,this,l).call(this)}}function n(e){return sessionStorage.getItem(t(i,e,g)._)}function r(t){return e(i,t,n)===t.DARK}function o(t){return null!==e(i,t,n)}function h(e){return t(i,e,b)._.matches}function a(){document.documentElement.setAttribute(t(i,this,v)._,this.DARK),sessionStorage.setItem(t(i,this,g)._,this.DARK)}function u(){document.documentElement.setAttribute(t(i,this,v)._,this.LIGHT),sessionStorage.setItem(t(i,this,g)._,this.LIGHT)}function c(){document.documentElement.removeAttribute(t(i,this,v)._),sessionStorage.removeItem(t(i,this,g)._)}function l(){window.postMessage({id:this.ID},"*")}i=s;var m,f,d,g={_:"mode"},v={_:"data-mode"},b={_:window.matchMedia("(prefers-color-scheme: dark)")};return m=s,f="switchable",d=!document.documentElement.hasAttribute(t(i,i,v)._),(f=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var s=i.call(t,e||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,s.init(),s}(); diff --git a/avatars/bocchi.jpg b/avatars/bocchi.jpg new file mode 100644 index 00000000000..86f5d05684c Binary files /dev/null and b/avatars/bocchi.jpg differ diff --git a/google47605899a4695c1c.html b/google47605899a4695c1c.html new file mode 100644 index 00000000000..f8c29f3bfca --- /dev/null +++ b/google47605899a4695c1c.html @@ -0,0 +1 @@ +google-site-verification: google47605899a4695c1c.html \ No newline at end of file diff --git a/naver926cf92a31d28b8a7329f586435b5eed.html b/naver926cf92a31d28b8a7329f586435b5eed.html new file mode 100644 index 00000000000..bfd20061e5e --- /dev/null +++ b/naver926cf92a31d28b8a7329f586435b5eed.html @@ -0,0 +1 @@ +naver-site-verification: naver926cf92a31d28b8a7329f586435b5eed.html \ No newline at end of file diff --git a/tools/init.sh b/tools/init.sh deleted file mode 100755 index d710182be4e..00000000000 --- a/tools/init.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/env bash -# -# Init the environment for new user. - -set -eu - -# CLI Dependencies -CLI=("git" "npm") - -ACTIONS_WORKFLOW=pages-deploy.yml - -RELEASE_HASH=$(git log --grep="chore(release):" -1 --pretty="%H") - -# temporary file suffixes that make `sed -i` compatible with BSD and Linux -TEMP_SUFFIX="to-delete" - -_no_gh=false - -help() { - echo "Usage:" - echo - echo " bash /path/to/init [options]" - echo - echo "Options:" - echo " --no-gh Do not deploy to Github." - echo " -h, --help Print this help information." -} - -# BSD and GNU compatible sed -_sedi() { - regex=$1 - file=$2 - sed -i.$TEMP_SUFFIX -E "$regex" "$file" - rm -f "$file".$TEMP_SUFFIX -} - -_check_cli() { - for i in "${!CLI[@]}"; do - cli="${CLI[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "Command '$cli' not found! Hint: you should install it." - exit 1 - fi - done -} - -_check_status() { - if [[ -n $(git status . -s) ]]; then - echo "Error: Commit unstaged files first, and then run this tool again." - exit 1 - fi -} - -_check_init() { - if [[ $(git rev-parse HEAD^1) == "$RELEASE_HASH" ]]; then - echo "Already initialized." - exit 0 - fi -} - -check_env() { - _check_cli - _check_status - _check_init -} - -reset_latest() { - git reset --hard "$RELEASE_HASH" - git clean -fd - git submodule update --init --recursive -} - -init_files() { - if $_no_gh; then - rm -rf .github - else - ## Change the files of `.github/` - temp="$(mktemp -d)" - find .github/workflows -type f -name "*$ACTIONS_WORKFLOW*" -exec mv {} "$temp/$ACTIONS_WORKFLOW" \; - rm -rf .github && mkdir -p .github/workflows - mv "$temp/$ACTIONS_WORKFLOW" .github/workflows/"$ACTIONS_WORKFLOW" - rm -rf "$temp" - fi - - # Cleanup image settings in site config - _sedi "s/(^timezone:).*/\1/;s/(^.*cdn:).*/\1/;s/(^avatar:).*/\1/" _config.yml - - # remove the other files - rm -rf tools/init.sh tools/release.sh _posts/* - - # build assets - npm i && npm run build - - # track the CSS/JS output - _sedi "/^_sass\/vendors/d" .gitignore - _sedi "/^assets\/js\/dist/d" .gitignore -} - -commit() { - git add -A - git commit -m "chore: initialize the environment" -q - echo -e "\n> Initialization successful!\n" -} - -main() { - check_env - reset_latest - init_files - commit -} - -while (($#)); do - opt="$1" - case $opt in - --no-gh) - _no_gh=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main diff --git a/tools/release.sh b/tools/release.sh deleted file mode 100755 index 36ca88af6a4..00000000000 --- a/tools/release.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env bash -# -# Requires: Git, NPM and RubyGems - -set -eu - -opt_pre=false # option for bump gem version -opt_pkg=false # option for building gem package - -MAIN_BRANCH="master" -RELEASE_BRANCH="production" - -GEM_SPEC="jekyll-theme-chirpy.gemspec" -NODE_SPEC="package.json" -CHANGELOG="docs/CHANGELOG.md" -CONFIG="_config.yml" - -CSS_DIST="_sass/vendors" -JS_DIST="assets/js/dist" - -FILES=( - "$GEM_SPEC" - "$NODE_SPEC" - "$CHANGELOG" - "$CONFIG" -) - -TOOLS=( - "git" - "npm" - "gem" -) - -help() { - echo -e "A tool to release new version Chirpy gem.\nThis tool will:" - echo " 1. Build a new gem and publish it to RubyGems.org" - echo " 2. Merge the release branch into the default branch" - echo - echo "Usage:" - echo " bash $0 [options]" - echo - echo "Options:" - echo " --prepare Preparation for release" - echo " -p, --package Build a gem package only, for local packaging in case of auto-publishing failure" - echo " -h, --help Display this help message" -} - -_check_cli() { - for i in "${!TOOLS[@]}"; do - cli="${TOOLS[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "> Command '$cli' not found!" - exit 1 - fi - done -} - -_check_git() { - $opt_pre || ( - # ensure that changes have been committed - if [[ -n $(git status . -s) ]]; then - echo "> Abort: Commit the staged files first, and then run this tool again." - exit 1 - fi - ) - - $opt_pkg || ( - if [[ "$(git branch --show-current)" != "$RELEASE_BRANCH" ]]; then - echo "> Abort: Please run the tool in the '$RELEASE_BRANCH' branch." - exit 1 - fi - ) -} - -_check_src() { - for i in "${!FILES[@]}"; do - _src="${FILES[$i]}" - if [[ ! -f $_src && ! -d $_src ]]; then - echo -e "> Error: Missing file \"$_src\"!\n" - exit 1 - fi - done -} - -init() { - _check_cli - _check_git - _check_src - echo -e "> npm install\n" - npm i -} - -## Bump new version to gem-spec file -_bump_version() { - _version="$(grep '"version":' "$NODE_SPEC" | sed 's/.*: "//;s/".*//')" - sed -i "s/[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+/$_version/" "$GEM_SPEC" - echo "> Bump gem version to $_version" -} - -_improve_changelog() { - # Replace multiple empty lines with a single empty line - sed -i '/^$/N;/^\n$/D' "$CHANGELOG" - # Escape left angle brackets of HTML tag in the changelog as they break the markdown structure. e.g., '
' - sed -i -E 's/\s(<[a-z])/ \\\1/g' "$CHANGELOG" -} - -prepare() { - _bump_version - _improve_changelog -} - -## Build a Gem package -build_gem() { - # Remove unnecessary theme settings - sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG - rm -f ./*.gem - - npm run build - # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f - - echo -e "\n> gem build $GEM_SPEC\n" - gem build "$GEM_SPEC" - - echo -e "\n> Resume file changes ...\n" - git reset - git checkout . -} - -# Push the gem to RubyGems.org (using $GEM_HOST_API_KEY) -push_gem() { - gem push ./*.gem -} - -## Merge the release branch into the default branch -merge() { - git fetch origin "$MAIN_BRANCH" - git checkout -b "$MAIN_BRANCH" origin/"$MAIN_BRANCH" - - git merge --no-ff --no-edit "$RELEASE_BRANCH" || ( - git merge --abort - echo -e "\n> Conflict detected. Aborting merge.\n" - exit 0 - ) - - git push origin "$MAIN_BRANCH" -} - -main() { - init - - if $opt_pre; then - prepare - exit 0 - fi - - build_gem - $opt_pkg && exit 0 - push_gem - merge -} - -while (($#)); do - opt="$1" - case $opt in - --prepare) - opt_pre=true - shift - ;; - -p | --package) - opt_pkg=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main diff --git a/tsuki-typing/index.html b/tsuki-typing/index.html new file mode 100644 index 00000000000..0352ce41cdd --- /dev/null +++ b/tsuki-typing/index.html @@ -0,0 +1,26 @@ + + + + + + 月配列 2-263 タイピング練習 + + + +

月配列 2-263 タイピング練習

+
+ + +
+
+
時間: 0秒
+
速度: 0字/分
+
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/tsuki-typing/keymap.json b/tsuki-typing/keymap.json new file mode 100644 index 00000000000..223a3cd7165 --- /dev/null +++ b/tsuki-typing/keymap.json @@ -0,0 +1,38 @@ +{ + + "KeyQ": { "normal": "そ", "shift": "ぁ" }, + "KeyW": { "normal": "こ", "shift": "ひ" }, + "KeyE": { "normal": "し", "shift": "ほ" }, + "KeyR": { "normal": "て", "shift": "ふ" }, + "KeyT": { "normal": "ょ", "shift": "め" }, + "KeyY": { "normal": "つ", "shift": "ぬ" }, + "KeyU": { "normal": "ん", "shift": "え" }, + "KeyI": { "normal": "い", "shift": "み" }, + "KeyO": { "normal": "の", "shift": "や" }, + "KeyP": { "normal": "り", "shift": "ぇ" }, + "BracketLeft": { "normal": "ち", "shift": "「" }, + + "KeyA": { "normal": "は", "shift": "ぃ" }, + "KeyS": { "normal": "か", "shift": "を" }, + "KeyD": { "normal": "☆", "shift": "ら" }, + "KeyF": { "normal": "と", "shift": "あ" }, + "KeyG": { "normal": "た", "shift": "よ" }, + "KeyH": { "normal": "く", "shift": "ま" }, + "KeyJ": { "normal": "う", "shift": "お" }, + "KeyK": { "normal": "☆", "shift": "も" }, + "KeyL": { "normal": "゛", "shift": "わ" }, + "Semicolon": { "normal": "き", "shift": "ゆ" }, + "Quote": { "normal": "れ", "shift": "」" }, + + "KeyZ": { "normal": "す", "shift": "ぅ" }, + "KeyX": { "normal": "け", "shift": "へ" }, + "KeyC": { "normal": "に", "shift": "せ" }, + "KeyV": { "normal": "な", "shift": "ゅ" }, + "KeyB": { "normal": "さ", "shift": "ゃ" }, + "KeyN": { "normal": "っ", "shift": "む" }, + "KeyM": { "normal": "る", "shift": "ろ" }, + "Comma": { "normal": "、", "shift": "ね" }, + "Period": { "normal": "。", "shift": "ー" }, + "Slash": { "normal": "゜", "shift": "ぉ" }, + "Space": { "normal": " ", "shift": " " } +} \ No newline at end of file diff --git a/tsuki-typing/practice-text.json b/tsuki-typing/practice-text.json new file mode 100644 index 00000000000..08f694cc357 --- /dev/null +++ b/tsuki-typing/practice-text.json @@ -0,0 +1,2847 @@ +{ + "sentences": [ + { + "hiragana": "にんげんさんかはゆうきのさんか。", + "normal": "人間讃歌は勇気の讃歌。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "わがはいはねこである。", + "normal": "吾輩は猫である。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + { + "hiragana": "きみがなくまでなぐるのをやめない。", + "normal": "君が泣くまで殴るのをやめない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "おまえはいままでくったぱんのまいすうをおぼえているのか。", + "normal": "お前は今まで食ったパンの枚数を覚えているのか。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 13, + 14, + 15, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "hiragana": "だがことわる。", + "normal": "だが断る。", + "cnttypedfont": [ + 1, + 2, + 2, + 2, + 3, + 4, + 5 + ] + }, + { + "hiragana": "おまえはもうしんでいる。", + "normal": "お前はもう死んでいる。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "あしたからがんばるんじゃない。きょうだけがんばるんだ。", + "normal": "明日から頑張るんじゃない。今日だけ頑張るんだ。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 13, + 13, + 15, + 16, + 17, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "hiragana": "こっきょうのながいとんねるをぬけるとゆきぐにであった。", + "normal": "国境の長いトンネルを抜けると雪国であった。", + "cnttypedfont": [ + 0, + 1, + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 14, + 15, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "ひとのこころは、うみやそらよりもそうだいなんだよ。", + "normal": "人の心は、海や空よりも壮大なんだよ。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "せいぶつはほんしつてきにしをおそれるものである。", + "normal": "生物は本質的に死を恐れるものである。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "あらゆるものはとおりすぎる。", + "normal": "あらゆるものは通り過ぎる。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + }, + { + "hiragana": "だれにもそれをとらえることはできない。", + "normal": "誰にもそれを捉えることはできない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "ぼくたちはそんなふうにしていきている。", + "normal": "僕たちはそんな風にして生きている。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "あしたしぬとしたら、いきかたがかわるんですか。", + "normal": "明日死ぬとしたら、生き方が変わるんですか。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "ゆめみるちからは、さいのうなのだ。", + "normal": "夢見る力は、才能なのだ。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 3, + 3, + 4, + 5, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12 + ] + }, + { + "hiragana": "はじのおおいしょうがいをおくってきました。", + "normal": "恥の多い生涯を送って来ました。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 4, + 4, + 5, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "かみにとう。しんらいはつみなりや。", + "normal": "神に問う。信頼は罪なりや。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 6, + 7, + 8, + 8, + 9, + 10, + 11, + 12, + 13 + ] + }, + { + "hiragana": "なぜいきていなければならないのか。", + "normal": "なぜ生きていなければならないのか。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "じんせいはじごくよりもじごくてきである。", + "normal": "人生は地獄よりも地獄的である。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "わたしはにんげんだった。それはたたかうものだということをいみしている。", + "normal": "私は人間だった。それは戦う者だということを意味している。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 11, + 12, + 13, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ] + }, + { + "hiragana": "ゆくかわのながれはたえずして、しかももとのみずにあらず。", + "normal": "ゆく河の流れは絶えずして、しかももとの水にあらず。", + "cnttypedfont": [ + 1, + 2, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + }, + { + "hiragana": "ふじみ、ふろうふし、すたんどぱわー。", + "normal": "不死身、不老不死、スタンドパワー。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "えたいのしれないふきつなかたまりがわたしのこころをしじゅうおさえつけていた。", + "normal": "えたいの知れない不吉な塊が私の心を始終圧えつけていた。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 11, + 11, + 11, + 12, + 13, + 13, + 13, + 14, + 15, + 15, + 15, + 16, + 17, + 18, + 18, + 18, + 19, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27 + ] + }, + { + "hiragana": "せかいいちかわいい。うちゅういちかわいい。", + "normal": "世界一可愛い。宇宙一可愛い。", + "cnttypedfont": [ + 1, + 1, + 2, + 2, + 3, + 4, + 4, + 5, + 5, + 6, + 7, + 8, + 8, + 8, + 9, + 9, + 10, + 11, + 11, + 12, + 12, + 13, + 14 + ] + }, + { + "hiragana": "かべはのぼるか。あなをあけるか。ぬけみちをさがすか。", + "normal": "壁は昇るか。穴を空けるか。抜け道を探すか。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 15, + 16, + 17, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "うではふれるか。まえをむけるか。みらいをつくれるか。", + "normal": "腕は振れるか。前を向けるか。未来を作れるか。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 15, + 16, + 17, + 17, + 18, + 19, + 20, + 21, + 22 + ] + }, + { + "hiragana": "あめあがりをうたうあいりす、つよいかぜにみらいしんじて。", + "normal": "雨上がりを歌うアイリス、強い風に未来信じて。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 14, + 14, + 15, + 16, + 17, + 17, + 18, + 18, + 19, + 20, + 21, + 22 + ] + }, + { + "hiragana": "ぜんぶ、いみがあることにしよう。", + "normal": "全部、意味があることにしよう。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "ぬれたかみに、あすふぁるとに、もうすぐきぼうがとどく。", + "normal": "濡れた髪に、アスファルトに、もうすぐ希望が届く。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 19, + 20, + 21, + 21, + 22, + 23, + 24 + ] + }, + { + "hiragana": "とおいそらにさがしてるしんぱしー。", + "normal": "遠い空に探してるシンパシー。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "たどりついてみせるあいりす、からだちゅうにひかりあつめて。", + "normal": "たどり着いてみせるアイリス、カラダ中に光あつめて。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 17, + 17, + 18, + 19, + 19, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + }, + { + "hiragana": "ぜったいいっぱいかがやけ。みらいをあかるくしよう。するぞ。", + "normal": "ぜったいいっぱい輝け。未来を明るくしよう。するぞ。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 8, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 14, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + }, + { + "hiragana": "ふりのぽーずがぜんぜんきまらない。", + "normal": "振りのポーズが全然キマらない。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "うたのぴっちもちっともあわない。", + "normal": "歌のピッチもちっとも合わない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "まけないぞ、てきはじぶんじしん。", + "normal": "負けないぞ、敵は自分自身。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 11, + 12, + 13 + ] + }, + { + "hiragana": "きのうよりもすてきなわたしをめざすの。", + "normal": "昨日よりも素敵な私を目指すの。", + "cnttypedfont": [ + 0, + 0, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 8, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "めざしたさきできらきらすてーじのまくがひらく。", + "normal": "目指した先でキラキラステージの幕が開く。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 15, + 16, + 17, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "たかまるぞ、ぜったいいっぱいかがやけ。", + "normal": "高まるぞ、ぜったいいっぱい輝け。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 13, + 13, + 14, + 15, + 16 + ] + }, + { + "hiragana": "じんせいはいちどきりなんだ。", + "normal": "人生は一度きりなんだ。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "つまりはこうかいなんてしないよ。", + "normal": "つまりは後悔なんてしないよ。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "わたしがきめたみちなんだ。", + "normal": "私が決めた道なんだ。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10 + ] + }, + { + "hiragana": "きみとわたしでみたことないけしきをみよう。", + "normal": "君と私で見たことない景色を見よう。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "ひとつのゆめ、かなうまでまけない。", + "normal": "一つの夢、叶うまで負けない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "いわずかたらずほほえみをたたえ。", + "normal": "言わず語らず微笑みを湛え。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 10, + 11, + 12, + 13 + ] + }, + { + "hiragana": "たまさかかわしたひとみはあきらめにぬれることをしらない。", + "normal": "偶さか交わした瞳は諦めに濡れることを知らない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 7, + 8, + 9, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "hiragana": "おどるようにめぐりあうこころ。", + "normal": "踊るように巡り逢う心。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 9, + 9, + 10, + 11 + ] + }, + { + "hiragana": "ゆきどけがかなでるきよらかなねいろに。", + "normal": "雪解けが奏でる清らかな音色に。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "きらりひかりはじまりをつげるあいず。", + "normal": "キラリひかりはじまりを告げる合図。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "とくりしんぞう、たかなるのとめられない。", + "normal": "トクリ心臓、高鳴るの止められない。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "びねつみたいなたいおんにせかされるように。", + "normal": "微熱みたいな体温に急かされるように。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "はながさくときがきたんだ。", + "normal": "花が咲く時が来たんだ。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "じゅんびたいそうおすみですか。", + "normal": "準備体操お済みですか。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "きみとならゆけるきがするから。", + "normal": "君とならゆける気がするから。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "かなえたい、ことばかり。", + "normal": "叶えたい、ことばかり。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "とぎれたおとをつなぐかけはしになる。", + "normal": "途切れた音を繋ぐ架け橋になる。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "やりたいことはぜんぶせいかい。", + "normal": "やりたいことは全部正解。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 9, + 10, + 10, + 11, + 12 + ] + }, + { + "hiragana": "まよなかのどあをたたきかえらないでとないた。", + "normal": "真夜中のドアをたたき帰らないでと泣いた。", + "cnttypedfont": [ + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "とつぜんのきすやあついまなざしで。", + "normal": "突然のキスや熱いまなざしで。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "くろうはたえないけれどもこうかいしてない。", + "normal": "苦労は絶えないけれども後悔してない。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "だれからもしられあいされるそんざいになるみちをえらんで。", + "normal": "誰からも知られ愛される存在になる道を選んで。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 16, + 17, + 18, + 18, + 19, + 20, + 21, + 22 + ] + }, + { + "hiragana": "ゆめはゆめとしてねむるときにみるものでしょう。", + "normal": "夢は夢として眠る時に見るものでしょう。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ] + }, + { + "hiragana": "ゆめはめをひらいてみるものとあなたがおしえてくれた。", + "normal": "夢は目を開いて見るものとあなたが教えてくれた。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + }, + { + "hiragana": "きみがまよったらあたしがてをひこう。", + "normal": "きみが迷ったらあたしが手を引こう。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "あたしがまよったらきみがてをひいて。", + "normal": "あたしが迷ったらきみが手を引いて。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "いま、みらいだけみあげて。", + "normal": "今、未来だけ見上げて。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "みらいはぼくらのてのなか。", + "normal": "未来は僕らの手の中。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 8, + 9, + 10 + ] + }, + { + "hiragana": "どいつのいがくやくがくはせかいいち。", + "normal": "ドイツの医学薬学は世界一。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 10, + 11, + 11, + 12, + 13 + ] + }, + { + "hiragana": "ありのままいまおこったことをはなすぜ。", + "normal": "ありのまま今起こった事を話すぜ。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10, + 10, + 11, + 12, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "hiragana": "かくごはいいか。おれはできてる。", + "normal": "覚悟はいいか。俺はできてる。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "すぴーどわごんはくーるにさるぜ。", + "normal": "スピードワゴンはクールに去るぜ。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "hiragana": "けっとうをぶじょくするな。", + "normal": "決闘を侮辱するな。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 4, + 4, + 4, + 5, + 6, + 7, + 8, + 9 + ] + }, + { + "hiragana": "このあじはうそをついてるあじだぜ。", + "normal": "この味はウソをついてる味だぜ。", + "cnttypedfont": [ + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "けっかだけだ。このよにはけっかだけがのこる。", + "normal": "結果だけだ。この世には結果だけが残る。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 16, + 17, + 18, + 19 + ] + }, + { + "hiragana": "きょうふとはまさしくかこからやってくる。", + "normal": "恐怖とはまさしく過去からやって来る。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "そすうをかぞえておちつくんだ。", + "normal": "素数を数えて落ち着くんだ。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + }, + { + "hiragana": "ときはかそくする。", + "normal": "時は加速する。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 3, + 4, + 5, + 6, + 7 + ] + }, + { + "hiragana": "かくごしたものはこうふくである。", + "normal": "覚悟した者は幸福である。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12 + ] + }, + { + "hiragana": "めろすはげきどした。", + "normal": "メロスは激怒した。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9 + ] + }, + { + "hiragana": "あさ、めをさますときのきもちは、おもしろい。", + "normal": "あさ、眼をさますときの気持ちは、面白い。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 16, + 17, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "かんぺきなぶんしょうなどといったものはそんざいしない。", + "normal": "完璧な文章などといったものは存在しない。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 3, + 4, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 14, + 15, + 15, + 16, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "ぼくはこのせかいに、ひだりあしからとうじょうした。", + "normal": "僕はこの世界に、左足から登場した。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 8, + 8, + 9, + 9, + 10, + 11, + 12, + 12, + 13, + 13, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "おしがもえた。ふぁんをなぐったらしい。", + "normal": "推しが燃えた。ファンを殴ったらしい。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "じゅうがつのそのどようび、ながくつづいたあめがあがった。", + "normal": "十月のその土曜日、長く続いた雨があがった。", + "cnttypedfont": [ + 0, + 0, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "どんなふうにいきてもいいじだいになりました。", + "normal": "どんなふうに生きてもいい時代になりました。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "あおいそらがどこまでもつづいていた。", + "normal": "青い空がどこまでも続いていた。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "まなびとはなんなのか。", + "normal": "学びとはなんなのか。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ] + }, + { + "hiragana": "あのなつのよるのことはわすれられない。", + "normal": "あの夏の夜のことは忘れられない。", + "cnttypedfont": [ + 1, + 2, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "hiragana": "いっしゅんをさかいに、じんせいがかわった。", + "normal": "一瞬を境に、人生が変わった。", + "cnttypedfont": [ + 0, + 1, + 1, + 1, + 2, + 3, + 3, + 3, + 4, + 5, + 6, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "かった。あたりまえだ。", + "normal": "勝った。当たり前だ。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10 + ] + }, + { + "hiragana": "せかいをはいいろにそめる、くさったあめがふっていた。", + "normal": "世界を灰色に染める、腐った雨が降っていた。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "よくいるかほてるのゆめをみる。", + "normal": "よくいるかホテルの夢を見る。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "これはわたしのおはなしではなく、かのじょのおはなしである。", + "normal": "これは私のお話ではなく、彼女のお話である。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 3, + 4, + 5, + 6, + 6, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 13, + 14, + 15, + 16, + 16, + 16, + 17, + 18, + 19, + 20, + 21 + ] + }, + { + "hiragana": "めいよにかかくなんてない。", + "normal": "名誉に価格なんてない。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "うまくいくことがいいとはかぎらない。", + "normal": "上手くいくことがいいとは限らない。", + "cnttypedfont": [ + 0, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 17 + ] + }, + { + "hiragana": "わたしをじょーなとよんでいただこう。", + "normal": "わたしをジョーナと呼んでいただこう。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "せかいがしゅうりょうしたひから、ようかがたった。", + "normal": "世界が終了した日から、八日が経った。", + "cnttypedfont": [ + 1, + 1, + 2, + 3, + 3, + 3, + 4, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "そのひのことはよくおぼえている。", + "normal": "その日のことはよく覚えている。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + }, + { + "hiragana": "さんじゅうびょうでえがけるてんしがある。", + "normal": "三十秒で描ける天使がある。", + "cnttypedfont": [ + 0, + 1, + 1, + 1, + 2, + 2, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + }, + { + "hiragana": "むかしはねえ、おやちんというのはほんではらったものですよ。", + "normal": "昔はねえ、お家賃というのは本で払ったものですよ。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + }, + { + "hiragana": "いつ、しんぞうがぶっこわれてもいい。", + "normal": "いつ、心臓がぶっこわれてもいい。", + "cnttypedfont": [ + 1, + 2, + 3, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + }, + { + "hiragana": "にいさんがかんこーひーをのむとまちはかっしょくにゆれる。", + "normal": "兄さんが缶コーヒーを飲むと街は褐色に揺れる。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 15, + 16, + 16, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + }, + { + "hiragana": "あいはいのりだ。ぼくはいのる。", + "normal": "愛は祈りだ。僕は祈る。", + "cnttypedfont": [ + 0, + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 6, + 7, + 8, + 8, + 9, + 10, + 11 + ] + }, + { + "hiragana": "さっぽろである。すすきのである。", + "normal": "札幌である。ススキノである。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + { + "hiragana": "ろりーた、わがいのちのひかり、わがこしのほのお。", + "normal": "ロリータ、我が命の光、我が腰の炎。", + "cnttypedfont": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 7, + 7, + 8, + 9, + 9, + 9, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 15, + 15, + 16, + 17 + ] + }, + { + "hiragana": "すべてのかのうなもじれつ。すべてのほんはそのなかにふくまれている。", + "normal": "全ての可能な文字列。全ての本はその中に含まれている。", + "cnttypedfont": [ + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 8, + 9, + 10, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 16, + 17, + 17, + 18, + 19, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + }, + { + "hiragana": "さいしょはそんなこと、だれもしんじていなかった。", + "normal": "最初はそんなこと、誰も信じていなかった。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "にちようのよるはにくだろう。", + "normal": "日曜の夜は肉だろう。", + "cnttypedfont": [ + 0, + 1, + 1, + 2, + 3, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 10 + ] + }, + { + "hiragana": "よんじゅうさいになったらしのうとおもっていた。", + "normal": "四十歳になったら死のうと思っていた。", + "cnttypedfont": [ + 0, + 1, + 1, + 1, + 2, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + }, + { + "hiragana": "とけいしゅうのふくはばらいろとしろのしまになっている。", + "normal": "徒刑囚の服は薔薇色と白の縞になっている。", + "cnttypedfont": [ + 1, + 1, + 2, + 2, + 2, + 3, + 4, + 4, + 5, + 6, + 7, + 8, + 8, + 9, + 10, + 10, + 11, + 12, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + }, + { + "hiragana": "わたしはそのひとをつねにせんせいとよんでいた。", + "normal": "私はその人を常に先生と呼んでいた。", + "cnttypedfont": [ + 0, + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 8, + 9, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + } + ] +} \ No newline at end of file diff --git a/tsuki-typing/script.js b/tsuki-typing/script.js new file mode 100644 index 00000000000..629e1c2898b --- /dev/null +++ b/tsuki-typing/script.js @@ -0,0 +1,547 @@ +document.addEventListener('DOMContentLoaded', () => { + // 1. DOM 요소 가져오기 + const problemElement = document.getElementById('problem'); + const userInputDisplayElement = document.getElementById('user-input-display'); + const timerElement = document.getElementById('timer'); + const cpmElement = document.getElementById('cpm'); + const restartBtn = document.getElementById('restart-btn'); + const themeToggleBtn = document.getElementById('theme-toggle-btn'); + const virtualKeyboardElement = document.getElementById('virtual-keyboard'); + const body = document.body; + + // 2. 월배열 2-263 키 매핑 및 연습 문장 (외부 파일에서 로드) + let tsukiLayout = {}; + let sentences = []; + + // 3. 상태 변수 + let currentNormalSentence = ''; + let currentHiraganaSentence = ''; + let currentCntTypedFont = []; + let userInput = ''; + let timer; + let timeElapsed = 0; + let totalTypedChars = 0; // 총 입력된 문자 수 + let totalCorrectChars = 0; // 총 정확하게 입력된 문자 수 + let gameStarted = false; + let MiddleShiftActive = false; + let keyPressed = {}; + + const dakutenMap = { + 'か': 'が', 'き': 'ぎ', 'く': 'ぐ', 'け': 'げ', 'こ': 'ご', + 'さ': 'ざ', 'し': 'じ', 'す': 'ず', 'せ': 'ぜ', 'そ': 'ぞ', + 'た': 'だ', 'ち': 'ぢ', 'つ': 'づ', 'て': 'で', 'と': 'ど', + 'は': 'ば', 'ひ': 'び', 'ふ': 'ぶ', 'へ': 'べ', 'ほ': 'ぼ' + }; + + const handakutenMap = { + 'は': 'ぱ', 'ひ': 'ぴ', 'ふ': 'ぷ', 'へ': 'ぺ', 'ほ': 'ぽ' + }; + let reverseDakutenMap = {}; + let reverseHandakutenMap = {}; + + // Key Codes for special actions + const KEY_CODE_MIDDLE_SHIFT_LEFT = 'KeyD'; + const KEY_CODE_MIDDLE_SHIFT_RIGHT = 'KeyK'; + const KEY_CODE_DAKUTEN = 'KeyL'; + const KEY_CODE_HANDAKUTEN = 'Slash'; + const KEY_CODE_BACKSPACE = 'Backspace'; + const KEY_CODE_ENTER = 'Enter'; + const KEY_CODE_SPACE = 'Space'; + + // 4. 핵심 로직 (함수 정의) + + // 현재까지 정확히 입력된 길이를 반환하는 헬퍼 함수 + function getCorrectLength() { + let len = 0; + while (len < userInput.length && + len < currentHiraganaSentence.length && + userInput[len] === currentHiraganaSentence[len]) { + len++; + } + return len; + } + + function findKeyForChar(char) { + for (const keyCode in tsukiLayout) { + const key = tsukiLayout[keyCode]; + if (key.normal === char) { + return { keyCode, shift: false }; + } + if (key.shift === char) { + return { keyCode, shift: true }; + } + } + return null; + } + + function getKeysForChar(char) { + const keys = []; + const baseCharDakuten = reverseDakutenMap[char]; + const baseCharHandakuten = reverseHandakutenMap[char]; + const baseChar = baseCharDakuten || baseCharHandakuten || char; + + const keyInfo = findKeyForChar(baseChar); + if (!keyInfo) return []; + + if (keyInfo.shift) { + keys.push({ keyCode: 'MiddleShift' }); // 1. Generic Shift Key + } + keys.push({ keyCode: keyInfo.keyCode }); // 2. Character Key + + if (baseCharDakuten) { + keys.push({ keyCode: 'KeyL' }); // 3. Dakuten Key + } else if (baseCharHandakuten) { + keys.push({ keyCode: 'Slash' }); // 3. Handakuten Key + } + + return keys; + } + + function updateKeyboardGuide() { + // 1. Clear all existing guide classes + document.querySelectorAll('.keyboard-key').forEach(key => { + key.classList.remove('guide', 'guide-next'); + }); + + const correctLength = getCorrectLength(); + if (correctLength >= currentHiraganaSentence.length) return; // No more characters to type + + const nextChar = currentHiraganaSentence[correctLength]; + const requiredKeys = getKeysForChar(nextChar); + + if (requiredKeys.length === 0) return; // No keys found for the character + + // Determine the current step in the key sequence for the next character + let currentStep = 0; + if (MiddleShiftActive) { + currentStep = 1; // If MiddleShift is active, we are at the second step of the sequence + } else { + // Check if the base character for dakuten/handakuten has already been typed + const baseChar = reverseDakutenMap[nextChar] || reverseHandakutenMap[nextChar]; + if (baseChar && userInput[correctLength] === baseChar) { + currentStep = requiredKeys.length - 1; // If base char is typed, next is dakuten/handakuten + } + } + + // The key at currentStep is the main guide + const mainGuideKeyCode = requiredKeys[currentStep].keyCode; + + // All keys after currentStep are auxiliary guides + const auxiliaryGuideKeyCodes = []; + for (let i = currentStep + 1; i < requiredKeys.length; i++) { + auxiliaryGuideKeyCodes.push(requiredKeys[i].keyCode); + } + + // Determine the actual key codes that should receive the 'guide' class + let actualMainGuideKeyCodes = []; + if (mainGuideKeyCode === 'MiddleShift') { + actualMainGuideKeyCodes.push(KEY_CODE_MIDDLE_SHIFT_LEFT); + actualMainGuideKeyCodes.push(KEY_CODE_MIDDLE_SHIFT_RIGHT); + } else { + actualMainGuideKeyCodes.push(mainGuideKeyCode); + } + + // Filter auxiliaryGuideKeyCodes to ensure no overlap with actualMainGuideKeyCodes + const filteredAuxiliaryGuideKeyCodes = auxiliaryGuideKeyCodes.filter(keyCode => + !actualMainGuideKeyCodes.includes(keyCode) + ); + + // Apply auxiliary guides first (guide-next) + filteredAuxiliaryGuideKeyCodes.forEach(keyCode => { + const keyElement = document.getElementById(`key-${keyCode}`); + if (keyElement) { + keyElement.classList.add('guide-next'); + } + }); + + // Apply main guides second (guide) + actualMainGuideKeyCodes.forEach(keyCode => { + const keyElement = document.getElementById(`key-${keyCode}`); + if (keyElement) { + keyElement.classList.add('guide'); + } + }); + } + + + // 데이터 로드 및 초기화 + async function initializeApp() { + try { + const [keymapResponse, sentencesResponse] = await Promise.all([ + fetch('keymap.json'), + fetch('practice-text.json') + ]); + + tsukiLayout = await keymapResponse.json(); + const sentencesData = await sentencesResponse.json(); + sentences = sentencesData.sentences; + + // 역방향 맵 생성 + for (const key in dakutenMap) { + reverseDakutenMap[dakutenMap[key]] = key; + } + for (const key in handakutenMap) { + reverseHandakutenMap[handakutenMap[key]] = key; + } + + + createVirtualKeyboard(); // 키맵 로드 후 가상 키보드 생성 + startNewGame(); // 모든 데이터 로드 후 새 게임 시작 + } catch (error) { + console.error('ロードに失敗しました。', error); + problemElement.textContent = 'ロードに失敗しました。'; + } + } + + // 새 게임 시작 + function startNewGame() { + userInput = ''; + MiddleShiftActive = false; // 시작 시 시프트 초기화 + keyPressed = {}; // 시작 시 눌린 키 상태 초기화 + + userInputDisplayElement.textContent = ''; + + const randomIndex = Math.floor(Math.random() * sentences.length); + const selectedSentence = sentences[randomIndex]; + currentNormalSentence = selectedSentence.normal; + currentHiraganaSentence = selectedSentence.hiragana; + currentCntTypedFont = selectedSentence.cnttypedfont; + + problemElement.innerHTML = ''; + + const normalTextDiv = document.createElement('div'); + normalTextDiv.className = 'normal-text'; + currentNormalSentence.split('').forEach(char => { + const charSpan = document.createElement('span'); + charSpan.textContent = char; + normalTextDiv.appendChild(charSpan); + }); + problemElement.appendChild(normalTextDiv); + + const hiraganaTextDiv = document.createElement('div'); + hiraganaTextDiv.className = 'hiragana-text'; + currentHiraganaSentence.split('').forEach(char => { + const charSpan = document.createElement('span'); + charSpan.textContent = char; + hiraganaTextDiv.appendChild(charSpan); + }); + problemElement.appendChild(hiraganaTextDiv); + + if (normalTextDiv.children.length > 0) { + normalTextDiv.children[0].classList.add('current'); + } + + if (hiraganaTextDiv.children.length > 0) { + hiraganaTextDiv.children[0].classList.add('current'); + } + updateKeyboardGuide(); + } + + // 입력 처리 + function handleKeyDown(e) { + e.preventDefault(); // 모든 키 입력에 대한 기본 동작을 여기서 한 번에 막습니다. + + // 가상 키보드 활성화 효과 + const keyElement = document.getElementById(`key-${e.code}`); + if (keyElement) { + keyElement.classList.add('active'); + } + + // 기능 키(Shift, Ctrl 등)는 무시 (Backspace는 예외) + if (e.key.length > 1 && e.code !== KEY_CODE_BACKSPACE && e.code !== KEY_CODE_ENTER && e.code !== KEY_CODE_SPACE) { + return; + } + + // Backspace 처리 + if (e.code === KEY_CODE_BACKSPACE) { + if (userInput.length > 0) { + const lastChar = userInput[userInput.length - 1]; + const problemChar = currentHiraganaSentence[userInput.length - 1]; + if (lastChar === problemChar) { + totalCorrectChars--; + } + totalTypedChars--; + + userInput = userInput.slice(0, -1); + updateDisplay(); + } + MiddleShiftActive = false; + updateKeyboardGuide(); + return; + } + + // 문장이 완료되었으면 Enter 키만 허용 + if (getCorrectLength() >= currentHiraganaSentence.length) { + if (e.code === KEY_CODE_ENTER) { + startNewGame(); + } + return; + } + + // --- 입력 유효성 검사 시작 --- + const correctLength = getCorrectLength(); + if (correctLength >= currentHiraganaSentence.length) { + if (e.code === KEY_CODE_ENTER) startNewGame(); + return; + } + + const nextChar = currentHiraganaSentence[correctLength]; + const requiredKeys = getKeysForChar(nextChar); + if (requiredKeys.length === 0) { return; } + + let currentStep = 0; + if (MiddleShiftActive) { + currentStep = 1; + } else { + const baseChar = reverseDakutenMap[nextChar] || reverseHandakutenMap[nextChar]; + if (baseChar && userInput[correctLength] === baseChar) { + currentStep = requiredKeys.length - 1; + } + } + + const expectedKeyCode = requiredKeys[currentStep].keyCode; + + if (expectedKeyCode === 'MiddleShift') { + if (e.code !== KEY_CODE_MIDDLE_SHIFT_LEFT && e.code !== KEY_CODE_MIDDLE_SHIFT_RIGHT) { + return; // d 또는 k가 아니면 입력 무시 + } + // MiddleShiftActive 상태 토글 + MiddleShiftActive = !MiddleShiftActive; + updateKeyboardGuide(); + return; // MiddleShift 활성화 후 실제 문자 입력은 다음 키 입력에서 처리 + } else { + if (e.code !== expectedKeyCode) { + return; // 유효하지 않은 키 입력이면 여기서 함수 종료 + } + } + // --- 입력 유효성 검사 끝 --- + + + // 게임 타이머 시작 + if (!gameStarted && currentHiraganaSentence) { + startGameTimer(); + gameStarted = true; + } + + // 키 반복 방지 + if (keyPressed[e.code]) { + return; + } + keyPressed[e.code] = true; + + const keyMapping = tsukiLayout[e.code]; + let typedChar = MiddleShiftActive ? keyMapping.shift : keyMapping.normal; + + // 탁음/반탁음 변환 또는 Shift + KeyL/Slash 처리 + if (e.code === KEY_CODE_DAKUTEN || e.code === KEY_CODE_HANDAKUTEN) { + // MiddleShiftActive 상태라면, 탁음/반탁음 변환 대신 Shifted 문자 입력으로 간주 + if (MiddleShiftActive) { + totalTypedChars++; + if (typedChar === currentHiraganaSentence[userInput.length]) { + totalCorrectChars++; + } + userInput += typedChar; + } else if (userInput.length > 0) { + const prevChar = userInput[userInput.length - 1]; + const map = (e.code === KEY_CODE_DAKUTEN) ? dakutenMap : handakutenMap; + const convertedChar = map[prevChar]; + if (convertedChar) { + // Adjust totalCorrectChars for conversion + const problemCharIndex = userInput.length - 1; + if (prevChar === currentHiraganaSentence[problemCharIndex]) { + totalCorrectChars--; // Decrement if previous char was correct + } + if (convertedChar === currentHiraganaSentence[problemCharIndex]) { + totalCorrectChars++; // Increment if new char is correct + } + userInput = userInput.slice(0, -1) + convertedChar; + } + } + } else { + // Normal character input + totalTypedChars++; + if (typedChar === currentHiraganaSentence[userInput.length]) { + totalCorrectChars++; + } + userInput += typedChar; + } + + // 일반 문자 입력 후 MiddleShiftActive 상태 재설정 + if (MiddleShiftActive) { + MiddleShiftActive = false; + } + + updateDisplay(); + checkCompletion(); + } + function handleKeyUp(e) { + const keyElement = document.getElementById(`key-${e.code}`); + if (keyElement) { + keyElement.classList.remove('active'); + } + keyPressed[e.code] = false; + updateKeyboardGuide(); // 키를 뗄 때도 가이드 업데이트 + } + + // 타이머 시작 + function startGameTimer() { + timer = setInterval(() => { + timeElapsed++; + timerElement.textContent = `時間: ${timeElapsed}秒`; + updateStats(); + }, 1000); + } + + // 화면 업데이트 + function updateDisplay() { + const normalChars = problemElement.querySelector('.normal-text').children; + const hiraganaChars = problemElement.querySelector('.hiragana-text').children; + + // 1. 모든 글자의 클래스 초기화 + for (let i = 0; i < hiraganaChars.length; i++) { + hiraganaChars[i].className = ''; + } + for (let i = 0; i < normalChars.length; i++) { + normalChars[i].className = ''; + } + + // 2. 입력한 부분까지 정답 표시 + for (let i = 0; i < getCorrectLength(); i++) { + if (i < hiraganaChars.length) { + hiraganaChars[i].classList.add('correct'); + } + } + + // 3. 커서 위치 설정 + const cursorPos = getCorrectLength(); // 변경: userInput.length 대신 getCorrectLength() 사용 + if (cursorPos < currentHiraganaSentence.length) { + hiraganaChars[cursorPos].classList.add('current'); + } + + // 4. 상단 문제 문장 진행상황(committed) 및 커서 업데이트 + const committedCharsCount = (getCorrectLength() > 0) ? (currentCntTypedFont[getCorrectLength() - 1] || 0) : 0; + for (let i = 0; i < normalChars.length; i++) { + if (i < committedCharsCount) { + normalChars[i].classList.add('committed'); + } + } + if (committedCharsCount < currentNormalSentence.length) { + normalChars[committedCharsCount].classList.add('current'); + } + + // 5. 통계 및 가이드 업데이트 + userInputDisplayElement.textContent = userInput; + updateStats(); + updateKeyboardGuide(); + } + + // 통계 업데이트 + function updateStats() { + if (timeElapsed > 0) { + const cpm = Math.round((totalTypedChars / timeElapsed) * 60); + cpmElement.textContent = `速度: ${cpm}字/分`; + } else { + cpmElement.textContent = '速度: 0字/分'; + } + } + + // 완료 체크 + function checkCompletion() { + if (getCorrectLength() >= currentHiraganaSentence.length) { + startNewGame(); // 다음 문장으로 바로 넘어감 + } + } + + // 가상 키보드 생성 + function createVirtualKeyboard() { + const layout = [ + // Row 1: Tab, QWERTY keys + ['KeyQ', 'KeyW', 'KeyE', 'KeyR', 'KeyT', 'KeyY', 'KeyU', 'KeyI', 'KeyO', 'KeyP', 'BracketLeft'], + // Row 2: CapsLock, ASDF keys + ['KeyA', 'KeyS', 'KeyD', 'KeyF', 'KeyG', 'KeyH', 'KeyJ', 'KeyK', 'KeyL', 'Semicolon', 'Quote'], + // Row 3: Left Shift, ZXCV keys + ['KeyZ', 'KeyX', 'KeyC', 'KeyV', 'KeyB', 'KeyN', 'KeyM', 'Comma', 'Period', 'Slash'], + ]; + + layout.forEach(row => { + const rowDiv = document.createElement('div'); + rowDiv.className = 'keyboard-row'; + row.forEach(keyCode => { + const keyDiv = document.createElement('div'); + keyDiv.className = 'keyboard-key'; + keyDiv.id = `key-${keyCode}`; + + const mapping = tsukiLayout[keyCode]; + if (mapping) { + const mainChar = document.createElement('span'); + mainChar.className = 'key-main'; + mainChar.textContent = mapping.normal; + keyDiv.appendChild(mainChar); + + const shiftChar = document.createElement('span'); + shiftChar.className = 'key-shift'; + shiftChar.textContent = mapping.shift; + keyDiv.appendChild(shiftChar); + } + rowDiv.appendChild(keyDiv); + }); + virtualKeyboardElement.appendChild(rowDiv); + }); + } + + // 새 게임 시작 (통계 초기화 포함) + function resetGameAndStats() { + clearInterval(timer); // 기존 타이머 중지 + gameStarted = false; + timeElapsed = 0; + timerElement.textContent = '時間: 0秒'; + cpmElement.textContent = '速度: 0字/分'; + startNewGame(); + } + + // 5. 이벤트 리스너 연결 + restartBtn.addEventListener('click', resetGameAndStats); + window.addEventListener('keydown', e => { + const keyElement = document.getElementById(`key-${e.code}`); + if (keyElement) { + keyElement.classList.add('active'); + } + handleKeyDown(e); + }); + window.addEventListener('keyup', handleKeyUp); + + // 6. 초기화 + initializeApp(); + + // 테마 관련 함수 및 초기화 + function applyTheme(theme) { + if (theme === 'dark') { + body.classList.add('dark-mode'); + themeToggleBtn.textContent = 'Light Mode'; + } else { + body.classList.remove('dark-mode'); + themeToggleBtn.textContent = 'Dark Mode'; + } + localStorage.setItem('theme', theme); + } + + // 초기 테마 설정 + const savedTheme = localStorage.getItem('theme'); + if (savedTheme) { + applyTheme(savedTheme); + } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + applyTheme('dark'); + } else { + applyTheme('light'); + } + + // 테마 토글 버튼 이벤트 리스너 + themeToggleBtn.addEventListener('click', () => { + const currentTheme = localStorage.getItem('theme'); + if (currentTheme === 'dark') { + applyTheme('light'); + } else { + applyTheme('dark'); + } + }); +}); diff --git a/tsuki-typing/style.css b/tsuki-typing/style.css new file mode 100644 index 00000000000..dc3fde02910 --- /dev/null +++ b/tsuki-typing/style.css @@ -0,0 +1,202 @@ +body { + --bg-color: #f0f2f5; + --text-color: #333; + --primary-color: #0077b6; + --secondary-color: #005a8a; + --problem-bg-color: #fff; + --border-color: #ccc; + --current-bg-color: #e0e0e0; + --correct-text-color: #0077b6; + --committed-text-color: #0077b6; + --key-bg-color: #fff; + --key-border-color: #ccc; + --key-active-bg-color: #ebebeb; + --guide-bg-color: #0077b6; + --guide-border-color: #00669d; + --guide-shadow-color: rgba(0, 102, 157, 0.7); + --guide-next-bg-color: #B1D7EC; + --guide-next-border-color: #6DB4DA; + + font-family: 'Meiryo', 'Hiragino Kaku Gothic ProN', sans-serif; + background-color: var(--bg-color); + color: var(--text-color); + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + padding: 20px; +} + +body.dark-mode { + --bg-color: #282c34; + --text-color: #abb2bf; + --primary-color: #61afef; + --secondary-color: #8fc6f4; + --problem-bg-color: #3e4452; + --border-color: #5c6370; + --current-bg-color: #586074; + --correct-text-color: #61afef; + --committed-text-color: #61afef; + --key-bg-color: #3e4452; + --key-border-color: #5c6370; + --key-active-bg-color: #4b5263; + --guide-bg-color: #61afef; + --guide-border-color: #78bbf1; + --guide-shadow-color: rgba(143, 198, 244, 0.7); + --guide-next-bg-color: #45648F; + --guide-next-border-color: #567db1; +} + +h1 { + color: var(--primary-color); +} + +#stats { + display: flex; + gap: 20px; + font-size: 1.2em; + margin-top: 20px; + margin-bottom: 20px; +} + +#problem, #user-input-display { + letter-spacing: 2px; + background-color: var(--problem-bg-color); + border: 1px solid var(--border-color); + padding: 20px; + width: 80%; + max-width: 800px; + min-height: 80px; + margin-bottom: 10px; + border-radius: 5px; +} + +#problem .normal-text { + font-size: 1.8em; /* 문제 문장 크기 조정 */ + margin-bottom: 10px; +} + +#problem .hiragana-text { + font-size: 1.2em; /* 히라가나 글자 크기 */ + color: var(--text-color); +} + +#problem span.correct { + color: var(--correct-text-color); +} + +#problem span.current { + background-color: var(--current-bg-color); +} + +#problem span.committed { + color: var(--committed-text-color); + font-weight: bold; +} + +#user-input-display { + color: var(--text-color); + min-height: 1.5em; /* 글자 크기에 맞춰 최소 높이 설정 */ + padding: 10px 20px; /* 상하좌우 여백 재조정 */ + font-size: 1.2em; /* 입력 문자와 히라가나 글자 크기 일치 */ + display: flex; /* Flexbox를 사용하여 수직 정렬 */ + align-items: center; /* 내용을 수직 중앙에 위치 */ +} + +.button-container { + display: flex; + gap: 20px; /* 버튼 사이의 간격 */ +} + +.button-container button { + font-size: 1.2em; + padding: 10px 20px; + cursor: pointer; + border: none; + background-color: var(--primary-color); + color: white; + border-radius: 5px; + transition: background-color 0.3s; +} + +.button-container button:hover { + background-color: var(--secondary-color); +} + +#virtual-keyboard { + margin-top: 60px; + display: grid; + gap: 5px; + justify-content: center; +} + +.keyboard-row { + display: flex; + gap: 5px; +} + +.keyboard-key { + min-width: 50px; /* 기본 키 너비 */ + height: 50px; + display: flex; + justify-content: center; + align-items: center; + border: 1px solid var(--key-border-color); + border-radius: 5px; + background-color: var(--key-bg-color); + font-size: 1em; + position: relative; + box-sizing: border-box; /* 패딩과 보더가 너비에 포함되도록 */ +} + +.keyboard-key.active { + background-color: var(--key-active-bg-color); + transform: scale(0.95); +} + +.keyboard-key.guide { + background-color: var(--guide-bg-color); + color: white; + border: 2px solid var(--guide-border-color); + box-shadow: 0 0 8px var(--guide-shadow-color); /* 그림자 강도 조절 */ + transform: scale(1.05); /* Slightly larger */ +} + +/* Make text inside the guided key white */ +.keyboard-key.guide .key-main, +.keyboard-key.guide .key-shift { + color: white; +} + +.keyboard-key.guide-next { + background-color: var(--guide-next-bg-color); /* 더 연한 파스텔 푸른색 */ + border: 2px solid var(--guide-next-border-color); +} + +.key-main { + font-size: 1.2em; +} + +.key-shift { + position: absolute; + top: 2px; + left: 4px; + font-size: 0.8em; + color: var(--text-color); +} + +.keyboard-key.guide.active { + transform: scale(0.95); /* guide와 active가 동시에 적용될 때 active의 transform을 우선 */ +} +.key-backspace { width: 100px; } +.key-tab { width: 80px; } +.key-capslock { width: 90px; } +.key-enter { width: 110px; } +.key-shift-left { width: 120px; } +.key-shift-right { width: 120px; } +.key-ctrl, .key-alt, .key-meta { width: 70px; } + +/* Row indentation (mimicking real keyboard layout) */ +.keyboard-row:nth-child(1) { margin-left: 0px; } +.keyboard-row:nth-child(2) { margin-left: 20px; } +.keyboard-row:nth-child(3) { margin-left: 50px; } \ No newline at end of file