diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 14a0d5ea90..ac7854f265 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -33,23 +33,16 @@ "oderwat.indent-rainbow", "redhat.vscode-yaml", "spmeesseman.vscode-taskexplorer", - "visualstudioexptteam.vscodeintellicode" + "visualstudioexptteam.vscodeintellicode", + "ms-python.pylint" ], "settings": { "terminal.integrated.defaultProfile.linux": "zsh", "python.pythonPath": "/usr/local/bin/python", "python.languageServer": "Default", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", "python.formatting.blackPath": "/usr/local/py-utils/bin/black", "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", - "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", - "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", - "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", - "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", - "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", - "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint", "python.testing.pytestArgs": [ "ietf" ], diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4687d04aa9..3d36676762 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,11 +9,67 @@ updates: directory: "/" schedule: interval: "weekly" + reviewers: + - "ngpixel" - package-ecosystem: "docker" directory: "/docker" schedule: interval: "weekly" + reviewers: + - "ngpixel" - package-ecosystem: "pip" directory: "/" schedule: interval: "weekly" + reviewers: + - "rjsparks" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + reviewers: + - "ngpixel" + groups: + yarn: + patterns: + - "*" + - package-ecosystem: "npm" + directory: "/playwright" + schedule: + interval: "weekly" + reviewers: + - "ngpixel" + groups: + npm: + patterns: + - "*" + - package-ecosystem: "npm" + directory: "/dev/coverage-action" + schedule: + interval: "weekly" + reviewers: + - "ngpixel" + groups: + npm: + patterns: + - "*" + - package-ecosystem: "npm" + directory: "/dev/deploy-to-container" + schedule: + interval: "weekly" + reviewers: + - "ngpixel" + groups: + npm: + patterns: + - "*" + - package-ecosystem: "npm" + directory: "/dev/diff" + schedule: + interval: "weekly" + reviewers: + - "ngpixel" + groups: + npm: + patterns: + - "*" diff --git a/.github/workflows/build-base-app.yml b/.github/workflows/build-base-app.yml index 1be6d802fd..85842d9dcf 100644 --- a/.github/workflows/build-base-app.yml +++ b/.github/workflows/build-base-app.yml @@ -6,6 +6,7 @@ on: - 'main' paths: - 'docker/base.Dockerfile' + - 'requirements.txt' workflow_dispatch: @@ -17,23 +18,23 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: docker/base.Dockerfile diff --git a/.github/workflows/build-celery-worker.yml b/.github/workflows/build-celery-worker.yml index be0fc131a5..9c37d02ce8 100644 --- a/.github/workflows/build-celery-worker.yml +++ b/.github/workflows/build-celery-worker.yml @@ -19,23 +19,23 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: dev/celery/Dockerfile diff --git a/.github/workflows/build-mq-broker.yml b/.github/workflows/build-mq-broker.yml index 03df98d123..ba935405f9 100644 --- a/.github/workflows/build-mq-broker.yml +++ b/.github/workflows/build-mq-broker.yml @@ -10,6 +10,9 @@ on: workflow_dispatch: +env: + RABBITMQ_VERSION: 3.12-alpine + jobs: publish: runs-on: ubuntu-latest @@ -18,27 +21,29 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: dev/mq/Dockerfile platforms: linux/amd64,linux/arm64 push: true - tags: ghcr.io/ietf-tools/datatracker-mq:latest - + build-args: RABBITMQ_VERSION=${{ env.RABBITMQ_VERSION }} + tags: | + ghcr.io/ietf-tools/datatracker-mq:${{ env.RABBITMQ_VERSION }} + ghcr.io/ietf-tools/datatracker-mq:latest diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c2ab8a434..d950c057c5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,6 +17,11 @@ on: default: true required: true type: boolean + sandboxNoDbRefresh: + description: 'Sandbox Disable Daily DB Refresh' + default: false + required: true + type: boolean legacySandbox: description: 'Deploy to Legacy Sandbox' default: false @@ -52,7 +57,7 @@ jobs: to_tag: ${{ steps.semver.outputs.current }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -71,7 +76,7 @@ jobs: echo "NEXT_VERSION=$nextStrict" >> $GITHUB_ENV - name: Create Draft Release - uses: ncipollo/release-action@v1.12.0 + uses: ncipollo/release-action@v1.13.0 if: ${{ github.ref_name == 'release' }} with: prerelease: true @@ -100,171 +105,22 @@ jobs: # ----------------------------------------------------------------- # TESTS # ----------------------------------------------------------------- - tests-python: - name: Run Tests (Python) - if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - needs: [prepare] - runs-on: ubuntu-latest - container: ghcr.io/ietf-tools/datatracker-app-base:latest - - services: - db: - image: ghcr.io/ietf-tools/datatracker-db:latest - - steps: - - uses: actions/checkout@v3 - - - name: Prepare for tests - run: | - chmod +x ./dev/tests/prepare.sh - sh ./dev/tests/prepare.sh - - - name: Ensure DB is ready - run: | - /usr/local/bin/wait-for db:5432 -- echo "DB ready" - - - name: Run all tests - shell: bash - run: | - echo "Running checks..." - ./ietf/manage.py check - ./ietf/manage.py migrate --fake-initial - echo "Validating migrations..." - if ! ( ietf/manage.py makemigrations --dry-run --check --verbosity 3 ) ; then - echo "Model changes without migrations found." - exit 1 - fi - echo "Running tests..." - if [[ "x${{ github.event.inputs.ignoreLowerCoverage }}" == "xtrue" ]]; then - echo "Lower coverage failures will be ignored." - ./ietf/manage.py test --validate-html-harder --settings=settings_test --ignore-lower-coverage - else - ./ietf/manage.py test --validate-html-harder --settings=settings_test - fi - coverage xml - - - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v3.1.4 - with: - files: coverage.xml - - - name: Convert Coverage Results - if: ${{ always() }} - run: | - mv latest-coverage.json coverage.json - - - name: Upload Coverage Results as Build Artifact - uses: actions/upload-artifact@v3 - if: ${{ always() }} - with: - name: coverage - path: coverage.json - - tests-playwright: - name: Run Tests (Playwright) - if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - needs: [prepare] - runs-on: macos-latest - strategy: - fail-fast: false - matrix: - project: [chromium, firefox] - - steps: - - uses: actions/checkout@v3 - - - uses: actions/setup-node@v3 - with: - node-version: '18' - - - name: Run all tests - run: | - echo "Installing dependencies..." - yarn - echo "Installing Playwright..." - cd playwright - mkdir test-results - npm ci - npx playwright install --with-deps ${{ matrix.project }} - echo "Running tests..." - npx playwright test --project=${{ matrix.project }} - - - name: Upload Report - uses: actions/upload-artifact@v3 - if: ${{ always() }} - continue-on-error: true - with: - name: playwright-results-${{ matrix.project }} - path: playwright/test-results/ - if-no-files-found: ignore - - tests-playwright-legacy: - name: Run Tests (Playwright Legacy) + + tests: + name: Run Tests + uses: ./.github/workflows/tests.yml if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} needs: [prepare] - runs-on: ubuntu-latest - container: ghcr.io/ietf-tools/datatracker-app-base:latest - strategy: - fail-fast: false - matrix: - project: [chromium, firefox] - - services: - db: - image: ghcr.io/ietf-tools/datatracker-db:latest - - steps: - - uses: actions/checkout@v3 - - - name: Prepare for tests - run: | - chmod +x ./dev/tests/prepare.sh - sh ./dev/tests/prepare.sh - - - name: Ensure DB is ready - run: | - /usr/local/bin/wait-for db:5432 -- echo "DB ready" - - - name: Start Datatracker - run: | - echo "Running checks..." - ./ietf/manage.py check - echo "Starting datatracker..." - ./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local & - echo "Waiting for datatracker to be ready..." - /usr/local/bin/wait-for localhost:8000 -- echo "Datatracker ready" + with: + ignoreLowerCoverage: ${{ github.event.inputs.ignoreLowerCoverage == 'true' }} - - name: Run all tests - env: - # Required to get firefox to run as root: - HOME: "" - run: | - echo "Installing dependencies..." - yarn - echo "Installing Playwright..." - cd playwright - mkdir test-results - npm ci - npx playwright install --with-deps ${{ matrix.project }} - echo "Running tests..." - npx playwright test --project=${{ matrix.project }} -c playwright-legacy.config.js - - - name: Upload Report - uses: actions/upload-artifact@v3 - if: ${{ always() }} - continue-on-error: true - with: - name: playwright-legacy-results-${{ matrix.project }} - path: playwright/test-results/ - if-no-files-found: ignore - # ----------------------------------------------------------------- # RELEASE # ----------------------------------------------------------------- release: name: Make Release if: ${{ !failure() && !cancelled() }} - needs: [tests-python, tests-playwright, tests-playwright-legacy, prepare] + needs: [tests, prepare] runs-on: ubuntu-latest env: SHOULD_DEPLOY: ${{needs.prepare.outputs.should_deploy}} @@ -273,23 +129,23 @@ jobs: TO_TAG: ${{needs.prepare.outputs.to_tag}} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '16' - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.x' - name: Download a Coverage Results if: ${{ github.event.inputs.skiptests == 'false' || github.ref_name == 'release' }} - uses: actions/download-artifact@v3.0.2 + uses: actions/download-artifact@v4.1.0 with: name: coverage @@ -352,7 +208,7 @@ jobs: histCoveragePath: historical-coverage.json - name: Create Release - uses: ncipollo/release-action@v1.12.0 + uses: ncipollo/release-action@v1.13.0 if: ${{ env.SHOULD_DEPLOY == 'true' }} with: allowUpdates: true @@ -365,8 +221,8 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Update Baseline Coverage - uses: ncipollo/release-action@v1.12.0 - if: ${{ github.event.inputs.updateCoverage == 'true' }} + uses: ncipollo/release-action@v1.13.0 + if: ${{ github.event.inputs.updateCoverage == 'true' || github.ref_name == 'release' }} with: allowUpdates: true tag: baseline @@ -378,7 +234,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Upload Build Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: release-${{ env.PKG_VERSION }} path: /home/runner/work/release/release.tar.gz @@ -389,7 +245,7 @@ jobs: notify: name: Notify if: ${{ always() }} - needs: [prepare, tests-python, tests-playwright, tests-playwright-legacy, release] + needs: [prepare, tests, release] runs-on: ubuntu-latest env: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} @@ -456,10 +312,10 @@ jobs: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Download a Release Artifact - uses: actions/download-artifact@v3.0.2 + uses: actions/download-artifact@v4.1.0 with: name: release-${{ env.PKG_VERSION }} @@ -474,7 +330,7 @@ jobs: npm ci cd ../.. echo "Start Deploy..." - node ./dev/deploy-to-container/cli.js --branch ${{ github.ref_name }} --domain dev.ietf.org --appversion ${{ env.PKG_VERSION }} --commit ${{ github.sha }} --ghrunid ${{ github.run_id }} + node ./dev/deploy-to-container/cli.js --branch ${{ github.ref_name }} --domain dev.ietf.org --appversion ${{ env.PKG_VERSION }} --commit ${{ github.sha }} --ghrunid ${{ github.run_id }} --nodbrefresh ${{ github.event.inputs.sandboxNoDbRefresh }} - name: Cleanup old docker resources env: @@ -495,7 +351,7 @@ jobs: steps: - name: Download a Release Artifact - uses: actions/download-artifact@v3.0.2 + uses: actions/download-artifact@v4.1.0 with: name: release-${{ env.PKG_VERSION }} path: /a/www/ietf-datatracker/main.dev.${{ github.run_number }} diff --git a/.github/workflows/ci-run-tests.yml b/.github/workflows/ci-run-tests.yml index eec60cb641..9121bf8aea 100644 --- a/.github/workflows/ci-run-tests.yml +++ b/.github/workflows/ci-run-tests.yml @@ -1,9 +1,10 @@ -name: Run All Tests +name: PR - Run All Tests on: pull_request: branches: - 'main' + - 'feat/rfc' paths: - 'client/**' - 'ietf/**' @@ -12,149 +13,7 @@ on: - 'package.json' jobs: - tests-python: - name: Run Tests (Python) - runs-on: ubuntu-latest - container: ghcr.io/ietf-tools/datatracker-app-base:latest - - services: - db: - image: ghcr.io/ietf-tools/datatracker-db:latest - - steps: - - uses: actions/checkout@v3 - - - name: Prepare for tests - run: | - chmod +x ./dev/tests/prepare.sh - sh ./dev/tests/prepare.sh - - - name: Ensure DB is ready - run: | - /usr/local/bin/wait-for db:5432 -- echo "DB ready" - - - name: Run all tests - run: | - echo "Running checks..." - ./ietf/manage.py check - ./ietf/manage.py migrate --fake-initial - echo "Validating migrations..." - if ! ( ietf/manage.py makemigrations --dry-run --check --verbosity 3 ) ; then - echo "Model changes without migrations found." - echo ${MSG} - exit 1 - fi - echo "Running tests..." - ./ietf/manage.py test --validate-html-harder --settings=settings_test - coverage xml - - - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v3.1.4 - with: - files: coverage.xml - - - name: Convert Coverage Results - if: ${{ always() }} - run: | - mv latest-coverage.json coverage.json - - - name: Upload Coverage Results as Build Artifact - uses: actions/upload-artifact@v3.0.0 - if: ${{ always() }} - with: - name: coverage - path: coverage.json - - tests-playwright: - name: Run Tests (Playwright) - runs-on: macos-latest - strategy: - fail-fast: false - matrix: - project: [chromium, firefox] - - steps: - - uses: actions/checkout@v3 - - - uses: actions/setup-node@v3 - with: - node-version: '18' - - - name: Run all tests - run: | - echo "Installing dependencies..." - yarn - echo "Installing Playwright..." - cd playwright - mkdir test-results - npm ci - npx playwright install --with-deps ${{ matrix.project }} - echo "Running tests..." - npx playwright test --project=${{ matrix.project }} - - - name: Upload Report - uses: actions/upload-artifact@v3.0.0 - if: ${{ always() }} - continue-on-error: true - with: - name: playwright-results-${{ matrix.project }} - path: playwright/test-results/ - if-no-files-found: ignore - - tests-playwright-legacy: - name: Run Tests (Playwright Legacy) - runs-on: ubuntu-latest - container: ghcr.io/ietf-tools/datatracker-app-base:latest - strategy: - fail-fast: false - matrix: - project: [chromium, firefox] - - services: - db: - image: ghcr.io/ietf-tools/datatracker-db:latest - - steps: - - uses: actions/checkout@v3 - - - name: Prepare for tests - run: | - chmod +x ./dev/tests/prepare.sh - sh ./dev/tests/prepare.sh - - - name: Ensure DB is ready - run: | - /usr/local/bin/wait-for db:5432 -- echo "DB ready" - - - name: Start Datatracker - run: | - echo "Running checks..." - ./ietf/manage.py check - echo "Starting datatracker..." - ./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local & - echo "Waiting for datatracker to be ready..." - /usr/local/bin/wait-for localhost:8000 -- echo "Datatracker ready" - - - name: Run all tests - env: - # Required to get firefox to run as root: - HOME: "" - run: | - echo "Installing dependencies..." - yarn - echo "Installing Playwright..." - cd playwright - mkdir test-results - npm ci - npx playwright install --with-deps ${{ matrix.project }} - echo "Running tests..." - npx playwright test --project=${{ matrix.project }} -c playwright-legacy.config.js - - - name: Upload Report - uses: actions/upload-artifact@v3 - if: ${{ always() }} - continue-on-error: true - with: - name: playwright-legacy-results-${{ matrix.project }} - path: playwright/test-results/ - if-no-files-found: ignore + tests: + uses: ./.github/workflows/tests.yml + with: + ignoreLowerCoverage: false \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4bd7362c4a..3444c03b5e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -26,12 +26,12 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index b0dedc42e0..ede6157541 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,6 +15,8 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Dependency Review' uses: actions/dependency-review-action@v3 + with: + vulnerability-check: false diff --git a/.github/workflows/dev-assets-sync-nightly.yml b/.github/workflows/dev-assets-sync-nightly.yml index 582ba98f1a..bfb50bd41e 100644 --- a/.github/workflows/dev-assets-sync-nightly.yml +++ b/.github/workflows/dev-assets-sync-nightly.yml @@ -29,17 +29,17 @@ jobs: contents: read packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker Build & Push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: dev/shared-assets-sync/Dockerfile diff --git a/.github/workflows/sandbox-refresh.yml b/.github/workflows/sandbox-refresh.yml index 4d27b9c742..3ddb119e4f 100644 --- a/.github/workflows/sandbox-refresh.yml +++ b/.github/workflows/sandbox-refresh.yml @@ -15,7 +15,7 @@ jobs: contents: read steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Refresh DBs env: diff --git a/.github/workflows/tests-az.yml b/.github/workflows/tests-az.yml new file mode 100644 index 0000000000..b6f0cfc352 --- /dev/null +++ b/.github/workflows/tests-az.yml @@ -0,0 +1,109 @@ +name: Tests (Azure Test) + +on: + workflow_dispatch: + +jobs: + main: + name: Run Tests on Azure temp VM + runs-on: ubuntu-latest + + permissions: + contents: read + + steps: + - name: Launch VM on Azure + id: azlaunch + run: | + echo "Authenticating to Azure..." + az login --service-principal -u ${{ secrets.AZ_TESTS_APP_ID }} -p ${{ secrets.AZ_TESTS_PWD }} --tenant ${{ secrets.AZ_TESTS_TENANT_ID }} + echo "Creating VM..." + vminfo=$(az vm create \ + --resource-group ghaDatatrackerTests \ + --name tmpGhaVM2 \ + --image Ubuntu2204 \ + --admin-username azureuser \ + --generate-ssh-keys \ + --priority Spot \ + --size Standard_D4as_v5 \ + --max-price -1 \ + --os-disk-size-gb 30 \ + --eviction-policy Delete \ + --nic-delete-option Delete \ + --output tsv \ + --query "publicIpAddress") + echo "ipaddr=$vminfo" >> "$GITHUB_OUTPUT" + echo "VM Public IP: $vminfo" + cat ~/.ssh/id_rsa > ${{ github.workspace }}/prvkey.key + ssh-keyscan -t rsa $vminfo >> ~/.ssh/known_hosts + + - name: Remote SSH into VM + uses: appleboy/ssh-action@2451745138b602d3e100a6def50c8e4e39591d4c + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + host: ${{ steps.azlaunch.outputs.ipaddr }} + port: 22 + username: azureuser + command_timeout: 60m + key_path: ${{ github.workspace }}/prvkey.key + envs: GITHUB_TOKEN + script_stop: true + script: | + export DEBIAN_FRONTEND=noninteractive + lsb_release -a + sudo apt-get update + sudo apt-get upgrade -y + + echo "Installing Docker..." + curl -fsSL https://get.docker.com -o get-docker.sh + sudo sh get-docker.sh + + echo "Starting Containers..." + sudo docker network create dtnet + sudo docker run -d --name db --network=dtnet ghcr.io/ietf-tools/datatracker-db:latest & + sudo docker run -d --name app --network=dtnet ghcr.io/ietf-tools/datatracker-app-base:latest sleep infinity & + wait + + echo "Cloning datatracker repo..." + sudo docker exec app git clone --depth=1 https://github.com/ietf-tools/datatracker.git . + echo "Prepare tests..." + sudo docker exec app chmod +x ./dev/tests/prepare.sh + sudo docker exec app sh ./dev/tests/prepare.sh + echo "Running checks..." + sudo docker exec app ietf/manage.py check + sudo docker exec app ietf/manage.py migrate --fake-initial + echo "Running tests..." + sudo docker exec app ietf/manage.py test -v2 --validate-html-harder --settings=settings_test + + - name: Destroy VM + resources + if: always() + shell: pwsh + run: | + echo "Destroying VM..." + az vm delete -g ghaDatatrackerTests -n tmpGhaVM2 --yes --force-deletion true + + $resourceOrderRemovalOrder = [ordered]@{ + "Microsoft.Compute/virtualMachines" = 0 + "Microsoft.Compute/disks" = 1 + "Microsoft.Network/networkInterfaces" = 2 + "Microsoft.Network/publicIpAddresses" = 3 + "Microsoft.Network/networkSecurityGroups" = 4 + "Microsoft.Network/virtualNetworks" = 5 + } + echo "Fetching remaining resources..." + $resources = az resource list --resource-group ghaDatatrackerTests | ConvertFrom-Json + + $orderedResources = $resources + | Sort-Object @{ + Expression = {$resourceOrderRemovalOrder[$_.type]} + Descending = $False + } + + echo "Deleting remaining resources..." + $orderedResources | ForEach-Object { + az resource delete --resource-group ghaDatatrackerTests --ids $_.id --verbose + } + + echo "Logout from Azure..." + az logout diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000000..a3a6135f9c --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,171 @@ +name: Reusable Tests Workflow + +on: + workflow_call: + inputs: + ignoreLowerCoverage: + description: 'Ignore Lower Coverage' + default: false + required: true + type: boolean + +jobs: + tests-python: + name: Python Tests + runs-on: ubuntu-latest + container: ghcr.io/ietf-tools/datatracker-app-base:latest + + services: + db: + image: ghcr.io/ietf-tools/datatracker-db:latest + + steps: + - uses: actions/checkout@v4 + + - name: Prepare for tests + run: | + chmod +x ./dev/tests/prepare.sh + sh ./dev/tests/prepare.sh + + - name: Ensure DB is ready + run: | + /usr/local/bin/wait-for db:5432 -- echo "DB ready" + + - name: Run all tests + shell: bash + run: | + echo "Running checks..." + ./ietf/manage.py check + ./ietf/manage.py migrate --fake-initial + echo "Validating migrations..." + if ! ( ietf/manage.py makemigrations --dry-run --check --verbosity 3 ) ; then + echo "Model changes without migrations found." + exit 1 + fi + echo "Running tests..." + if [[ "x${{ github.event.inputs.ignoreLowerCoverage }}" == "xtrue" ]]; then + echo "Lower coverage failures will be ignored." + HOME=/root ./ietf/manage.py test -v2 --validate-html-harder --settings=settings_test --ignore-lower-coverage + else + HOME=/root ./ietf/manage.py test -v2 --validate-html-harder --settings=settings_test + fi + coverage xml + + - name: Upload geckodriver.log + uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: geckodriverlog + path: geckodriver.log + + - name: Upload Coverage Results to Codecov + uses: codecov/codecov-action@v3.1.4 + with: + files: coverage.xml + + - name: Convert Coverage Results + if: ${{ always() }} + run: | + mv latest-coverage.json coverage.json + + - name: Upload Coverage Results as Build Artifact + uses: actions/upload-artifact@v4 + if: ${{ always() }} + with: + name: coverage + path: coverage.json + + tests-playwright: + name: Playwright Tests + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + project: [chromium, firefox] + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Run all tests + run: | + echo "Installing dependencies..." + yarn + echo "Installing Playwright..." + cd playwright + mkdir test-results + npm ci + npx playwright install --with-deps ${{ matrix.project }} + echo "Running tests..." + npx playwright test --project=${{ matrix.project }} + + - name: Upload Report + uses: actions/upload-artifact@v4 + if: ${{ always() }} + continue-on-error: true + with: + name: playwright-results-${{ matrix.project }} + path: playwright/test-results/ + if-no-files-found: ignore + + tests-playwright-legacy: + name: Playwright Legacy Tests + runs-on: ubuntu-latest + container: ghcr.io/ietf-tools/datatracker-app-base:latest + strategy: + fail-fast: false + matrix: + project: [chromium, firefox] + + services: + db: + image: ghcr.io/ietf-tools/datatracker-db:latest + + steps: + - uses: actions/checkout@v4 + + - name: Prepare for tests + run: | + chmod +x ./dev/tests/prepare.sh + sh ./dev/tests/prepare.sh + + - name: Ensure DB is ready + run: | + /usr/local/bin/wait-for db:5432 -- echo "DB ready" + + - name: Start Datatracker + run: | + echo "Running checks..." + ./ietf/manage.py check + ./ietf/manage.py migrate --fake-initial + echo "Starting datatracker..." + ./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local & + echo "Waiting for datatracker to be ready..." + /usr/local/bin/wait-for localhost:8000 -- echo "Datatracker ready" + + - name: Run all tests + env: + # Required to get firefox to run as root: + HOME: "" + run: | + echo "Installing dependencies..." + yarn + echo "Installing Playwright..." + cd playwright + mkdir test-results + npm ci + npx playwright install --with-deps ${{ matrix.project }} + echo "Running tests..." + npx playwright test --project=${{ matrix.project }} -c playwright-legacy.config.js + + - name: Upload Report + uses: actions/upload-artifact@v4 + if: ${{ always() }} + continue-on-error: true + with: + name: playwright-legacy-results-${{ matrix.project }} + path: playwright/test-results/ + if-no-files-found: ignore diff --git a/.pnp.cjs b/.pnp.cjs index 622e680ac2..436846301a 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -33,74 +33,83 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { [null, {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ - ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@parcel/optimizer-data-url", "npm:2.9.2"],\ - ["@parcel/transformer-inline-string", "npm:2.9.2"],\ - ["@parcel/transformer-sass", "npm:2.9.2"],\ + ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ + ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@parcel/optimizer-data-url", "npm:2.10.0"],\ + ["@parcel/transformer-inline-string", "npm:2.10.0"],\ + ["@parcel/transformer-sass", "npm:2.10.0"],\ ["@popperjs/core", "npm:2.11.8"],\ - ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.2"],\ + ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.5"],\ ["@twuni/emojify", "npm:1.0.2"],\ - ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.3"],\ - ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.0"],\ - ["bootstrap-icons", "npm:1.10.5"],\ - ["browser-fs-access", "npm:0.34.1"],\ + ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.4.0"],\ + ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.2"],\ + ["bootstrap-icons", "npm:1.11.1"],\ + ["browser-fs-access", "npm:0.35.0"],\ ["browserlist", "npm:1.0.1"],\ - ["c8", "npm:8.0.0"],\ - ["caniuse-lite", "npm:1.0.30001495"],\ + ["c8", "npm:8.0.1"],\ + ["caniuse-lite", "npm:1.0.30001538"],\ ["d3", "npm:7.8.5"],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ - ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.13.3"],\ - ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.27.5"],\ - ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.0.1"],\ + ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.15.1"],\ + ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.29.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.2.0"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"],\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.15.1"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.18.1"],\ ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.1.0"],\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.0.5"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.7.0"],\ ["ical.js", "npm:1.5.0"],\ - ["jquery", "npm:3.7.0"],\ + ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ ["list.js", "npm:2.3.1"],\ ["lodash", "npm:4.17.21"],\ ["lodash-es", "npm:4.17.21"],\ - ["luxon", "npm:3.3.0"],\ + ["luxon", "npm:3.4.3"],\ ["moment", "npm:2.29.4"],\ ["moment-timezone", "npm:0.5.43"],\ ["ms", "npm:2.1.3"],\ ["murmurhash-js", "npm:1.0.0"],\ - ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.34.4"],\ - ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.9.2"],\ - ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.4"],\ + ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.35.0"],\ + ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.10.0"],\ + ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.7"],\ ["pinia-plugin-persist", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:1.0.0"],\ ["pug", "npm:3.0.2"],\ - ["sass", "npm:1.63.4"],\ + ["sass", "npm:1.69.4"],\ ["seedrandom", "npm:3.0.5"],\ ["select2", "npm:4.1.0-rc.0"],\ ["select2-bootstrap-5-theme", "npm:1.3.0"],\ ["send", "npm:0.18.0"],\ - ["shepherd.js", "npm:11.1.1"],\ + ["shepherd.js", "npm:11.2.0"],\ ["slugify", "npm:1.6.6"],\ ["sortablejs", "npm:1.15.0"],\ - ["vanillajs-datepicker", "npm:1.3.3"],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.9"],\ - ["vue", "npm:3.3.4"],\ - ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.2"],\ + ["vanillajs-datepicker", "npm:1.3.4"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.0"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ + ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.5"],\ ["zxcvbn", "npm:4.4.2"]\ ],\ "linkType": "SOFT"\ }]\ ]],\ + ["@aashutoshrathi/word-wrap", [\ + ["npm:1.2.6", {\ + "packageLocation": "./.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-ada901b9e7.zip/node_modules/@aashutoshrathi/word-wrap/",\ + "packageDependencies": [\ + ["@aashutoshrathi/word-wrap", "npm:1.2.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@babel/code-frame", [\ ["npm:7.16.7", {\ "packageLocation": "./.yarn/cache/@babel-code-frame-npm-7.16.7-093eb9e124-db2f7faa31.zip/node_modules/@babel/code-frame/",\ @@ -141,15 +150,25 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:7.22.4", {\ - "packageLocation": "./.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip/node_modules/@babel/parser/",\ + ["npm:7.23.0", {\ + "packageLocation": "./.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip/node_modules/@babel/parser/",\ "packageDependencies": [\ - ["@babel/parser", "npm:7.22.4"],\ + ["@babel/parser", "npm:7.23.0"],\ ["@babel/types", "npm:7.18.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ + ["@babel/runtime", [\ + ["npm:7.23.2", {\ + "packageLocation": "./.yarn/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-6c4df4839e.zip/node_modules/@babel/runtime/",\ + "packageDependencies": [\ + ["@babel/runtime", "npm:7.23.2"],\ + ["regenerator-runtime", "npm:0.14.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@babel/types", [\ ["npm:7.18.4", {\ "packageLocation": "./.yarn/cache/@babel-types-npm-7.18.4-758c2695f8-85df59beb9.zip/node_modules/@babel/types/",\ @@ -171,19 +190,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@css-render/plugin-bem", [\ - ["npm:0.15.10", {\ - "packageLocation": "./.yarn/cache/@css-render-plugin-bem-npm-0.15.10-41ccecaa2f-cbab72a7b5.zip/node_modules/@css-render/plugin-bem/",\ + ["npm:0.15.12", {\ + "packageLocation": "./.yarn/cache/@css-render-plugin-bem-npm-0.15.12-bf8b43dc1f-9fa7ddd62b.zip/node_modules/@css-render/plugin-bem/",\ "packageDependencies": [\ - ["@css-render/plugin-bem", "npm:0.15.10"]\ + ["@css-render/plugin-bem", "npm:0.15.12"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10", {\ - "packageLocation": "./.yarn/__virtual__/@css-render-plugin-bem-virtual-0147f0cc02/0/cache/@css-render-plugin-bem-npm-0.15.10-41ccecaa2f-cbab72a7b5.zip/node_modules/@css-render/plugin-bem/",\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12", {\ + "packageLocation": "./.yarn/__virtual__/@css-render-plugin-bem-virtual-3ee8479233/0/cache/@css-render-plugin-bem-npm-0.15.12-bf8b43dc1f-9fa7ddd62b.zip/node_modules/@css-render/plugin-bem/",\ "packageDependencies": [\ - ["@css-render/plugin-bem", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10"],\ + ["@css-render/plugin-bem", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12"],\ ["@types/css-render", null],\ - ["css-render", "npm:0.15.10"]\ + ["css-render", "npm:0.15.12"]\ ],\ "packagePeers": [\ "@types/css-render",\ @@ -200,12 +219,32 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10", {\ - "packageLocation": "./.yarn/__virtual__/@css-render-vue3-ssr-virtual-2d57ce4b92/0/cache/@css-render-vue3-ssr-npm-0.15.10-b8526cc313-7977e0c440.zip/node_modules/@css-render/vue3-ssr/",\ + ["npm:0.15.12", {\ + "packageLocation": "./.yarn/cache/@css-render-vue3-ssr-npm-0.15.12-a130f4db3a-a5505ae161.zip/node_modules/@css-render/vue3-ssr/",\ "packageDependencies": [\ - ["@css-render/vue3-ssr", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10"],\ + ["@css-render/vue3-ssr", "npm:0.15.12"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:07229bbf54bc488d21e48f65df3fcd2cdabd1e401dfffccce7403d04695be90e478a0d508694f896481602b0f9db804b9f384dfa051fe08e896fd18fd1fe0b6b#npm:0.15.10", {\ + "packageLocation": "./.yarn/__virtual__/@css-render-vue3-ssr-virtual-5eb3a62c1f/0/cache/@css-render-vue3-ssr-npm-0.15.10-b8526cc313-7977e0c440.zip/node_modules/@css-render/vue3-ssr/",\ + "packageDependencies": [\ + ["@css-render/vue3-ssr", "virtual:07229bbf54bc488d21e48f65df3fcd2cdabd1e401dfffccce7403d04695be90e478a0d508694f896481602b0f9db804b9f384dfa051fe08e896fd18fd1fe0b6b#npm:0.15.10"],\ ["@types/vue", null],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ + ],\ + "packagePeers": [\ + "@types/vue",\ + "vue"\ + ],\ + "linkType": "HARD"\ + }],\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12", {\ + "packageLocation": "./.yarn/__virtual__/@css-render-vue3-ssr-virtual-f9b68b2e9d/0/cache/@css-render-vue3-ssr-npm-0.15.12-a130f4db3a-a5505ae161.zip/node_modules/@css-render/vue3-ssr/",\ + "packageDependencies": [\ + ["@css-render/vue3-ssr", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12"],\ + ["@types/vue", null],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -224,199 +263,199 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@esbuild/android-arm", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.17.13-235368b68b/node_modules/@esbuild/android-arm/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.18.20-a30c33e9ed/node_modules/@esbuild/android-arm/",\ "packageDependencies": [\ - ["@esbuild/android-arm", "npm:0.17.13"]\ + ["@esbuild/android-arm", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/android-arm64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.17.13-7d21726b95/node_modules/@esbuild/android-arm64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.18.20-fd4fb45ae7/node_modules/@esbuild/android-arm64/",\ "packageDependencies": [\ - ["@esbuild/android-arm64", "npm:0.17.13"]\ + ["@esbuild/android-arm64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/android-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.17.13-dd7977b0ba/node_modules/@esbuild/android-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.18.20-22b610e3f4/node_modules/@esbuild/android-x64/",\ "packageDependencies": [\ - ["@esbuild/android-x64", "npm:0.17.13"]\ + ["@esbuild/android-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/darwin-arm64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.17.13-3c31ee9bef/node_modules/@esbuild/darwin-arm64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.18.20-00b3504077/node_modules/@esbuild/darwin-arm64/",\ "packageDependencies": [\ - ["@esbuild/darwin-arm64", "npm:0.17.13"]\ + ["@esbuild/darwin-arm64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/darwin-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.17.13-2af4bfbe4a/node_modules/@esbuild/darwin-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.18.20-767fe27d1b/node_modules/@esbuild/darwin-x64/",\ "packageDependencies": [\ - ["@esbuild/darwin-x64", "npm:0.17.13"]\ + ["@esbuild/darwin-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/freebsd-arm64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.17.13-aee39a763e/node_modules/@esbuild/freebsd-arm64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.18.20-797e8c8987/node_modules/@esbuild/freebsd-arm64/",\ "packageDependencies": [\ - ["@esbuild/freebsd-arm64", "npm:0.17.13"]\ + ["@esbuild/freebsd-arm64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/freebsd-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.17.13-279fb33dbc/node_modules/@esbuild/freebsd-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.18.20-f7563ff3dd/node_modules/@esbuild/freebsd-x64/",\ "packageDependencies": [\ - ["@esbuild/freebsd-x64", "npm:0.17.13"]\ + ["@esbuild/freebsd-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-arm", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.17.13-520e292c25/node_modules/@esbuild/linux-arm/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.18.20-06b400b09e/node_modules/@esbuild/linux-arm/",\ "packageDependencies": [\ - ["@esbuild/linux-arm", "npm:0.17.13"]\ + ["@esbuild/linux-arm", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-arm64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.17.13-533eb0e4eb/node_modules/@esbuild/linux-arm64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.18.20-7b48b328fe/node_modules/@esbuild/linux-arm64/",\ "packageDependencies": [\ - ["@esbuild/linux-arm64", "npm:0.17.13"]\ + ["@esbuild/linux-arm64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-ia32", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.17.13-46f5ce8b93/node_modules/@esbuild/linux-ia32/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.18.20-2f5a035f9e/node_modules/@esbuild/linux-ia32/",\ "packageDependencies": [\ - ["@esbuild/linux-ia32", "npm:0.17.13"]\ + ["@esbuild/linux-ia32", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-loong64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.17.13-ef4c0fa326/node_modules/@esbuild/linux-loong64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.18.20-e91b93ee90/node_modules/@esbuild/linux-loong64/",\ "packageDependencies": [\ - ["@esbuild/linux-loong64", "npm:0.17.13"]\ + ["@esbuild/linux-loong64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-mips64el", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.17.13-5b1f2c5c01/node_modules/@esbuild/linux-mips64el/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.18.20-a5e9429f2a/node_modules/@esbuild/linux-mips64el/",\ "packageDependencies": [\ - ["@esbuild/linux-mips64el", "npm:0.17.13"]\ + ["@esbuild/linux-mips64el", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-ppc64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.17.13-e41e2e492f/node_modules/@esbuild/linux-ppc64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.18.20-218f398134/node_modules/@esbuild/linux-ppc64/",\ "packageDependencies": [\ - ["@esbuild/linux-ppc64", "npm:0.17.13"]\ + ["@esbuild/linux-ppc64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-riscv64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.17.13-b222bf3e73/node_modules/@esbuild/linux-riscv64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.18.20-6a2972f753/node_modules/@esbuild/linux-riscv64/",\ "packageDependencies": [\ - ["@esbuild/linux-riscv64", "npm:0.17.13"]\ + ["@esbuild/linux-riscv64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-s390x", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.17.13-5a91ba0bd2/node_modules/@esbuild/linux-s390x/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.18.20-ff9d596142/node_modules/@esbuild/linux-s390x/",\ "packageDependencies": [\ - ["@esbuild/linux-s390x", "npm:0.17.13"]\ + ["@esbuild/linux-s390x", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/linux-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.17.13-01575597b4/node_modules/@esbuild/linux-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.18.20-de8e99b449/node_modules/@esbuild/linux-x64/",\ "packageDependencies": [\ - ["@esbuild/linux-x64", "npm:0.17.13"]\ + ["@esbuild/linux-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/netbsd-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.17.13-8e49ac13ef/node_modules/@esbuild/netbsd-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.18.20-39b460150f/node_modules/@esbuild/netbsd-x64/",\ "packageDependencies": [\ - ["@esbuild/netbsd-x64", "npm:0.17.13"]\ + ["@esbuild/netbsd-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/openbsd-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.17.13-f1857ad246/node_modules/@esbuild/openbsd-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.18.20-90ab921595/node_modules/@esbuild/openbsd-x64/",\ "packageDependencies": [\ - ["@esbuild/openbsd-x64", "npm:0.17.13"]\ + ["@esbuild/openbsd-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/sunos-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.17.13-d366ada0a9/node_modules/@esbuild/sunos-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.18.20-d18b46b343/node_modules/@esbuild/sunos-x64/",\ "packageDependencies": [\ - ["@esbuild/sunos-x64", "npm:0.17.13"]\ + ["@esbuild/sunos-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-arm64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.17.13-cd496c2d1d/node_modules/@esbuild/win32-arm64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.18.20-a58fe6c6a3/node_modules/@esbuild/win32-arm64/",\ "packageDependencies": [\ - ["@esbuild/win32-arm64", "npm:0.17.13"]\ + ["@esbuild/win32-arm64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-ia32", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.17.13-8a813564f3/node_modules/@esbuild/win32-ia32/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.18.20-d7ee926338/node_modules/@esbuild/win32-ia32/",\ "packageDependencies": [\ - ["@esbuild/win32-ia32", "npm:0.17.13"]\ + ["@esbuild/win32-ia32", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@esbuild/win32-x64", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.17.13-29882f65f7/node_modules/@esbuild/win32-x64/",\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.18.20-37a9ab2bda/node_modules/@esbuild/win32-x64/",\ "packageDependencies": [\ - ["@esbuild/win32-x64", "npm:0.17.13"]\ + ["@esbuild/win32-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ @@ -429,12 +468,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0", {\ - "packageLocation": "./.yarn/__virtual__/@eslint-community-eslint-utils-virtual-944437d78e/0/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip/node_modules/@eslint-community/eslint-utils/",\ + ["virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0", {\ + "packageLocation": "./.yarn/__virtual__/@eslint-community-eslint-utils-virtual-a282c466c0/0/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip/node_modules/@eslint-community/eslint-utils/",\ "packageDependencies": [\ - ["@eslint-community/eslint-utils", "virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0"],\ + ["@eslint-community/eslint-utils", "virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-visitor-keys", "npm:3.3.0"]\ ],\ "packagePeers": [\ @@ -445,29 +484,29 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@eslint-community/regexpp", [\ - ["npm:4.4.1", {\ - "packageLocation": "./.yarn/cache/@eslint-community-regexpp-npm-4.4.1-44c7391499-db97d8d08e.zip/node_modules/@eslint-community/regexpp/",\ + ["npm:4.5.1", {\ + "packageLocation": "./.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip/node_modules/@eslint-community/regexpp/",\ "packageDependencies": [\ - ["@eslint-community/regexpp", "npm:4.4.1"]\ + ["@eslint-community/regexpp", "npm:4.5.1"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:4.5.1", {\ - "packageLocation": "./.yarn/cache/@eslint-community-regexpp-npm-4.5.1-bf72922237-6d901166d6.zip/node_modules/@eslint-community/regexpp/",\ + ["npm:4.8.0", {\ + "packageLocation": "./.yarn/cache/@eslint-community-regexpp-npm-4.8.0-92ece47e3d-601e6d033d.zip/node_modules/@eslint-community/regexpp/",\ "packageDependencies": [\ - ["@eslint-community/regexpp", "npm:4.5.1"]\ + ["@eslint-community/regexpp", "npm:4.8.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@eslint/eslintrc", [\ - ["npm:2.0.3", {\ - "packageLocation": "./.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip/node_modules/@eslint/eslintrc/",\ + ["npm:2.1.2", {\ + "packageLocation": "./.yarn/cache/@eslint-eslintrc-npm-2.1.2-feb0771c9f-bc742a1e3b.zip/node_modules/@eslint/eslintrc/",\ "packageDependencies": [\ - ["@eslint/eslintrc", "npm:2.0.3"],\ + ["@eslint/eslintrc", "npm:2.1.2"],\ ["ajv", "npm:6.12.6"],\ ["debug", "virtual:b86a9fb34323a98c6519528ed55faa0d9b44ca8879307c0b29aa384bde47ff59a7d0c9051b31246f14521dfb71ba3c5d6d0b35c29fffc17bf875aa6ad977d9e8#npm:4.3.4"],\ - ["espree", "npm:9.5.2"],\ + ["espree", "npm:9.6.1"],\ ["globals", "npm:13.19.0"],\ ["ignore", "npm:5.2.0"],\ ["import-fresh", "npm:3.3.0"],\ @@ -479,46 +518,57 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@eslint/js", [\ - ["npm:8.43.0", {\ - "packageLocation": "./.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip/node_modules/@eslint/js/",\ + ["npm:8.52.0", {\ + "packageLocation": "./.yarn/cache/@eslint-js-npm-8.52.0-801dbdf7b0-490893b809.zip/node_modules/@eslint/js/",\ "packageDependencies": [\ - ["@eslint/js", "npm:8.43.0"]\ + ["@eslint/js", "npm:8.52.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@floating-ui/core", [\ - ["npm:1.2.6", {\ - "packageLocation": "./.yarn/cache/@floating-ui-core-npm-1.2.6-083bec342c-e4aa96c435.zip/node_modules/@floating-ui/core/",\ + ["npm:1.4.1", {\ + "packageLocation": "./.yarn/cache/@floating-ui-core-npm-1.4.1-fe89c45d92-be4ab864fe.zip/node_modules/@floating-ui/core/",\ "packageDependencies": [\ - ["@floating-ui/core", "npm:1.2.6"]\ + ["@floating-ui/core", "npm:1.4.1"],\ + ["@floating-ui/utils", "npm:0.1.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@floating-ui/dom", [\ - ["npm:1.2.6", {\ - "packageLocation": "./.yarn/cache/@floating-ui-dom-npm-1.2.6-9d4be07ec3-2226c6c244.zip/node_modules/@floating-ui/dom/",\ + ["npm:1.5.2", {\ + "packageLocation": "./.yarn/cache/@floating-ui-dom-npm-1.5.2-f1b8ca0c30-3c71eed50b.zip/node_modules/@floating-ui/dom/",\ "packageDependencies": [\ - ["@floating-ui/dom", "npm:1.2.6"],\ - ["@floating-ui/core", "npm:1.2.6"]\ + ["@floating-ui/dom", "npm:1.5.2"],\ + ["@floating-ui/core", "npm:1.4.1"],\ + ["@floating-ui/utils", "npm:0.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@floating-ui/utils", [\ + ["npm:0.1.2", {\ + "packageLocation": "./.yarn/cache/@floating-ui-utils-npm-0.1.2-22eefe56f0-3e29fd3c69.zip/node_modules/@floating-ui/utils/",\ + "packageDependencies": [\ + ["@floating-ui/utils", "npm:0.1.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@fullcalendar/bootstrap5", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.8-bbeae5dafc-c78ef0d62e.zip/node_modules/@fullcalendar/bootstrap5/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.9-ef68c3c094-1d6168fafc.zip/node_modules/@fullcalendar/bootstrap5/",\ "packageDependencies": [\ - ["@fullcalendar/bootstrap5", "npm:6.1.8"]\ + ["@fullcalendar/bootstrap5", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-bootstrap5-virtual-d0fea3107b/0/cache/@fullcalendar-bootstrap5-npm-6.1.8-bbeae5dafc-c78ef0d62e.zip/node_modules/@fullcalendar/bootstrap5/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-bootstrap5-virtual-32a9d3c1d6/0/cache/@fullcalendar-bootstrap5-npm-6.1.9-ef68c3c094-1d6168fafc.zip/node_modules/@fullcalendar/bootstrap5/",\ "packageDependencies": [\ - ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null]\ ],\ "packagePeers": [\ @@ -529,28 +579,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/core", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-core-npm-6.1.8-da04efa804-66c13078c9.zip/node_modules/@fullcalendar/core/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-core-npm-6.1.9-b4da84d4b8-836db3e40c.zip/node_modules/@fullcalendar/core/",\ "packageDependencies": [\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["preact", "npm:10.12.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@fullcalendar/daygrid", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-daygrid-npm-6.1.8-3f45184389-a99441c81d.zip/node_modules/@fullcalendar/daygrid/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-daygrid-npm-6.1.9-4c0da59f84-3db55247c4.zip/node_modules/@fullcalendar/daygrid/",\ "packageDependencies": [\ - ["@fullcalendar/daygrid", "npm:6.1.8"]\ + ["@fullcalendar/daygrid", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-daygrid-virtual-77be6a5058/0/cache/@fullcalendar-daygrid-npm-6.1.8-3f45184389-a99441c81d.zip/node_modules/@fullcalendar/daygrid/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-daygrid-virtual-8030f0f5bf/0/cache/@fullcalendar-daygrid-npm-6.1.9-4c0da59f84-3db55247c4.zip/node_modules/@fullcalendar/daygrid/",\ "packageDependencies": [\ - ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null]\ ],\ "packagePeers": [\ @@ -561,18 +611,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/icalendar", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-icalendar-npm-6.1.8-bee329d052-f322ce54bb.zip/node_modules/@fullcalendar/icalendar/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-icalendar-npm-6.1.9-92e390eda8-d47daf4ae0.zip/node_modules/@fullcalendar/icalendar/",\ "packageDependencies": [\ - ["@fullcalendar/icalendar", "npm:6.1.8"]\ + ["@fullcalendar/icalendar", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-icalendar-virtual-0660ccc07e/0/cache/@fullcalendar-icalendar-npm-6.1.8-bee329d052-f322ce54bb.zip/node_modules/@fullcalendar/icalendar/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-icalendar-virtual-2edf12646d/0/cache/@fullcalendar-icalendar-npm-6.1.9-92e390eda8-d47daf4ae0.zip/node_modules/@fullcalendar/icalendar/",\ "packageDependencies": [\ - ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null],\ ["@types/ical.js", null],\ ["ical.js", "npm:1.5.0"]\ @@ -587,18 +637,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/interaction", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-interaction-npm-6.1.8-6c6b6987db-3ef0da6dca.zip/node_modules/@fullcalendar/interaction/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-interaction-npm-6.1.9-f729b81a3d-787111ea6f.zip/node_modules/@fullcalendar/interaction/",\ "packageDependencies": [\ - ["@fullcalendar/interaction", "npm:6.1.8"]\ + ["@fullcalendar/interaction", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-interaction-virtual-39f9dba62d/0/cache/@fullcalendar-interaction-npm-6.1.8-6c6b6987db-3ef0da6dca.zip/node_modules/@fullcalendar/interaction/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-interaction-virtual-45406e4d3a/0/cache/@fullcalendar-interaction-npm-6.1.9-f729b81a3d-787111ea6f.zip/node_modules/@fullcalendar/interaction/",\ "packageDependencies": [\ - ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null]\ ],\ "packagePeers": [\ @@ -609,18 +659,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/list", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-list-npm-6.1.8-39b471f8da-b5c397040e.zip/node_modules/@fullcalendar/list/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-list-npm-6.1.9-f76695c5ab-978dd54b71.zip/node_modules/@fullcalendar/list/",\ "packageDependencies": [\ - ["@fullcalendar/list", "npm:6.1.8"]\ + ["@fullcalendar/list", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-list-virtual-a4f877cc68/0/cache/@fullcalendar-list-npm-6.1.8-39b471f8da-b5c397040e.zip/node_modules/@fullcalendar/list/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-list-virtual-95391a7d25/0/cache/@fullcalendar-list-npm-6.1.9-f76695c5ab-978dd54b71.zip/node_modules/@fullcalendar/list/",\ "packageDependencies": [\ - ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null]\ ],\ "packagePeers": [\ @@ -631,21 +681,21 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/luxon3", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-luxon3-npm-6.1.8-7f233a53e1-7e84200641.zip/node_modules/@fullcalendar/luxon3/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-luxon3-npm-6.1.9-d79fc8f961-25122126e2.zip/node_modules/@fullcalendar/luxon3/",\ "packageDependencies": [\ - ["@fullcalendar/luxon3", "npm:6.1.8"]\ + ["@fullcalendar/luxon3", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-luxon3-virtual-3a7af6083c/0/cache/@fullcalendar-luxon3-npm-6.1.8-7f233a53e1-7e84200641.zip/node_modules/@fullcalendar/luxon3/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-luxon3-virtual-2026214153/0/cache/@fullcalendar-luxon3-npm-6.1.9-d79fc8f961-25122126e2.zip/node_modules/@fullcalendar/luxon3/",\ "packageDependencies": [\ - ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null],\ ["@types/luxon", null],\ - ["luxon", "npm:3.3.0"]\ + ["luxon", "npm:3.4.3"]\ ],\ "packagePeers": [\ "@fullcalendar/core",\ @@ -657,19 +707,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/timegrid", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-timegrid-npm-6.1.8-22d8c05e30-122786fd40.zip/node_modules/@fullcalendar/timegrid/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-timegrid-npm-6.1.9-b227fefa80-8c12a508f7.zip/node_modules/@fullcalendar/timegrid/",\ "packageDependencies": [\ - ["@fullcalendar/timegrid", "npm:6.1.8"]\ + ["@fullcalendar/timegrid", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-timegrid-virtual-768bdb99c1/0/cache/@fullcalendar-timegrid-npm-6.1.8-22d8c05e30-122786fd40.zip/node_modules/@fullcalendar/timegrid/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-timegrid-virtual-6658ed7986/0/cache/@fullcalendar-timegrid-npm-6.1.9-b227fefa80-8c12a508f7.zip/node_modules/@fullcalendar/timegrid/",\ "packageDependencies": [\ - ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ - ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ + ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ + ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ ["@types/fullcalendar__core", null]\ ],\ "packagePeers": [\ @@ -680,21 +730,21 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fullcalendar/vue3", [\ - ["npm:6.1.8", {\ - "packageLocation": "./.yarn/cache/@fullcalendar-vue3-npm-6.1.8-a4963d0029-cff81d98ae.zip/node_modules/@fullcalendar/vue3/",\ + ["npm:6.1.9", {\ + "packageLocation": "./.yarn/cache/@fullcalendar-vue3-npm-6.1.9-3c150e259d-2c1c0fbe72.zip/node_modules/@fullcalendar/vue3/",\ "packageDependencies": [\ - ["@fullcalendar/vue3", "npm:6.1.8"]\ + ["@fullcalendar/vue3", "npm:6.1.9"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8", {\ - "packageLocation": "./.yarn/__virtual__/@fullcalendar-vue3-virtual-f86317f38e/0/cache/@fullcalendar-vue3-npm-6.1.8-a4963d0029-cff81d98ae.zip/node_modules/@fullcalendar/vue3/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9", {\ + "packageLocation": "./.yarn/__virtual__/@fullcalendar-vue3-virtual-00c58bdbde/0/cache/@fullcalendar-vue3-npm-6.1.9-3c150e259d-2c1c0fbe72.zip/node_modules/@fullcalendar/vue3/",\ "packageDependencies": [\ - ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ + ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ ["@types/fullcalendar__core", null],\ ["@types/vue", null],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@fullcalendar/core",\ @@ -725,11 +775,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@humanwhocodes/config-array", [\ - ["npm:0.11.10", {\ - "packageLocation": "./.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip/node_modules/@humanwhocodes/config-array/",\ + ["npm:0.11.13", {\ + "packageLocation": "./.yarn/cache/@humanwhocodes-config-array-npm-0.11.13-12314014f2-f8ea57b0d7.zip/node_modules/@humanwhocodes/config-array/",\ "packageDependencies": [\ - ["@humanwhocodes/config-array", "npm:0.11.10"],\ - ["@humanwhocodes/object-schema", "npm:1.2.1"],\ + ["@humanwhocodes/config-array", "npm:0.11.13"],\ + ["@humanwhocodes/object-schema", "npm:2.0.1"],\ ["debug", "virtual:b86a9fb34323a98c6519528ed55faa0d9b44ca8879307c0b29aa384bde47ff59a7d0c9051b31246f14521dfb71ba3c5d6d0b35c29fffc17bf875aa6ad977d9e8#npm:4.3.4"],\ ["minimatch", "npm:3.1.2"]\ ],\ @@ -746,10 +796,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@humanwhocodes/object-schema", [\ - ["npm:1.2.1", {\ - "packageLocation": "./.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip/node_modules/@humanwhocodes/object-schema/",\ + ["npm:2.0.1", {\ + "packageLocation": "./.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip/node_modules/@humanwhocodes/object-schema/",\ "packageDependencies": [\ - ["@humanwhocodes/object-schema", "npm:1.2.1"]\ + ["@humanwhocodes/object-schema", "npm:2.0.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -859,10 +909,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-darwin-arm64-npm-2.7.11-6bf2bf934e/node_modules/@lmdb/lmdb-darwin-arm64/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-darwin-arm64-npm-2.8.5-a9ab00615c/node_modules/@lmdb/lmdb-darwin-arm64/",\ "packageDependencies": [\ - ["@lmdb/lmdb-darwin-arm64", "npm:2.7.11"]\ + ["@lmdb/lmdb-darwin-arm64", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -875,10 +925,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-darwin-x64-npm-2.7.11-f282673377/node_modules/@lmdb/lmdb-darwin-x64/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-darwin-x64-npm-2.8.5-080b8c9329/node_modules/@lmdb/lmdb-darwin-x64/",\ "packageDependencies": [\ - ["@lmdb/lmdb-darwin-x64", "npm:2.7.11"]\ + ["@lmdb/lmdb-darwin-x64", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -891,10 +941,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-arm-npm-2.7.11-b0f3c42c8f/node_modules/@lmdb/lmdb-linux-arm/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-arm-npm-2.8.5-081004004c/node_modules/@lmdb/lmdb-linux-arm/",\ "packageDependencies": [\ - ["@lmdb/lmdb-linux-arm", "npm:2.7.11"]\ + ["@lmdb/lmdb-linux-arm", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -907,10 +957,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-arm64-npm-2.7.11-3dcb107756/node_modules/@lmdb/lmdb-linux-arm64/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-arm64-npm-2.8.5-9dfda9f24f/node_modules/@lmdb/lmdb-linux-arm64/",\ "packageDependencies": [\ - ["@lmdb/lmdb-linux-arm64", "npm:2.7.11"]\ + ["@lmdb/lmdb-linux-arm64", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -923,10 +973,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-x64-npm-2.7.11-f3bb75854e/node_modules/@lmdb/lmdb-linux-x64/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-linux-x64-npm-2.8.5-0f668ba9a7/node_modules/@lmdb/lmdb-linux-x64/",\ "packageDependencies": [\ - ["@lmdb/lmdb-linux-x64", "npm:2.7.11"]\ + ["@lmdb/lmdb-linux-x64", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -939,10 +989,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-win32-x64-npm-2.7.11-aa490eb71e/node_modules/@lmdb/lmdb-win32-x64/",\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/@lmdb-lmdb-win32-x64-npm-2.8.5-3702de4edb/node_modules/@lmdb/lmdb-win32-x64/",\ "packageDependencies": [\ - ["@lmdb/lmdb-win32-x64", "npm:2.7.11"]\ + ["@lmdb/lmdb-win32-x64", "npm:2.8.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -1109,21 +1159,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/bundler-default", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-bundler-default-npm-2.9.2-cd927ae646-acd5045aae.zip/node_modules/@parcel/bundler-default/",\ - "packageDependencies": [\ - ["@parcel/bundler-default", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/graph", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-bundler-default-npm-2.10.0-bf1aa01515-58d3619928.zip/node_modules/@parcel/bundler-default/",\ + "packageDependencies": [\ + ["@parcel/bundler-default", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/graph", "npm:3.0.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/cache", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip/node_modules/@parcel/cache/",\ + "packageDependencies": [\ + ["@parcel/cache", "npm:2.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-cache-npm-2.6.2-7c97030a45-e7b540fe10.zip/node_modules/@parcel/cache/",\ "packageDependencies": [\ @@ -1131,23 +1188,32 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip/node_modules/@parcel/cache/",\ + ["virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-cache-virtual-ef6118146d/0/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip/node_modules/@parcel/cache/",\ "packageDependencies": [\ - ["@parcel/cache", "npm:2.9.2"]\ + ["@parcel/cache", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/core", "npm:2.6.2"],\ + ["@parcel/fs", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@types/parcel__core", null],\ + ["lmdb", "npm:2.8.5"]\ ],\ - "linkType": "SOFT"\ + "packagePeers": [\ + "@types/parcel__core"\ + ],\ + "linkType": "HARD"\ }],\ - ["virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-cache-virtual-b519507b52/0/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip/node_modules/@parcel/cache/",\ - "packageDependencies": [\ - ["@parcel/cache", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-cache-virtual-e54076624a/0/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip/node_modules/@parcel/cache/",\ + "packageDependencies": [\ + ["@parcel/cache", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["@types/parcel__core", null],\ - ["lmdb", "npm:2.7.11"]\ + ["lmdb", "npm:2.8.5"]\ ],\ "packagePeers": [\ "@parcel/core",\ @@ -1170,95 +1236,80 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/parcel__core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-cache-virtual-d5cc0ae154/0/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip/node_modules/@parcel/cache/",\ - "packageDependencies": [\ - ["@parcel/cache", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/core", "npm:2.6.2"],\ - ["@parcel/fs", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@types/parcel__core", null],\ - ["lmdb", "npm:2.7.11"]\ - ],\ - "packagePeers": [\ - "@types/parcel__core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/codeframe", [\ - ["npm:2.6.2", {\ - "packageLocation": "./.yarn/cache/@parcel-codeframe-npm-2.6.2-39f0ef1504-3253f42b90.zip/node_modules/@parcel/codeframe/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-codeframe-npm-2.10.0-e8aa1b4ecc-d87b17d3ce.zip/node_modules/@parcel/codeframe/",\ "packageDependencies": [\ - ["@parcel/codeframe", "npm:2.6.2"],\ + ["@parcel/codeframe", "npm:2.10.0"],\ ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-codeframe-npm-2.9.2-964de9e20f-6a9cc23994.zip/node_modules/@parcel/codeframe/",\ + ["npm:2.6.2", {\ + "packageLocation": "./.yarn/cache/@parcel-codeframe-npm-2.6.2-39f0ef1504-3253f42b90.zip/node_modules/@parcel/codeframe/",\ "packageDependencies": [\ - ["@parcel/codeframe", "npm:2.9.2"],\ + ["@parcel/codeframe", "npm:2.6.2"],\ ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/compressor-raw", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-compressor-raw-npm-2.9.2-7dfbfadaf9-263005e4bc.zip/node_modules/@parcel/compressor-raw/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-compressor-raw-npm-2.10.0-961e5d9fe0-043fca0ecb.zip/node_modules/@parcel/compressor-raw/",\ "packageDependencies": [\ - ["@parcel/compressor-raw", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"]\ + ["@parcel/compressor-raw", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/config-default", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-config-default-npm-2.9.2-7a372f4a8e-b07a1c93d7.zip/node_modules/@parcel/config-default/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-config-default-npm-2.10.0-2a1fbdf24b-d780d05021.zip/node_modules/@parcel/config-default/",\ "packageDependencies": [\ - ["@parcel/config-default", "npm:2.9.2"]\ + ["@parcel/config-default", "npm:2.10.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:c28611412c955a1fda20639657c96ff2be961c906ace258361995235bacf8e4a907ad524e4fb9fb5a0aaae51e5563719e1d95f46bcfadadbe883a4a6942a7afb#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-config-default-virtual-9c28b5e2d3/0/cache/@parcel-config-default-npm-2.9.2-7a372f4a8e-b07a1c93d7.zip/node_modules/@parcel/config-default/",\ - "packageDependencies": [\ - ["@parcel/config-default", "virtual:c28611412c955a1fda20639657c96ff2be961c906ace258361995235bacf8e4a907ad524e4fb9fb5a0aaae51e5563719e1d95f46bcfadadbe883a4a6942a7afb#npm:2.9.2"],\ - ["@parcel/bundler-default", "npm:2.9.2"],\ - ["@parcel/compressor-raw", "npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/namer-default", "npm:2.9.2"],\ - ["@parcel/optimizer-css", "npm:2.9.2"],\ - ["@parcel/optimizer-htmlnano", "npm:2.9.2"],\ - ["@parcel/optimizer-image", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/optimizer-svgo", "npm:2.9.2"],\ - ["@parcel/optimizer-swc", "npm:2.9.2"],\ - ["@parcel/packager-css", "npm:2.9.2"],\ - ["@parcel/packager-html", "npm:2.9.2"],\ - ["@parcel/packager-js", "npm:2.9.2"],\ - ["@parcel/packager-raw", "npm:2.9.2"],\ - ["@parcel/packager-svg", "npm:2.9.2"],\ - ["@parcel/reporter-dev-server", "npm:2.9.2"],\ - ["@parcel/resolver-default", "npm:2.9.2"],\ - ["@parcel/runtime-browser-hmr", "npm:2.9.2"],\ - ["@parcel/runtime-js", "npm:2.9.2"],\ - ["@parcel/runtime-react-refresh", "npm:2.9.2"],\ - ["@parcel/runtime-service-worker", "npm:2.9.2"],\ - ["@parcel/transformer-babel", "npm:2.9.2"],\ - ["@parcel/transformer-css", "npm:2.9.2"],\ - ["@parcel/transformer-html", "npm:2.9.2"],\ - ["@parcel/transformer-image", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/transformer-js", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/transformer-json", "npm:2.9.2"],\ - ["@parcel/transformer-postcss", "npm:2.9.2"],\ - ["@parcel/transformer-posthtml", "npm:2.9.2"],\ - ["@parcel/transformer-raw", "npm:2.9.2"],\ - ["@parcel/transformer-react-refresh-wrap", "npm:2.9.2"],\ - ["@parcel/transformer-svg", "npm:2.9.2"],\ + ["virtual:71592776e81a3a98123fea990d2adcb9a2eb4cc84ca35ac4be3a6f331fe8d1f764a124c4f9a2dad3afd35076e01667fb0ef9ccd5629fbe405b31f0d1b14a14fd#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-config-default-virtual-61dcbb3314/0/cache/@parcel-config-default-npm-2.10.0-2a1fbdf24b-d780d05021.zip/node_modules/@parcel/config-default/",\ + "packageDependencies": [\ + ["@parcel/config-default", "virtual:71592776e81a3a98123fea990d2adcb9a2eb4cc84ca35ac4be3a6f331fe8d1f764a124c4f9a2dad3afd35076e01667fb0ef9ccd5629fbe405b31f0d1b14a14fd#npm:2.10.0"],\ + ["@parcel/bundler-default", "npm:2.10.0"],\ + ["@parcel/compressor-raw", "npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/namer-default", "npm:2.10.0"],\ + ["@parcel/optimizer-css", "npm:2.10.0"],\ + ["@parcel/optimizer-htmlnano", "npm:2.10.0"],\ + ["@parcel/optimizer-image", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/optimizer-svgo", "npm:2.10.0"],\ + ["@parcel/optimizer-swc", "npm:2.10.0"],\ + ["@parcel/packager-css", "npm:2.10.0"],\ + ["@parcel/packager-html", "npm:2.10.0"],\ + ["@parcel/packager-js", "npm:2.10.0"],\ + ["@parcel/packager-raw", "npm:2.10.0"],\ + ["@parcel/packager-svg", "npm:2.10.0"],\ + ["@parcel/packager-wasm", "npm:2.10.0"],\ + ["@parcel/reporter-dev-server", "npm:2.10.0"],\ + ["@parcel/resolver-default", "npm:2.10.0"],\ + ["@parcel/runtime-browser-hmr", "npm:2.10.0"],\ + ["@parcel/runtime-js", "npm:2.10.0"],\ + ["@parcel/runtime-react-refresh", "npm:2.10.0"],\ + ["@parcel/runtime-service-worker", "npm:2.10.0"],\ + ["@parcel/transformer-babel", "npm:2.10.0"],\ + ["@parcel/transformer-css", "npm:2.10.0"],\ + ["@parcel/transformer-html", "npm:2.10.0"],\ + ["@parcel/transformer-image", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/transformer-js", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/transformer-json", "npm:2.10.0"],\ + ["@parcel/transformer-postcss", "npm:2.10.0"],\ + ["@parcel/transformer-posthtml", "npm:2.10.0"],\ + ["@parcel/transformer-raw", "npm:2.10.0"],\ + ["@parcel/transformer-react-refresh-wrap", "npm:2.10.0"],\ + ["@parcel/transformer-svg", "npm:2.10.0"],\ ["@types/parcel__core", null]\ ],\ "packagePeers": [\ @@ -1269,6 +1320,38 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/core", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-core-npm-2.10.0-59eaeeba7a-c59c2971ea.zip/node_modules/@parcel/core/",\ + "packageDependencies": [\ + ["@parcel/core", "npm:2.10.0"],\ + ["@mischnic/json-sourcemap", "npm:0.1.0"],\ + ["@parcel/cache", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/events", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/graph", "npm:3.0.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/package-manager", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/profiler", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/source-map", "npm:2.1.1"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["abortcontroller-polyfill", "npm:1.7.3"],\ + ["base-x", "npm:3.0.9"],\ + ["browserslist", "npm:4.20.3"],\ + ["clone", "npm:2.1.2"],\ + ["dotenv", "npm:7.0.0"],\ + ["dotenv-expand", "npm:5.1.0"],\ + ["json5", "npm:2.2.1"],\ + ["msgpackr", "npm:1.6.0"],\ + ["nullthrows", "npm:1.1.1"],\ + ["semver", "npm:7.5.4"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-core-npm-2.6.2-f04091cfa7-f550cbbd5e.zip/node_modules/@parcel/core/",\ "packageDependencies": [\ @@ -1299,54 +1382,22 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["semver", "npm:5.7.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-core-npm-2.9.2-43efe8c401-34fdd57791.zip/node_modules/@parcel/core/",\ - "packageDependencies": [\ - ["@parcel/core", "npm:2.9.2"],\ - ["@mischnic/json-sourcemap", "npm:0.1.0"],\ - ["@parcel/cache", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/events", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/graph", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/package-manager", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/profiler", "npm:2.9.2"],\ - ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["abortcontroller-polyfill", "npm:1.7.3"],\ - ["base-x", "npm:3.0.9"],\ - ["browserslist", "npm:4.20.3"],\ - ["clone", "npm:2.1.2"],\ - ["dotenv", "npm:7.0.0"],\ - ["dotenv-expand", "npm:5.1.0"],\ - ["json5", "npm:2.2.1"],\ - ["msgpackr", "npm:1.6.0"],\ - ["nullthrows", "npm:1.1.1"],\ - ["semver", "npm:5.7.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/diagnostic", [\ - ["npm:2.6.2", {\ - "packageLocation": "./.yarn/cache/@parcel-diagnostic-npm-2.6.2-ad66c9d460-c20c7b12c4.zip/node_modules/@parcel/diagnostic/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-diagnostic-npm-2.10.0-1e389b369e-45c606ca52.zip/node_modules/@parcel/diagnostic/",\ "packageDependencies": [\ - ["@parcel/diagnostic", "npm:2.6.2"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ ["@mischnic/json-sourcemap", "npm:0.1.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-diagnostic-npm-2.9.2-b8228983c3-b27c14d711.zip/node_modules/@parcel/diagnostic/",\ + ["npm:2.6.2", {\ + "packageLocation": "./.yarn/cache/@parcel-diagnostic-npm-2.6.2-ad66c9d460-c20c7b12c4.zip/node_modules/@parcel/diagnostic/",\ "packageDependencies": [\ - ["@parcel/diagnostic", "npm:2.9.2"],\ + ["@parcel/diagnostic", "npm:2.6.2"],\ ["@mischnic/json-sourcemap", "npm:0.1.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ @@ -1354,22 +1405,29 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/events", [\ - ["npm:2.6.2", {\ - "packageLocation": "./.yarn/cache/@parcel-events-npm-2.6.2-c1dc15633e-272898db0c.zip/node_modules/@parcel/events/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-events-npm-2.10.0-da42a4afa6-1d21cd4186.zip/node_modules/@parcel/events/",\ "packageDependencies": [\ - ["@parcel/events", "npm:2.6.2"]\ + ["@parcel/events", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-events-npm-2.9.2-24de4cd1a4-4bc905a5e3.zip/node_modules/@parcel/events/",\ + ["npm:2.6.2", {\ + "packageLocation": "./.yarn/cache/@parcel-events-npm-2.6.2-c1dc15633e-272898db0c.zip/node_modules/@parcel/events/",\ "packageDependencies": [\ - ["@parcel/events", "npm:2.9.2"]\ + ["@parcel/events", "npm:2.6.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/fs", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip/node_modules/@parcel/fs/",\ + "packageDependencies": [\ + ["@parcel/fs", "npm:2.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-fs-npm-2.6.2-1670f601e3-b5e324d93b.zip/node_modules/@parcel/fs/",\ "packageDependencies": [\ @@ -1377,23 +1435,33 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip/node_modules/@parcel/fs/",\ + ["virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-fs-virtual-eac6fac48b/0/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip/node_modules/@parcel/fs/",\ "packageDependencies": [\ - ["@parcel/fs", "npm:2.9.2"]\ + ["@parcel/fs", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/core", "npm:2.6.2"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/watcher", "npm:2.0.7"],\ + ["@parcel/workers", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@types/parcel__core", null]\ ],\ - "linkType": "SOFT"\ + "packagePeers": [\ + "@types/parcel__core"\ + ],\ + "linkType": "HARD"\ }],\ - ["virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-fs-virtual-81ff228a03/0/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip/node_modules/@parcel/fs/",\ - "packageDependencies": [\ - ["@parcel/fs", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/fs-search", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-fs-virtual-e5737ffb6b/0/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip/node_modules/@parcel/fs/",\ + "packageDependencies": [\ + ["@parcel/fs", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["@parcel/watcher", "npm:2.0.7"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ ["@types/parcel__core", null]\ ],\ "packagePeers": [\ @@ -1418,23 +1486,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/parcel__core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-fs-virtual-9e8ffc1486/0/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip/node_modules/@parcel/fs/",\ - "packageDependencies": [\ - ["@parcel/fs", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/core", "npm:2.6.2"],\ - ["@parcel/fs-search", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/watcher", "npm:2.0.7"],\ - ["@parcel/workers", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@types/parcel__core", null]\ - ],\ - "packagePeers": [\ - "@types/parcel__core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/fs-search", [\ @@ -1445,13 +1496,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["detect-libc", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-fs-search-npm-2.9.2-0251af50fa/node_modules/@parcel/fs-search/",\ - "packageDependencies": [\ - ["@parcel/fs-search", "npm:2.9.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/graph", [\ @@ -1464,10 +1508,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-graph-npm-2.9.2-cb6ed79dfc-9943396a21.zip/node_modules/@parcel/graph/",\ + ["npm:3.0.0", {\ + "packageLocation": "./.yarn/cache/@parcel-graph-npm-3.0.0-9001abfefc-0a9d5017f6.zip/node_modules/@parcel/graph/",\ "packageDependencies": [\ - ["@parcel/graph", "npm:2.9.2"],\ + ["@parcel/graph", "npm:3.0.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ @@ -1482,17 +1526,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["xxhash-wasm", "npm:0.4.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-hash-npm-2.9.2-f26f4ce463/node_modules/@parcel/hash/",\ - "packageDependencies": [\ - ["@parcel/hash", "npm:2.9.2"],\ - ["xxhash-wasm", "npm:0.4.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/logger", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-logger-npm-2.10.0-41ac90e34c-52d0b5331d.zip/node_modules/@parcel/logger/",\ + "packageDependencies": [\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/events", "npm:2.10.0"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-logger-npm-2.6.2-d7fe563ebb-d3536408da.zip/node_modules/@parcel/logger/",\ "packageDependencies": [\ @@ -1501,71 +1546,63 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@parcel/events", "npm:2.6.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-logger-npm-2.9.2-3241bcb0e5-072052724a.zip/node_modules/@parcel/logger/",\ - "packageDependencies": [\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/events", "npm:2.9.2"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/markdown-ansi", [\ - ["npm:2.6.2", {\ - "packageLocation": "./.yarn/cache/@parcel-markdown-ansi-npm-2.6.2-16ce118d53-742c64c5db.zip/node_modules/@parcel/markdown-ansi/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-markdown-ansi-npm-2.10.0-4dd4da44f3-35e2d07ec8.zip/node_modules/@parcel/markdown-ansi/",\ "packageDependencies": [\ - ["@parcel/markdown-ansi", "npm:2.6.2"],\ + ["@parcel/markdown-ansi", "npm:2.10.0"],\ ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-markdown-ansi-npm-2.9.2-2985c646b4-171d62a761.zip/node_modules/@parcel/markdown-ansi/",\ + ["npm:2.6.2", {\ + "packageLocation": "./.yarn/cache/@parcel-markdown-ansi-npm-2.6.2-16ce118d53-742c64c5db.zip/node_modules/@parcel/markdown-ansi/",\ "packageDependencies": [\ - ["@parcel/markdown-ansi", "npm:2.9.2"],\ + ["@parcel/markdown-ansi", "npm:2.6.2"],\ ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/namer-default", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-namer-default-npm-2.9.2-f84d8c75d8-903da6aada.zip/node_modules/@parcel/namer-default/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-namer-default-npm-2.10.0-4b82db40fd-f2a32096d1.zip/node_modules/@parcel/namer-default/",\ "packageDependencies": [\ - ["@parcel/namer-default", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/namer-default", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/node-resolver-core", [\ - ["npm:3.0.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-node-resolver-core-npm-3.0.2-e5591710a1/node_modules/@parcel/node-resolver-core/",\ + ["npm:3.1.0", {\ + "packageLocation": "./.yarn/cache/@parcel-node-resolver-core-npm-3.1.0-9c9ff3ab8b-dcdd39bc6a.zip/node_modules/@parcel/node-resolver-core/",\ "packageDependencies": [\ - ["@parcel/node-resolver-core", "npm:3.0.2"],\ + ["@parcel/node-resolver-core", "npm:3.1.0"],\ ["@mischnic/json-sourcemap", "npm:0.1.0"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/optimizer-css", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-optimizer-css-npm-2.9.2-f17b6fe3fc-2ba9bd6eea.zip/node_modules/@parcel/optimizer-css/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-css-npm-2.10.0-dbd5825b4e-ea15989512.zip/node_modules/@parcel/optimizer-css/",\ "packageDependencies": [\ - ["@parcel/optimizer-css", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/optimizer-css", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["browserslist", "npm:4.20.3"],\ ["lightningcss", "npm:1.17.1"],\ ["nullthrows", "npm:1.1.1"]\ @@ -1574,12 +1611,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/optimizer-data-url", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-optimizer-data-url-npm-2.9.2-c7dded7731-fed10fad94.zip/node_modules/@parcel/optimizer-data-url/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-data-url-npm-2.10.0-700cb5aab6-ec9530be83.zip/node_modules/@parcel/optimizer-data-url/",\ "packageDependencies": [\ - ["@parcel/optimizer-data-url", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/optimizer-data-url", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["isbinaryfile", "npm:4.0.10"],\ ["mime", "npm:2.6.0"]\ ],\ @@ -1587,12 +1624,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/optimizer-htmlnano", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-optimizer-htmlnano-npm-2.9.2-01a9d51f22-9a5f1caf59.zip/node_modules/@parcel/optimizer-htmlnano/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-htmlnano-npm-2.10.0-ee0243765c-1f6de13022.zip/node_modules/@parcel/optimizer-htmlnano/",\ "packageDependencies": [\ - ["@parcel/optimizer-htmlnano", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["htmlnano", "virtual:01a9d51f22d57b32a48466b80fd9ec3455d6f5a526a80bd51fe8eaa7bbd3f389fe1e0b22c1b463c7e24fb30d65e4e5dcf6cb0772821469c3384f7df764814f0f#npm:2.0.2"],\ + ["@parcel/optimizer-htmlnano", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["htmlnano", "virtual:ee0243765cbdf501388f259b4f1148af5bb4df5c2fa392d4cf1f1d61d3475a9c15a5729ae4be6dd2e258041e618368d112e36aa7b208b01a51861aaaf92fa944#npm:2.0.2"],\ ["nullthrows", "npm:1.1.1"],\ ["posthtml", "npm:0.16.6"],\ ["svgo", "npm:2.8.0"]\ @@ -1601,22 +1638,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/optimizer-image", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-optimizer-image-virtual-dc1490c63d/node_modules/@parcel/optimizer-image/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-image-npm-2.10.0-a581b60cbd-94d5db2837.zip/node_modules/@parcel/optimizer-image/",\ "packageDependencies": [\ - ["@parcel/optimizer-image", "npm:2.9.2"]\ + ["@parcel/optimizer-image", "npm:2.10.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-optimizer-image-virtual-dc1490c63d/node_modules/@parcel/optimizer-image/",\ - "packageDependencies": [\ - ["@parcel/optimizer-image", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ + ["virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-optimizer-image-virtual-9b7a1cafe7/0/cache/@parcel-optimizer-image-npm-2.10.0-a581b60cbd-94d5db2837.zip/node_modules/@parcel/optimizer-image/",\ + "packageDependencies": [\ + ["@parcel/optimizer-image", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ ["@types/parcel__core", null]\ ],\ "packagePeers": [\ @@ -1627,34 +1665,41 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/optimizer-svgo", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-optimizer-svgo-npm-2.9.2-4519e191ce-67ed4bd0db.zip/node_modules/@parcel/optimizer-svgo/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-svgo-npm-2.10.0-154d938969-7201c63222.zip/node_modules/@parcel/optimizer-svgo/",\ "packageDependencies": [\ - ["@parcel/optimizer-svgo", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/optimizer-svgo", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["svgo", "npm:2.8.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/optimizer-swc", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-optimizer-swc-npm-2.9.2-ccab80a9cc-e21d0bee33.zip/node_modules/@parcel/optimizer-swc/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-optimizer-swc-npm-2.10.0-caf3bb9c02-1fe68ee6ff.zip/node_modules/@parcel/optimizer-swc/",\ "packageDependencies": [\ - ["@parcel/optimizer-swc", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/optimizer-swc", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@swc/core", "virtual:ccab80a9cc843832c4d60aa9658e3eed08e8ca8addd7d02f4754dbfb1970464df5a914f21ae6cc00acfc9ee0e4f39386e87f438e11e3ab36b045551ade5188b6#npm:1.3.62"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@swc/core", "virtual:caf3bb9c02ae9f768ff8cb8f830dcff0d7f38e60f1817c3f155faf0af46cd208a17e673fb908c23a477f907e553fbf9eef21af5f078ed79b4c34aca3fefc5224#npm:1.3.62"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/package-manager", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip/node_modules/@parcel/package-manager/",\ + "packageDependencies": [\ + ["@parcel/package-manager", "npm:2.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-package-manager-npm-2.6.2-41edbfb7da-0c7dfce953.zip/node_modules/@parcel/package-manager/",\ "packageDependencies": [\ @@ -1662,27 +1707,40 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip/node_modules/@parcel/package-manager/",\ + ["virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-package-manager-virtual-2dbcea4ef2/0/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip/node_modules/@parcel/package-manager/",\ "packageDependencies": [\ - ["@parcel/package-manager", "npm:2.9.2"]\ + ["@parcel/package-manager", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/core", "npm:2.6.2"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/node-resolver-core", "npm:3.1.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@types/parcel__core", null],\ + ["semver", "npm:7.5.4"]\ ],\ - "linkType": "SOFT"\ + "packagePeers": [\ + "@types/parcel__core"\ + ],\ + "linkType": "HARD"\ }],\ - ["virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-package-manager-virtual-25c00264cd/0/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip/node_modules/@parcel/package-manager/",\ - "packageDependencies": [\ - ["@parcel/package-manager", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/node-resolver-core", "npm:3.0.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ + ["virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-package-manager-virtual-07edc7e62f/0/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip/node_modules/@parcel/package-manager/",\ + "packageDependencies": [\ + ["@parcel/package-manager", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/node-resolver-core", "npm:3.1.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ ["@types/parcel__core", null],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "packagePeers": [\ "@parcel/core",\ @@ -1708,50 +1766,30 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/parcel__core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-package-manager-virtual-553b256f73/0/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip/node_modules/@parcel/package-manager/",\ - "packageDependencies": [\ - ["@parcel/package-manager", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/core", "npm:2.6.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/node-resolver-core", "npm:3.0.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@types/parcel__core", null],\ - ["semver", "npm:5.7.1"]\ - ],\ - "packagePeers": [\ - "@types/parcel__core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/packager-css", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-packager-css-npm-2.9.2-6a69ae150c-835894034e.zip/node_modules/@parcel/packager-css/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-css-npm-2.10.0-cb31a968a8-11bf4cae4c.zip/node_modules/@parcel/packager-css/",\ "packageDependencies": [\ - ["@parcel/packager-css", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/packager-css", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/packager-html", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-packager-html-npm-2.9.2-7468873086-8551a11ea2.zip/node_modules/@parcel/packager-html/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-html-npm-2.10.0-d6f71e7e36-8dfd86e7d6.zip/node_modules/@parcel/packager-html/",\ "packageDependencies": [\ - ["@parcel/packager-html", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/packager-html", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"],\ ["posthtml", "npm:0.16.6"]\ ],\ @@ -1759,15 +1797,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/packager-js", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-packager-js-npm-2.9.2-dd0cd199e4-49fef23dc6.zip/node_modules/@parcel/packager-js/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-js-npm-2.10.0-f84ec4cc7b-9b62598864.zip/node_modules/@parcel/packager-js/",\ "packageDependencies": [\ - ["@parcel/packager-js", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/packager-js", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["globals", "npm:13.15.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ @@ -1775,66 +1814,76 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/packager-raw", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-packager-raw-npm-2.9.2-1a5961f4f5-b56412fc29.zip/node_modules/@parcel/packager-raw/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-raw-npm-2.10.0-01ef1b8e3e-492fe07ae5.zip/node_modules/@parcel/packager-raw/",\ "packageDependencies": [\ - ["@parcel/packager-raw", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"]\ + ["@parcel/packager-raw", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/packager-svg", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-packager-svg-npm-2.9.2-1d3bdae8e7-ef38f501fb.zip/node_modules/@parcel/packager-svg/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-svg-npm-2.10.0-22326715bd-f49d7f3b88.zip/node_modules/@parcel/packager-svg/",\ "packageDependencies": [\ - ["@parcel/packager-svg", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/packager-svg", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["posthtml", "npm:0.16.6"]\ ],\ "linkType": "HARD"\ }]\ ]],\ + ["@parcel/packager-wasm", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-packager-wasm-npm-2.10.0-b1d2cd8f88-d9a13eb838.zip/node_modules/@parcel/packager-wasm/",\ + "packageDependencies": [\ + ["@parcel/packager-wasm", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@parcel/plugin", [\ - ["npm:2.6.2", {\ - "packageLocation": "./.yarn/cache/@parcel-plugin-npm-2.6.2-d1ea2dda44-23da0fa372.zip/node_modules/@parcel/plugin/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-plugin-npm-2.10.0-efbc58a209-e13ba6e7e5.zip/node_modules/@parcel/plugin/",\ "packageDependencies": [\ - ["@parcel/plugin", "npm:2.6.2"],\ - ["@parcel/types", "npm:2.6.2"]\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-plugin-npm-2.9.2-a6fcdfe690-3104b076ec.zip/node_modules/@parcel/plugin/",\ + ["npm:2.6.2", {\ + "packageLocation": "./.yarn/cache/@parcel-plugin-npm-2.6.2-d1ea2dda44-23da0fa372.zip/node_modules/@parcel/plugin/",\ "packageDependencies": [\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"]\ + ["@parcel/plugin", "npm:2.6.2"],\ + ["@parcel/types", "npm:2.6.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/profiler", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-profiler-npm-2.9.2-f86abba7d6-390faeb1a0.zip/node_modules/@parcel/profiler/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-profiler-npm-2.10.0-b1ba499bc1-78d545edb7.zip/node_modules/@parcel/profiler/",\ "packageDependencies": [\ - ["@parcel/profiler", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/events", "npm:2.9.2"],\ + ["@parcel/profiler", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/events", "npm:2.10.0"],\ ["chrome-trace-event", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/reporter-cli", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-reporter-cli-npm-2.9.2-04a53602ed-d9b5ca577f.zip/node_modules/@parcel/reporter-cli/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-reporter-cli-npm-2.10.0-083fc2f2d6-0137a91e45.zip/node_modules/@parcel/reporter-cli/",\ "packageDependencies": [\ - ["@parcel/reporter-cli", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/reporter-cli", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["chalk", "npm:4.1.2"],\ ["term-size", "npm:2.2.1"]\ ],\ @@ -1842,23 +1891,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/reporter-dev-server", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-reporter-dev-server-npm-2.9.2-a9675da842-1fdc8d48fd.zip/node_modules/@parcel/reporter-dev-server/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-reporter-dev-server-npm-2.10.0-2f19cb846e-e72fd6ec09.zip/node_modules/@parcel/reporter-dev-server/",\ "packageDependencies": [\ - ["@parcel/reporter-dev-server", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"]\ + ["@parcel/reporter-dev-server", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/reporter-tracer", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-reporter-tracer-npm-2.9.2-ad4deef524-e08623e902.zip/node_modules/@parcel/reporter-tracer/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-reporter-tracer-npm-2.10.0-184a89e262-0f8249b998.zip/node_modules/@parcel/reporter-tracer/",\ "packageDependencies": [\ - ["@parcel/reporter-tracer", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/reporter-tracer", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["chrome-trace-event", "npm:1.0.3"],\ ["nullthrows", "npm:1.1.1"]\ ],\ @@ -1866,47 +1915,47 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/resolver-default", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-resolver-default-npm-2.9.2-130b2b9fc6-dc502cd62f.zip/node_modules/@parcel/resolver-default/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-resolver-default-npm-2.10.0-ca49f01a75-c82e2d3c4b.zip/node_modules/@parcel/resolver-default/",\ "packageDependencies": [\ - ["@parcel/resolver-default", "npm:2.9.2"],\ - ["@parcel/node-resolver-core", "npm:3.0.2"],\ - ["@parcel/plugin", "npm:2.9.2"]\ + ["@parcel/resolver-default", "npm:2.10.0"],\ + ["@parcel/node-resolver-core", "npm:3.1.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/runtime-browser-hmr", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-runtime-browser-hmr-npm-2.9.2-c5978cbee9-4d08afa026.zip/node_modules/@parcel/runtime-browser-hmr/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-runtime-browser-hmr-npm-2.10.0-c6b7773a09-12928462c8.zip/node_modules/@parcel/runtime-browser-hmr/",\ "packageDependencies": [\ - ["@parcel/runtime-browser-hmr", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"]\ + ["@parcel/runtime-browser-hmr", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/runtime-js", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip/node_modules/@parcel/runtime-js/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-runtime-js-npm-2.10.0-6b4cf1576c-3bbd64c5b9.zip/node_modules/@parcel/runtime-js/",\ "packageDependencies": [\ - ["@parcel/runtime-js", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/runtime-js", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/runtime-react-refresh", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-runtime-react-refresh-npm-2.9.2-dc674a15e8-16631bc020.zip/node_modules/@parcel/runtime-react-refresh/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-runtime-react-refresh-npm-2.10.0-b1f6c62bdf-dc567474a1.zip/node_modules/@parcel/runtime-react-refresh/",\ "packageDependencies": [\ - ["@parcel/runtime-react-refresh", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/runtime-react-refresh", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["react-error-overlay", "npm:6.0.9"],\ ["react-refresh", "npm:0.9.0"]\ ],\ @@ -1914,17 +1963,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/runtime-service-worker", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-runtime-service-worker-npm-2.9.2-c099b0c8ba-21180ba472.zip/node_modules/@parcel/runtime-service-worker/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-runtime-service-worker-npm-2.10.0-3ca99a5366-d0bfd113b9.zip/node_modules/@parcel/runtime-service-worker/",\ "packageDependencies": [\ - ["@parcel/runtime-service-worker", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/runtime-service-worker", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ + ["@parcel/rust", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/unplugged/@parcel-rust-npm-2.10.0-99038406b0/node_modules/@parcel/rust/",\ + "packageDependencies": [\ + ["@parcel/rust", "npm:2.10.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@parcel/source-map", [\ ["npm:2.0.5", {\ "packageLocation": "./.yarn/unplugged/@parcel-source-map-npm-2.0.5-2444d2c092/node_modules/@parcel/source-map/",\ @@ -1944,31 +2002,31 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/transformer-babel", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-babel-npm-2.9.2-ff6950ff1f-4177b0f176.zip/node_modules/@parcel/transformer-babel/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-babel-npm-2.10.0-fb74ad8c73-fd64092c9c.zip/node_modules/@parcel/transformer-babel/",\ "packageDependencies": [\ - ["@parcel/transformer-babel", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-babel", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["browserslist", "npm:4.20.3"],\ ["json5", "npm:2.2.1"],\ ["nullthrows", "npm:1.1.1"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-css", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-css-npm-2.9.2-87b7d1818d-4aacbe62fa.zip/node_modules/@parcel/transformer-css/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-css-npm-2.10.0-4fc35c8005-acc26e9b3d.zip/node_modules/@parcel/transformer-css/",\ "packageDependencies": [\ - ["@parcel/transformer-css", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-css", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["browserslist", "npm:4.20.3"],\ ["lightningcss", "npm:1.17.1"],\ ["nullthrows", "npm:1.1.1"]\ @@ -1977,39 +2035,39 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/transformer-html", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-html-npm-2.9.2-1265e03787-baf4047c55.zip/node_modules/@parcel/transformer-html/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-html-npm-2.10.0-b6d2228044-f28e0d3606.zip/node_modules/@parcel/transformer-html/",\ "packageDependencies": [\ - ["@parcel/transformer-html", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-html", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"],\ ["posthtml", "npm:0.16.6"],\ ["posthtml-parser", "npm:0.10.2"],\ ["posthtml-render", "npm:3.0.0"],\ - ["semver", "npm:5.7.1"],\ + ["semver", "npm:7.5.4"],\ ["srcset", "npm:4.0.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-image", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-image-npm-2.9.2-9c204c156c-197ffd8245.zip/node_modules/@parcel/transformer-image/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-image-npm-2.10.0-e63bd526ed-61a47d7d8e.zip/node_modules/@parcel/transformer-image/",\ "packageDependencies": [\ - ["@parcel/transformer-image", "npm:2.9.2"]\ + ["@parcel/transformer-image", "npm:2.10.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-transformer-image-virtual-0ffd0249d4/0/cache/@parcel-transformer-image-npm-2.9.2-9c204c156c-197ffd8245.zip/node_modules/@parcel/transformer-image/",\ - "packageDependencies": [\ - ["@parcel/transformer-image", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ + ["virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-transformer-image-virtual-3e73171071/0/cache/@parcel-transformer-image-npm-2.10.0-e63bd526ed-61a47d7d8e.zip/node_modules/@parcel/transformer-image/",\ + "packageDependencies": [\ + ["@parcel/transformer-image", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ ["@types/parcel__core", null],\ ["nullthrows", "npm:1.1.1"]\ ],\ @@ -2021,39 +2079,40 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/transformer-inline-string", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-inline-string-npm-2.9.2-fd24e64c5c-d9146597b4.zip/node_modules/@parcel/transformer-inline-string/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-inline-string-npm-2.10.0-44c9b349db-618c919108.zip/node_modules/@parcel/transformer-inline-string/",\ "packageDependencies": [\ - ["@parcel/transformer-inline-string", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"]\ + ["@parcel/transformer-inline-string", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-js", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-transformer-js-virtual-05c1f1c900/node_modules/@parcel/transformer-js/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-js-npm-2.10.0-132e460926-e9944ce77c.zip/node_modules/@parcel/transformer-js/",\ "packageDependencies": [\ - ["@parcel/transformer-js", "npm:2.9.2"]\ + ["@parcel/transformer-js", "npm:2.10.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2", {\ - "packageLocation": "./.yarn/unplugged/@parcel-transformer-js-virtual-05c1f1c900/node_modules/@parcel/transformer-js/",\ - "packageDependencies": [\ - ["@parcel/transformer-js", "virtual:9c28b5e2d3761cbe1edde136d8abe87fb1a09925c11d4787a7ad5a932c042af89b2331a8b19e0fb31247f148ca4027a411870484a93be509fe332049741011f4#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-transformer-js-virtual-aab7779f34/0/cache/@parcel-transformer-js-npm-2.10.0-132e460926-e9944ce77c.zip/node_modules/@parcel/transformer-js/",\ + "packageDependencies": [\ + ["@parcel/transformer-js", "virtual:61dcbb3314ed0db4613bbccf7f920606ba09571991ce6dbf378d0f819338fde0afdb3e35306b4f7d24155236814007855a39ab7d05afaeadead37df42309ed7e#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ ["@swc/helpers", "npm:0.5.1"],\ ["@types/parcel__core", null],\ ["browserslist", "npm:4.20.3"],\ ["nullthrows", "npm:1.1.1"],\ ["regenerator-runtime", "npm:0.13.9"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "packagePeers": [\ "@parcel/core",\ @@ -2063,77 +2122,77 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/transformer-json", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-json-npm-2.9.2-6294f04574-656c01128e.zip/node_modules/@parcel/transformer-json/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-json-npm-2.10.0-5525143f86-9c7aceb8e6.zip/node_modules/@parcel/transformer-json/",\ "packageDependencies": [\ - ["@parcel/transformer-json", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-json", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["json5", "npm:2.2.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-postcss", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-postcss-npm-2.9.2-66e7b1728c-4c514e8098.zip/node_modules/@parcel/transformer-postcss/",\ - "packageDependencies": [\ - ["@parcel/transformer-postcss", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-postcss-npm-2.10.0-c1f60c708a-2e524bd513.zip/node_modules/@parcel/transformer-postcss/",\ + "packageDependencies": [\ + ["@parcel/transformer-postcss", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["clone", "npm:2.1.2"],\ ["nullthrows", "npm:1.1.1"],\ ["postcss-value-parser", "npm:4.2.0"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-posthtml", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-posthtml-npm-2.9.2-e6929cf94c-a88988f714.zip/node_modules/@parcel/transformer-posthtml/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-posthtml-npm-2.10.0-31d54ed3f0-7de343f0f9.zip/node_modules/@parcel/transformer-posthtml/",\ "packageDependencies": [\ - ["@parcel/transformer-posthtml", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/transformer-posthtml", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"],\ ["posthtml", "npm:0.16.6"],\ ["posthtml-parser", "npm:0.10.2"],\ ["posthtml-render", "npm:3.0.0"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-raw", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-raw-npm-2.9.2-77f972073e-1603569c73.zip/node_modules/@parcel/transformer-raw/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-raw-npm-2.10.0-d7cd50f767-c7b1b9c6f7.zip/node_modules/@parcel/transformer-raw/",\ "packageDependencies": [\ - ["@parcel/transformer-raw", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"]\ + ["@parcel/transformer-raw", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-react-refresh-wrap", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.9.2-9ece2e6944-9de36a5fa4.zip/node_modules/@parcel/transformer-react-refresh-wrap/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.10.0-4c3ddcc095-fc3163bcb0.zip/node_modules/@parcel/transformer-react-refresh-wrap/",\ "packageDependencies": [\ - ["@parcel/transformer-react-refresh-wrap", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["@parcel/transformer-react-refresh-wrap", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["react-refresh", "npm:0.9.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/transformer-sass", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-sass-npm-2.9.2-29ff1924b6-928b8767f3.zip/node_modules/@parcel/transformer-sass/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-sass-npm-2.10.0-6c5f188bcc-2d697077ac.zip/node_modules/@parcel/transformer-sass/",\ "packageDependencies": [\ - ["@parcel/transformer-sass", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-sass", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ ["@parcel/source-map", "npm:2.1.1"],\ ["sass", "npm:1.52.1"]\ ],\ @@ -2141,23 +2200,37 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/transformer-svg", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-transformer-svg-npm-2.9.2-f5135ba1d5-1b8b2c60ee.zip/node_modules/@parcel/transformer-svg/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-transformer-svg-npm-2.10.0-881c72cd1f-d5f55f6eee.zip/node_modules/@parcel/transformer-svg/",\ "packageDependencies": [\ - ["@parcel/transformer-svg", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/plugin", "npm:2.9.2"],\ + ["@parcel/transformer-svg", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/plugin", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ ["nullthrows", "npm:1.1.1"],\ ["posthtml", "npm:0.16.6"],\ ["posthtml-parser", "npm:0.10.2"],\ ["posthtml-render", "npm:3.0.0"],\ - ["semver", "npm:5.7.1"]\ + ["semver", "npm:7.5.4"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@parcel/types", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-types-npm-2.10.0-270e786ba1-387aa07902.zip/node_modules/@parcel/types/",\ + "packageDependencies": [\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/cache", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/package-manager", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/source-map", "npm:2.1.1"],\ + ["@parcel/workers", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["utility-types", "npm:3.10.0"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-types-npm-2.6.2-aa1797faca-16f3c3ac36.zip/node_modules/@parcel/types/",\ "packageDependencies": [\ @@ -2171,23 +2244,24 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["utility-types", "npm:3.10.0"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-types-npm-2.9.2-da147a7755-976fb44534.zip/node_modules/@parcel/types/",\ - "packageDependencies": [\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/cache", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/package-manager", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/source-map", "npm:2.1.1"],\ - ["@parcel/workers", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["utility-types", "npm:3.10.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/utils", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-utils-npm-2.10.0-1f25fbc366-9f4953ff9a.zip/node_modules/@parcel/utils/",\ + "packageDependencies": [\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@parcel/codeframe", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/markdown-ansi", "npm:2.10.0"],\ + ["@parcel/rust", "npm:2.10.0"],\ + ["@parcel/source-map", "npm:2.1.1"],\ + ["chalk", "npm:4.1.2"],\ + ["nullthrows", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-utils-npm-2.6.2-cab87aed21-a74fdca966.zip/node_modules/@parcel/utils/",\ "packageDependencies": [\ @@ -2201,21 +2275,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["chalk", "npm:4.1.2"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-utils-npm-2.9.2-267a2360a2-130cf1a6cb.zip/node_modules/@parcel/utils/",\ - "packageDependencies": [\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@parcel/codeframe", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/hash", "npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/markdown-ansi", "npm:2.9.2"],\ - ["@parcel/source-map", "npm:2.1.1"],\ - ["chalk", "npm:4.1.2"],\ - ["nullthrows", "npm:1.1.1"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@parcel/watcher", [\ @@ -2241,6 +2300,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@parcel/workers", [\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip/node_modules/@parcel/workers/",\ + "packageDependencies": [\ + ["@parcel/workers", "npm:2.10.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["npm:2.6.2", {\ "packageLocation": "./.yarn/cache/@parcel-workers-npm-2.6.2-a30e38db52-92b65cd3fd.zip/node_modules/@parcel/workers/",\ "packageDependencies": [\ @@ -2248,23 +2314,34 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip/node_modules/@parcel/workers/",\ + ["virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-workers-virtual-2fd2d815f8/0/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip/node_modules/@parcel/workers/",\ "packageDependencies": [\ - ["@parcel/workers", "npm:2.9.2"]\ + ["@parcel/workers", "virtual:270e786ba124f493b75e4cd9a08f7491010f97327e0fcf0c93872db7e85ab335c548e71e39c548e3ecd0ddd319719697b172c5c43cd0b75c1948a8e82873b962#npm:2.10.0"],\ + ["@parcel/core", "npm:2.6.2"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/profiler", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ + ["@types/parcel__core", null],\ + ["nullthrows", "npm:1.1.1"]\ ],\ - "linkType": "SOFT"\ + "packagePeers": [\ + "@types/parcel__core"\ + ],\ + "linkType": "HARD"\ }],\ - ["virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-workers-virtual-929d2fc5a6/0/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip/node_modules/@parcel/workers/",\ - "packageDependencies": [\ - ["@parcel/workers", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/profiler", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/@parcel-workers-virtual-5aa58b2681/0/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip/node_modules/@parcel/workers/",\ + "packageDependencies": [\ + ["@parcel/workers", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/profiler", "npm:2.10.0"],\ + ["@parcel/types", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["@types/parcel__core", null],\ ["nullthrows", "npm:1.1.1"]\ ],\ @@ -2291,24 +2368,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "@types/parcel__core"\ ],\ "linkType": "HARD"\ - }],\ - ["virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/@parcel-workers-virtual-f37dc26423/0/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip/node_modules/@parcel/workers/",\ - "packageDependencies": [\ - ["@parcel/workers", "virtual:da147a7755225862ebff1a307c66ffdb006466b8c3f2a3348fb4fd53cdf79b74a130f888a5e17f97eb991209008bfec72070985f78090e5c5229070de92b61e0#npm:2.9.2"],\ - ["@parcel/core", "npm:2.6.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/profiler", "npm:2.9.2"],\ - ["@parcel/types", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ - ["@types/parcel__core", null],\ - ["nullthrows", "npm:1.1.1"]\ - ],\ - "packagePeers": [\ - "@types/parcel__core"\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["@pkgjs/parseargs", [\ @@ -2337,17 +2396,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@rollup/pluginutils", [\ - ["npm:5.0.2", {\ - "packageLocation": "./.yarn/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip/node_modules/@rollup/pluginutils/",\ + ["npm:5.0.5", {\ + "packageLocation": "./.yarn/cache/@rollup-pluginutils-npm-5.0.5-cfa8fafc53-dcd4d6e3cb.zip/node_modules/@rollup/pluginutils/",\ "packageDependencies": [\ - ["@rollup/pluginutils", "npm:5.0.2"]\ + ["@rollup/pluginutils", "npm:5.0.5"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@rollup-pluginutils-virtual-ca58d3a074/0/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip/node_modules/@rollup/pluginutils/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.5", {\ + "packageLocation": "./.yarn/__virtual__/@rollup-pluginutils-virtual-9173e115a7/0/cache/@rollup-pluginutils-npm-5.0.5-cfa8fafc53-dcd4d6e3cb.zip/node_modules/@rollup/pluginutils/",\ "packageDependencies": [\ - ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.2"],\ + ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.5"],\ ["@types/estree", "npm:1.0.0"],\ ["@types/rollup", null],\ ["estree-walker", "npm:2.0.2"],\ @@ -2369,10 +2428,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:5b253c7fe6920728e3c9c52a5bc1311d65d2e0c4fed3ef146b86c5f66caee15cd0369525e4dcd3e32e97a7168db12a74c5dd0ba006e6fd26f77cbbe68415a9f7#npm:2.0.0", {\ - "packageLocation": "./.yarn/__virtual__/@sidvind-better-ajv-errors-virtual-422cb59e65/0/cache/@sidvind-better-ajv-errors-npm-2.0.0-3531bddef9-12b0d87855.zip/node_modules/@sidvind/better-ajv-errors/",\ + ["virtual:c83421120a0d81573c2202cf177f92bb37ea59966baf7759b6fa4e9a2982e6fe336614d87630b5be4c85c00ef51834cf2a040f710a51f15e792d3dd3e2377e0f#npm:2.0.0", {\ + "packageLocation": "./.yarn/__virtual__/@sidvind-better-ajv-errors-virtual-017003deb2/0/cache/@sidvind-better-ajv-errors-npm-2.0.0-3531bddef9-12b0d87855.zip/node_modules/@sidvind/better-ajv-errors/",\ "packageDependencies": [\ - ["@sidvind/better-ajv-errors", "virtual:5b253c7fe6920728e3c9c52a5bc1311d65d2e0c4fed3ef146b86c5f66caee15cd0369525e4dcd3e32e97a7168db12a74c5dd0ba006e6fd26f77cbbe68415a9f7#npm:2.0.0"],\ + ["@sidvind/better-ajv-errors", "virtual:c83421120a0d81573c2202cf177f92bb37ea59966baf7759b6fa4e9a2982e6fe336614d87630b5be4c85c00ef51834cf2a040f710a51f15e792d3dd3e2377e0f#npm:2.0.0"],\ ["@babel/code-frame", "npm:7.16.7"],\ ["@types/ajv", null],\ ["ajv", "npm:8.11.0"],\ @@ -2387,16 +2446,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ]],\ ["@swc/core", [\ ["npm:1.3.62", {\ - "packageLocation": "./.yarn/unplugged/@swc-core-virtual-bfd11bbc53/node_modules/@swc/core/",\ + "packageLocation": "./.yarn/unplugged/@swc-core-virtual-fa54a417e9/node_modules/@swc/core/",\ "packageDependencies": [\ ["@swc/core", "npm:1.3.62"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:ccab80a9cc843832c4d60aa9658e3eed08e8ca8addd7d02f4754dbfb1970464df5a914f21ae6cc00acfc9ee0e4f39386e87f438e11e3ab36b045551ade5188b6#npm:1.3.62", {\ - "packageLocation": "./.yarn/unplugged/@swc-core-virtual-bfd11bbc53/node_modules/@swc/core/",\ + ["virtual:caf3bb9c02ae9f768ff8cb8f830dcff0d7f38e60f1817c3f155faf0af46cd208a17e673fb908c23a477f907e553fbf9eef21af5f078ed79b4c34aca3fefc5224#npm:1.3.62", {\ + "packageLocation": "./.yarn/unplugged/@swc-core-virtual-fa54a417e9/node_modules/@swc/core/",\ "packageDependencies": [\ - ["@swc/core", "virtual:ccab80a9cc843832c4d60aa9658e3eed08e8ca8addd7d02f4754dbfb1970464df5a914f21ae6cc00acfc9ee0e4f39386e87f438e11e3ab36b045551ade5188b6#npm:1.3.62"],\ + ["@swc/core", "virtual:caf3bb9c02ae9f768ff8cb8f830dcff0d7f38e60f1817c3f155faf0af46cd208a17e673fb908c23a477f907e553fbf9eef21af5f078ed79b4c34aca3fefc5224#npm:1.3.62"],\ ["@swc/core-darwin-arm64", "npm:1.3.62"],\ ["@swc/core-darwin-x64", "npm:1.3.62"],\ ["@swc/core-linux-arm-gnueabihf", "npm:1.3.62"],\ @@ -2572,10 +2631,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@types/katex", [\ - ["npm:0.14.0", {\ - "packageLocation": "./.yarn/cache/@types-katex-npm-0.14.0-acd5bc3e87-330e0d0337.zip/node_modules/@types/katex/",\ + ["npm:0.16.5", {\ + "packageLocation": "./.yarn/cache/@types-katex-npm-0.16.5-ff9336f176-a1ce22cd87.zip/node_modules/@types/katex/",\ "packageDependencies": [\ - ["@types/katex", "npm:0.14.0"]\ + ["@types/katex", "npm:0.16.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -2587,13 +2646,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/lodash", "npm:4.14.182"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.14.200", {\ + "packageLocation": "./.yarn/cache/@types-lodash-npm-4.14.200-8559f51fce-6471f8bb5d.zip/node_modules/@types/lodash/",\ + "packageDependencies": [\ + ["@types/lodash", "npm:4.14.200"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@types/lodash-es", [\ - ["npm:4.17.6", {\ - "packageLocation": "./.yarn/cache/@types-lodash-es-npm-4.17.6-fd5abbdc74-9bd239dd52.zip/node_modules/@types/lodash-es/",\ + ["npm:4.17.10", {\ + "packageLocation": "./.yarn/cache/@types-lodash-es-npm-4.17.10-a7dae21818-129e9dde83.zip/node_modules/@types/lodash-es/",\ "packageDependencies": [\ - ["@types/lodash-es", "npm:4.17.6"],\ + ["@types/lodash-es", "npm:4.17.10"],\ ["@types/lodash", "npm:4.14.182"]\ ],\ "linkType": "HARD"\ @@ -2617,22 +2683,31 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@ungap/structured-clone", [\ + ["npm:1.2.0", {\ + "packageLocation": "./.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip/node_modules/@ungap/structured-clone/",\ + "packageDependencies": [\ + ["@ungap/structured-clone", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@vitejs/plugin-vue", [\ - ["npm:4.2.3", {\ - "packageLocation": "./.yarn/cache/@vitejs-plugin-vue-npm-4.2.3-f2af5ce2fe-1c70c1cd18.zip/node_modules/@vitejs/plugin-vue/",\ + ["npm:4.4.0", {\ + "packageLocation": "./.yarn/cache/@vitejs-plugin-vue-npm-4.4.0-c33d65c6f6-37b6987951.zip/node_modules/@vitejs/plugin-vue/",\ "packageDependencies": [\ - ["@vitejs/plugin-vue", "npm:4.2.3"]\ + ["@vitejs/plugin-vue", "npm:4.4.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.3", {\ - "packageLocation": "./.yarn/__virtual__/@vitejs-plugin-vue-virtual-ad1e69b525/0/cache/@vitejs-plugin-vue-npm-4.2.3-f2af5ce2fe-1c70c1cd18.zip/node_modules/@vitejs/plugin-vue/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.4.0", {\ + "packageLocation": "./.yarn/__virtual__/@vitejs-plugin-vue-virtual-6c0c604c2e/0/cache/@vitejs-plugin-vue-npm-4.4.0-c33d65c6f6-37b6987951.zip/node_modules/@vitejs/plugin-vue/",\ "packageDependencies": [\ - ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.3"],\ + ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.4.0"],\ ["@types/vite", null],\ ["@types/vue", null],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.9"],\ - ["vue", "npm:3.3.4"]\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.0"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vite",\ @@ -2644,12 +2719,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@vue/compiler-core", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-compiler-core-npm-3.3.4-e514bded25-5437942ea6.zip/node_modules/@vue/compiler-core/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-compiler-core-npm-3.3.7-584a90831e-94ac56a5a8.zip/node_modules/@vue/compiler-core/",\ "packageDependencies": [\ - ["@vue/compiler-core", "npm:3.3.4"],\ - ["@babel/parser", "npm:7.22.4"],\ - ["@vue/shared", "npm:3.3.4"],\ + ["@vue/compiler-core", "npm:3.3.7"],\ + ["@babel/parser", "npm:7.23.0"],\ + ["@vue/shared", "npm:3.3.7"],\ ["estree-walker", "npm:2.0.2"],\ ["source-map-js", "npm:1.0.2"]\ ],\ @@ -2657,42 +2732,42 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@vue/compiler-dom", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-compiler-dom-npm-3.3.4-029250af79-1c2ac0c89d.zip/node_modules/@vue/compiler-dom/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-compiler-dom-npm-3.3.7-53a75677b1-d54c49fd82.zip/node_modules/@vue/compiler-dom/",\ "packageDependencies": [\ - ["@vue/compiler-dom", "npm:3.3.4"],\ - ["@vue/compiler-core", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"]\ + ["@vue/compiler-dom", "npm:3.3.7"],\ + ["@vue/compiler-core", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/compiler-sfc", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-compiler-sfc-npm-3.3.4-783aff746b-0a0adfdd3e.zip/node_modules/@vue/compiler-sfc/",\ - "packageDependencies": [\ - ["@vue/compiler-sfc", "npm:3.3.4"],\ - ["@babel/parser", "npm:7.22.4"],\ - ["@vue/compiler-core", "npm:3.3.4"],\ - ["@vue/compiler-dom", "npm:3.3.4"],\ - ["@vue/compiler-ssr", "npm:3.3.4"],\ - ["@vue/reactivity-transform", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"],\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-compiler-sfc-npm-3.3.7-57757e7ccc-593c0b00f3.zip/node_modules/@vue/compiler-sfc/",\ + "packageDependencies": [\ + ["@vue/compiler-sfc", "npm:3.3.7"],\ + ["@babel/parser", "npm:7.23.0"],\ + ["@vue/compiler-core", "npm:3.3.7"],\ + ["@vue/compiler-dom", "npm:3.3.7"],\ + ["@vue/compiler-ssr", "npm:3.3.7"],\ + ["@vue/reactivity-transform", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"],\ ["estree-walker", "npm:2.0.2"],\ - ["magic-string", "npm:0.30.0"],\ - ["postcss", "npm:8.4.12"],\ + ["magic-string", "npm:0.30.5"],\ + ["postcss", "npm:8.4.31"],\ ["source-map-js", "npm:1.0.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/compiler-ssr", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-compiler-ssr-npm-3.3.4-9c5036c29f-5d1875d55e.zip/node_modules/@vue/compiler-ssr/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-compiler-ssr-npm-3.3.7-61efc0860e-42f8ddc9ff.zip/node_modules/@vue/compiler-ssr/",\ "packageDependencies": [\ - ["@vue/compiler-ssr", "npm:3.3.4"],\ - ["@vue/compiler-dom", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"]\ + ["@vue/compiler-ssr", "npm:3.3.7"],\ + ["@vue/compiler-dom", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"]\ ],\ "linkType": "HARD"\ }]\ @@ -2707,68 +2782,68 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@vue/reactivity", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-reactivity-npm-3.3.4-4bb841d3a9-81c3d0c587.zip/node_modules/@vue/reactivity/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-reactivity-npm-3.3.7-0bf3bc7094-16b629c997.zip/node_modules/@vue/reactivity/",\ "packageDependencies": [\ - ["@vue/reactivity", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"]\ + ["@vue/reactivity", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/reactivity-transform", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-reactivity-transform-npm-3.3.4-bfbf394bf7-b425e78b20.zip/node_modules/@vue/reactivity-transform/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-reactivity-transform-npm-3.3.7-7c404f0363-f88d39c8a4.zip/node_modules/@vue/reactivity-transform/",\ "packageDependencies": [\ - ["@vue/reactivity-transform", "npm:3.3.4"],\ - ["@babel/parser", "npm:7.22.4"],\ - ["@vue/compiler-core", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"],\ + ["@vue/reactivity-transform", "npm:3.3.7"],\ + ["@babel/parser", "npm:7.23.0"],\ + ["@vue/compiler-core", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"],\ ["estree-walker", "npm:2.0.2"],\ - ["magic-string", "npm:0.30.0"]\ + ["magic-string", "npm:0.30.5"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/runtime-core", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-runtime-core-npm-3.3.4-4a56fcce5e-d402da5126.zip/node_modules/@vue/runtime-core/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-runtime-core-npm-3.3.7-61d8aab53a-3fd38c6831.zip/node_modules/@vue/runtime-core/",\ "packageDependencies": [\ - ["@vue/runtime-core", "npm:3.3.4"],\ - ["@vue/reactivity", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"]\ + ["@vue/runtime-core", "npm:3.3.7"],\ + ["@vue/reactivity", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/runtime-dom", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-runtime-dom-npm-3.3.4-554b8c4277-dac9ada7f6.zip/node_modules/@vue/runtime-dom/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-runtime-dom-npm-3.3.7-07cf6cc840-9331ea0886.zip/node_modules/@vue/runtime-dom/",\ "packageDependencies": [\ - ["@vue/runtime-dom", "npm:3.3.4"],\ - ["@vue/runtime-core", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"],\ + ["@vue/runtime-dom", "npm:3.3.7"],\ + ["@vue/runtime-core", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"],\ ["csstype", "npm:3.1.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["@vue/server-renderer", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-server-renderer-npm-3.3.4-75b963f24d-e8598ed1a4.zip/node_modules/@vue/server-renderer/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-server-renderer-npm-3.3.7-a66f8ec338-c2e673d6f7.zip/node_modules/@vue/server-renderer/",\ "packageDependencies": [\ - ["@vue/server-renderer", "npm:3.3.4"]\ + ["@vue/server-renderer", "npm:3.3.7"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:174fadbea44493263729fa2b6f65daab4b25e9b0a7a008d5887cf4635c65a7954c0e996fdf3e5d8529a9ab481440768b691dd3c59aca8db6f1f12ce74ed59685#npm:3.3.4", {\ - "packageLocation": "./.yarn/__virtual__/@vue-server-renderer-virtual-17865bc934/0/cache/@vue-server-renderer-npm-3.3.4-75b963f24d-e8598ed1a4.zip/node_modules/@vue/server-renderer/",\ + ["virtual:3abdc07485f088dc7c94fb6016205a603cbf92506f0de3d8b0b3c64fb975ecc9ffddafd33901d1bbe205fa301d19a0b5580e4aae44cfc80bff10566fc4d7e20b#npm:3.3.7", {\ + "packageLocation": "./.yarn/__virtual__/@vue-server-renderer-virtual-3e99bf9267/0/cache/@vue-server-renderer-npm-3.3.7-a66f8ec338-c2e673d6f7.zip/node_modules/@vue/server-renderer/",\ "packageDependencies": [\ - ["@vue/server-renderer", "virtual:174fadbea44493263729fa2b6f65daab4b25e9b0a7a008d5887cf4635c65a7954c0e996fdf3e5d8529a9ab481440768b691dd3c59aca8db6f1f12ce74ed59685#npm:3.3.4"],\ + ["@vue/server-renderer", "virtual:3abdc07485f088dc7c94fb6016205a603cbf92506f0de3d8b0b3c64fb975ecc9ffddafd33901d1bbe205fa301d19a0b5580e4aae44cfc80bff10566fc4d7e20b#npm:3.3.7"],\ ["@types/vue", null],\ - ["@vue/compiler-ssr", "npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"],\ - ["vue", "npm:3.3.4"]\ + ["@vue/compiler-ssr", "npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -2778,10 +2853,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@vue/shared", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/@vue-shared-npm-3.3.4-76d250afa2-12fe53ff81.zip/node_modules/@vue/shared/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/@vue-shared-npm-3.3.7-44832a6399-a6718f760b.zip/node_modules/@vue/shared/",\ "packageDependencies": [\ - ["@vue/shared", "npm:3.3.4"]\ + ["@vue/shared", "npm:3.3.7"]\ ],\ "linkType": "HARD"\ }]\ @@ -2812,17 +2887,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:8.7.1", {\ - "packageLocation": "./.yarn/cache/acorn-npm-8.7.1-7c7a019990-aca0aabf98.zip/node_modules/acorn/",\ + ["npm:8.10.0", {\ + "packageLocation": "./.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip/node_modules/acorn/",\ "packageDependencies": [\ - ["acorn", "npm:8.7.1"]\ + ["acorn", "npm:8.10.0"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:8.8.0", {\ - "packageLocation": "./.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip/node_modules/acorn/",\ + ["npm:8.7.1", {\ + "packageLocation": "./.yarn/cache/acorn-npm-8.7.1-7c7a019990-aca0aabf98.zip/node_modules/acorn/",\ "packageDependencies": [\ - ["acorn", "npm:8.8.0"]\ + ["acorn", "npm:8.7.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -2835,12 +2910,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:5fc9506cdac3b623f10b3f7adb0b64c62d2c6059855d74020d649d3c7df60271229590b28e7061203e031c21cd88cfd7344e13902ceb1f7776b1da6a18ef4ad8#npm:5.3.2", {\ - "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-b5f3bb1aa9/0/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip/node_modules/acorn-jsx/",\ + ["virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2", {\ + "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-834321b202/0/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip/node_modules/acorn-jsx/",\ "packageDependencies": [\ - ["acorn-jsx", "virtual:5fc9506cdac3b623f10b3f7adb0b64c62d2c6059855d74020d649d3c7df60271229590b28e7061203e031c21cd88cfd7344e13902ceb1f7776b1da6a18ef4ad8#npm:5.3.2"],\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\ ["@types/acorn", null],\ - ["acorn", "npm:8.8.0"]\ + ["acorn", "npm:8.10.0"]\ ],\ "packagePeers": [\ "@types/acorn",\ @@ -3000,46 +3075,87 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["array-buffer-byte-length", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip/node_modules/array-buffer-byte-length/",\ + "packageDependencies": [\ + ["array-buffer-byte-length", "npm:1.0.0"],\ + ["call-bind", "npm:1.0.2"],\ + ["is-array-buffer", "npm:3.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["array-includes", [\ - ["npm:3.1.6", {\ - "packageLocation": "./.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip/node_modules/array-includes/",\ + ["npm:3.1.7", {\ + "packageLocation": "./.yarn/cache/array-includes-npm-3.1.7-d32a5ee179-06f9e4598f.zip/node_modules/array-includes/",\ "packageDependencies": [\ - ["array-includes", "npm:3.1.6"],\ + ["array-includes", "npm:3.1.7"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"],\ - ["get-intrinsic", "npm:1.2.0"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ + ["get-intrinsic", "npm:1.2.1"],\ ["is-string", "npm:1.0.7"]\ ],\ "linkType": "HARD"\ }]\ ]],\ + ["array.prototype.findlastindex", [\ + ["npm:1.2.3", {\ + "packageLocation": "./.yarn/cache/array.prototype.findlastindex-npm-1.2.3-2a36f4417b-31f35d7b37.zip/node_modules/array.prototype.findlastindex/",\ + "packageDependencies": [\ + ["array.prototype.findlastindex", "npm:1.2.3"],\ + ["call-bind", "npm:1.0.2"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ + ["es-shim-unscopables", "npm:1.0.0"],\ + ["get-intrinsic", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["array.prototype.flat", [\ - ["npm:1.3.1", {\ - "packageLocation": "./.yarn/cache/array.prototype.flat-npm-1.3.1-e9a9e389c0-5a8415949d.zip/node_modules/array.prototype.flat/",\ + ["npm:1.3.2", {\ + "packageLocation": "./.yarn/cache/array.prototype.flat-npm-1.3.2-350729f7f4-5d6b4bf102.zip/node_modules/array.prototype.flat/",\ "packageDependencies": [\ - ["array.prototype.flat", "npm:1.3.1"],\ + ["array.prototype.flat", "npm:1.3.2"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ ["es-shim-unscopables", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["array.prototype.flatmap", [\ - ["npm:1.3.1", {\ - "packageLocation": "./.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip/node_modules/array.prototype.flatmap/",\ + ["npm:1.3.2", {\ + "packageLocation": "./.yarn/cache/array.prototype.flatmap-npm-1.3.2-5c6a4af226-ce09fe21dc.zip/node_modules/array.prototype.flatmap/",\ "packageDependencies": [\ - ["array.prototype.flatmap", "npm:1.3.1"],\ + ["array.prototype.flatmap", "npm:1.3.2"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ ["es-shim-unscopables", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ }]\ ]],\ + ["arraybuffer.prototype.slice", [\ + ["npm:1.0.2", {\ + "packageLocation": "./.yarn/cache/arraybuffer.prototype.slice-npm-1.0.2-4eda52ad8c-c200faf437.zip/node_modules/arraybuffer.prototype.slice/",\ + "packageDependencies": [\ + ["arraybuffer.prototype.slice", "npm:1.0.2"],\ + ["array-buffer-byte-length", "npm:1.0.0"],\ + ["call-bind", "npm:1.0.2"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["is-array-buffer", "npm:3.0.2"],\ + ["is-shared-array-buffer", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["asap", [\ ["npm:2.0.6", {\ "packageLocation": "./.yarn/cache/asap-npm-2.0.6-36714d439d-b296c92c4b.zip/node_modules/asap/",\ @@ -3059,10 +3175,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["async-validator", [\ - ["npm:4.1.1", {\ - "packageLocation": "./.yarn/cache/async-validator-npm-4.1.1-470b8d5b59-88590ab8ad.zip/node_modules/async-validator/",\ + ["npm:4.2.5", {\ + "packageLocation": "./.yarn/cache/async-validator-npm-4.2.5-4d61110c66-3e3d891a2e.zip/node_modules/async-validator/",\ "packageDependencies": [\ - ["async-validator", "npm:4.1.1"]\ + ["async-validator", "npm:4.2.5"]\ ],\ "linkType": "HARD"\ }]\ @@ -3131,10 +3247,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["npm:5.3.0", {\ - "packageLocation": "./.yarn/cache/bootstrap-npm-5.3.0-240c38a3b2-29a83cc8ca.zip/node_modules/bootstrap/",\ + ["npm:5.3.2", {\ + "packageLocation": "./.yarn/cache/bootstrap-npm-5.3.2-20b391b636-d5580b253d.zip/node_modules/bootstrap/",\ "packageDependencies": [\ - ["bootstrap", "npm:5.3.0"]\ + ["bootstrap", "npm:5.3.2"]\ ],\ "linkType": "SOFT"\ }],\ @@ -3151,10 +3267,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.0", {\ - "packageLocation": "./.yarn/__virtual__/bootstrap-virtual-3c63ba6f80/0/cache/bootstrap-npm-5.3.0-240c38a3b2-29a83cc8ca.zip/node_modules/bootstrap/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.2", {\ + "packageLocation": "./.yarn/__virtual__/bootstrap-virtual-b366fabcb3/0/cache/bootstrap-npm-5.3.2-20b391b636-d5580b253d.zip/node_modules/bootstrap/",\ "packageDependencies": [\ - ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.0"],\ + ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.2"],\ ["@popperjs/core", "npm:2.11.8"],\ ["@types/popperjs__core", null]\ ],\ @@ -3166,10 +3282,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["bootstrap-icons", [\ - ["npm:1.10.5", {\ - "packageLocation": "./.yarn/cache/bootstrap-icons-npm-1.10.5-36f80ab074-8a0cfbd237.zip/node_modules/bootstrap-icons/",\ + ["npm:1.11.1", {\ + "packageLocation": "./.yarn/cache/bootstrap-icons-npm-1.11.1-9f55aea76a-d78ff24a83.zip/node_modules/bootstrap-icons/",\ "packageDependencies": [\ - ["bootstrap-icons", "npm:1.10.5"]\ + ["bootstrap-icons", "npm:1.11.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -3204,10 +3320,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["browser-fs-access", [\ - ["npm:0.34.1", {\ - "packageLocation": "./.yarn/cache/browser-fs-access-npm-0.34.1-7fcd7d9328-339865241c.zip/node_modules/browser-fs-access/",\ + ["npm:0.35.0", {\ + "packageLocation": "./.yarn/cache/browser-fs-access-npm-0.35.0-1577b5a7ba-5f3bf1ec17.zip/node_modules/browser-fs-access/",\ "packageDependencies": [\ - ["browser-fs-access", "npm:0.34.1"]\ + ["browser-fs-access", "npm:0.35.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -3247,22 +3363,22 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["c8", [\ - ["npm:8.0.0", {\ - "packageLocation": "./.yarn/cache/c8-npm-8.0.0-905b9370f4-9b107e412a.zip/node_modules/c8/",\ + ["npm:8.0.1", {\ + "packageLocation": "./.yarn/cache/c8-npm-8.0.1-6462c8130b-2c47531d21.zip/node_modules/c8/",\ "packageDependencies": [\ - ["c8", "npm:8.0.0"],\ + ["c8", "npm:8.0.1"],\ ["@bcoe/v8-coverage", "npm:0.2.3"],\ ["@istanbuljs/schema", "npm:0.1.3"],\ ["find-up", "npm:5.0.0"],\ ["foreground-child", "npm:2.0.0"],\ ["istanbul-lib-coverage", "npm:3.2.0"],\ - ["istanbul-lib-report", "npm:3.0.0"],\ - ["istanbul-reports", "npm:3.1.4"],\ + ["istanbul-lib-report", "npm:3.0.1"],\ + ["istanbul-reports", "npm:3.1.6"],\ ["rimraf", "npm:3.0.2"],\ ["test-exclude", "npm:6.0.0"],\ ["v8-to-istanbul", "npm:9.0.1"],\ - ["yargs", "npm:16.2.0"],\ - ["yargs-parser", "npm:20.2.9"]\ + ["yargs", "npm:17.7.2"],\ + ["yargs-parser", "npm:21.1.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -3303,6 +3419,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["get-intrinsic", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.0.5", {\ + "packageLocation": "./.yarn/cache/call-bind-npm-1.0.5-65600fae47-449e83ecbd.zip/node_modules/call-bind/",\ + "packageDependencies": [\ + ["call-bind", "npm:1.0.5"],\ + ["function-bind", "npm:1.1.2"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["set-function-length", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["callsites", [\ @@ -3322,10 +3448,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.0.30001495", {\ - "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001495-4b9e0263f7-c0a139a2e6.zip/node_modules/caniuse-lite/",\ + ["npm:1.0.30001538", {\ + "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001538-68bfe8259b-94c5d55757.zip/node_modules/caniuse-lite/",\ "packageDependencies": [\ - ["caniuse-lite", "npm:1.0.30001495"]\ + ["caniuse-lite", "npm:1.0.30001538"]\ ],\ "linkType": "HARD"\ }]\ @@ -3406,10 +3532,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["cliui", [\ - ["npm:7.0.4", {\ - "packageLocation": "./.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip/node_modules/cliui/",\ + ["npm:8.0.1", {\ + "packageLocation": "./.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip/node_modules/cliui/",\ "packageDependencies": [\ - ["cliui", "npm:7.0.4"],\ + ["cliui", "npm:8.0.1"],\ ["string-width", "npm:4.2.3"],\ ["strip-ansi", "npm:6.0.1"],\ ["wrap-ansi", "npm:7.0.0"]\ @@ -3553,6 +3679,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["csstype", "npm:3.0.11"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:0.15.12", {\ + "packageLocation": "./.yarn/cache/css-render-npm-0.15.12-ff93ab2bdd-80265c5055.zip/node_modules/css-render/",\ + "packageDependencies": [\ + ["css-render", "npm:0.15.12"],\ + ["@emotion/hash", "npm:0.8.0"],\ + ["csstype", "npm:3.0.11"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["css-select", [\ @@ -3995,28 +4130,29 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["date-fns", [\ - ["npm:2.28.0", {\ - "packageLocation": "./.yarn/cache/date-fns-npm-2.28.0-c19c5add1b-a0516b2e4f.zip/node_modules/date-fns/",\ + ["npm:2.30.0", {\ + "packageLocation": "./.yarn/cache/date-fns-npm-2.30.0-895c790e0f-f7be015232.zip/node_modules/date-fns/",\ "packageDependencies": [\ - ["date-fns", "npm:2.28.0"]\ + ["date-fns", "npm:2.30.0"],\ + ["@babel/runtime", "npm:7.23.2"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["date-fns-tz", [\ - ["npm:1.3.3", {\ - "packageLocation": "./.yarn/cache/date-fns-tz-npm-1.3.3-4b42de3dcf-52111dffb4.zip/node_modules/date-fns-tz/",\ + ["npm:2.0.0", {\ + "packageLocation": "./.yarn/cache/date-fns-tz-npm-2.0.0-9b7996f292-a6553603a9.zip/node_modules/date-fns-tz/",\ "packageDependencies": [\ - ["date-fns-tz", "npm:1.3.3"]\ + ["date-fns-tz", "npm:2.0.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:1.3.3", {\ - "packageLocation": "./.yarn/__virtual__/date-fns-tz-virtual-5ed5d687a0/0/cache/date-fns-tz-npm-1.3.3-4b42de3dcf-52111dffb4.zip/node_modules/date-fns-tz/",\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:2.0.0", {\ + "packageLocation": "./.yarn/__virtual__/date-fns-tz-virtual-b19bed24ca/0/cache/date-fns-tz-npm-2.0.0-9b7996f292-a6553603a9.zip/node_modules/date-fns-tz/",\ "packageDependencies": [\ - ["date-fns-tz", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:1.3.3"],\ + ["date-fns-tz", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:2.0.0"],\ ["@types/date-fns", null],\ - ["date-fns", "npm:2.28.0"]\ + ["date-fns", "npm:2.30.0"]\ ],\ "packagePeers": [\ "@types/date-fns",\ @@ -4047,10 +4183,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:65bed195431eadffc59e2238eb20cc12d9a1665bc7458ce780a9320ff795091b03cb5c4c2094938315ddd967b5b02c0f1df67b3ed435c69b7457092b7cc06ed8#npm:3.2.7", {\ - "packageLocation": "./.yarn/__virtual__/debug-virtual-2e2daad542/0/cache/debug-npm-3.2.7-754e818c7a-b3d8c59407.zip/node_modules/debug/",\ + ["virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7", {\ + "packageLocation": "./.yarn/__virtual__/debug-virtual-d2345003b7/0/cache/debug-npm-3.2.7-754e818c7a-b3d8c59407.zip/node_modules/debug/",\ "packageDependencies": [\ - ["debug", "virtual:65bed195431eadffc59e2238eb20cc12d9a1665bc7458ce780a9320ff795091b03cb5c4c2094938315ddd967b5b02c0f1df67b3ed435c69b7457092b7cc06ed8#npm:3.2.7"],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ ["@types/supports-color", null],\ ["ms", "npm:2.1.2"],\ ["supports-color", null]\ @@ -4100,13 +4236,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["deepmerge", [\ - ["npm:4.2.2", {\ - "packageLocation": "./.yarn/cache/deepmerge-npm-4.2.2-112165ced2-a8c43a1ed8.zip/node_modules/deepmerge/",\ - "packageDependencies": [\ - ["deepmerge", "npm:4.2.2"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:4.3.1", {\ "packageLocation": "./.yarn/cache/deepmerge-npm-4.3.1-4f751a0844-2024c6a980.zip/node_modules/deepmerge/",\ "packageDependencies": [\ @@ -4115,6 +4244,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["define-data-property", [\ + ["npm:1.1.1", {\ + "packageLocation": "./.yarn/cache/define-data-property-npm-1.1.1-2b5156d112-a29855ad3f.zip/node_modules/define-data-property/",\ + "packageDependencies": [\ + ["define-data-property", "npm:1.1.1"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["gopd", "npm:1.0.1"],\ + ["has-property-descriptors", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["define-properties", [\ ["npm:1.1.4", {\ "packageLocation": "./.yarn/cache/define-properties-npm-1.1.4-85ee575655-ce0aef3f9e.zip/node_modules/define-properties/",\ @@ -4124,6 +4265,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["object-keys", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.2.0", {\ + "packageLocation": "./.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip/node_modules/define-properties/",\ + "packageDependencies": [\ + ["define-properties", "npm:1.2.0"],\ + ["has-property-descriptors", "npm:1.0.0"],\ + ["object-keys", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["delaunator", [\ @@ -4177,6 +4327,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["detect-libc", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:2.0.2", {\ + "packageLocation": "./.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip/node_modules/detect-libc/",\ + "packageDependencies": [\ + ["detect-libc", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["doctrine", [\ @@ -4374,43 +4531,49 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["es-abstract", [\ - ["npm:1.21.1", {\ - "packageLocation": "./.yarn/cache/es-abstract-npm-1.21.1-28d9a4a469-23ff60d42d.zip/node_modules/es-abstract/",\ + ["npm:1.22.3", {\ + "packageLocation": "./.yarn/cache/es-abstract-npm-1.22.3-15a58832e5-b1bdc96285.zip/node_modules/es-abstract/",\ "packageDependencies": [\ - ["es-abstract", "npm:1.21.1"],\ + ["es-abstract", "npm:1.22.3"],\ + ["array-buffer-byte-length", "npm:1.0.0"],\ + ["arraybuffer.prototype.slice", "npm:1.0.2"],\ ["available-typed-arrays", "npm:1.0.5"],\ - ["call-bind", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.5"],\ ["es-set-tostringtag", "npm:2.0.1"],\ ["es-to-primitive", "npm:1.2.1"],\ - ["function-bind", "npm:1.1.1"],\ - ["function.prototype.name", "npm:1.1.5"],\ - ["get-intrinsic", "npm:1.2.0"],\ + ["function.prototype.name", "npm:1.1.6"],\ + ["get-intrinsic", "npm:1.2.2"],\ ["get-symbol-description", "npm:1.0.0"],\ ["globalthis", "npm:1.0.3"],\ ["gopd", "npm:1.0.1"],\ - ["has", "npm:1.0.3"],\ ["has-property-descriptors", "npm:1.0.0"],\ ["has-proto", "npm:1.0.1"],\ ["has-symbols", "npm:1.0.3"],\ - ["internal-slot", "npm:1.0.4"],\ - ["is-array-buffer", "npm:3.0.1"],\ + ["hasown", "npm:2.0.0"],\ + ["internal-slot", "npm:1.0.5"],\ + ["is-array-buffer", "npm:3.0.2"],\ ["is-callable", "npm:1.2.7"],\ ["is-negative-zero", "npm:2.0.2"],\ ["is-regex", "npm:1.1.4"],\ ["is-shared-array-buffer", "npm:1.0.2"],\ ["is-string", "npm:1.0.7"],\ - ["is-typed-array", "npm:1.1.10"],\ + ["is-typed-array", "npm:1.1.12"],\ ["is-weakref", "npm:1.0.2"],\ - ["object-inspect", "npm:1.12.3"],\ + ["object-inspect", "npm:1.13.1"],\ ["object-keys", "npm:1.1.1"],\ ["object.assign", "npm:4.1.4"],\ - ["regexp.prototype.flags", "npm:1.4.3"],\ + ["regexp.prototype.flags", "npm:1.5.1"],\ + ["safe-array-concat", "npm:1.0.1"],\ ["safe-regex-test", "npm:1.0.0"],\ - ["string.prototype.trimend", "npm:1.0.6"],\ - ["string.prototype.trimstart", "npm:1.0.6"],\ + ["string.prototype.trim", "npm:1.2.8"],\ + ["string.prototype.trimend", "npm:1.0.7"],\ + ["string.prototype.trimstart", "npm:1.0.7"],\ + ["typed-array-buffer", "npm:1.0.0"],\ + ["typed-array-byte-length", "npm:1.0.0"],\ + ["typed-array-byte-offset", "npm:1.0.0"],\ ["typed-array-length", "npm:1.0.4"],\ ["unbox-primitive", "npm:1.0.2"],\ - ["which-typed-array", "npm:1.1.9"]\ + ["which-typed-array", "npm:1.1.13"]\ ],\ "linkType": "HARD"\ }]\ @@ -4450,32 +4613,32 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["esbuild", [\ - ["npm:0.17.13", {\ - "packageLocation": "./.yarn/unplugged/esbuild-npm-0.17.13-538abc913d/node_modules/esbuild/",\ - "packageDependencies": [\ - ["esbuild", "npm:0.17.13"],\ - ["@esbuild/android-arm", "npm:0.17.13"],\ - ["@esbuild/android-arm64", "npm:0.17.13"],\ - ["@esbuild/android-x64", "npm:0.17.13"],\ - ["@esbuild/darwin-arm64", "npm:0.17.13"],\ - ["@esbuild/darwin-x64", "npm:0.17.13"],\ - ["@esbuild/freebsd-arm64", "npm:0.17.13"],\ - ["@esbuild/freebsd-x64", "npm:0.17.13"],\ - ["@esbuild/linux-arm", "npm:0.17.13"],\ - ["@esbuild/linux-arm64", "npm:0.17.13"],\ - ["@esbuild/linux-ia32", "npm:0.17.13"],\ - ["@esbuild/linux-loong64", "npm:0.17.13"],\ - ["@esbuild/linux-mips64el", "npm:0.17.13"],\ - ["@esbuild/linux-ppc64", "npm:0.17.13"],\ - ["@esbuild/linux-riscv64", "npm:0.17.13"],\ - ["@esbuild/linux-s390x", "npm:0.17.13"],\ - ["@esbuild/linux-x64", "npm:0.17.13"],\ - ["@esbuild/netbsd-x64", "npm:0.17.13"],\ - ["@esbuild/openbsd-x64", "npm:0.17.13"],\ - ["@esbuild/sunos-x64", "npm:0.17.13"],\ - ["@esbuild/win32-arm64", "npm:0.17.13"],\ - ["@esbuild/win32-ia32", "npm:0.17.13"],\ - ["@esbuild/win32-x64", "npm:0.17.13"]\ + ["npm:0.18.20", {\ + "packageLocation": "./.yarn/unplugged/esbuild-npm-0.18.20-004a76d281/node_modules/esbuild/",\ + "packageDependencies": [\ + ["esbuild", "npm:0.18.20"],\ + ["@esbuild/android-arm", "npm:0.18.20"],\ + ["@esbuild/android-arm64", "npm:0.18.20"],\ + ["@esbuild/android-x64", "npm:0.18.20"],\ + ["@esbuild/darwin-arm64", "npm:0.18.20"],\ + ["@esbuild/darwin-x64", "npm:0.18.20"],\ + ["@esbuild/freebsd-arm64", "npm:0.18.20"],\ + ["@esbuild/freebsd-x64", "npm:0.18.20"],\ + ["@esbuild/linux-arm", "npm:0.18.20"],\ + ["@esbuild/linux-arm64", "npm:0.18.20"],\ + ["@esbuild/linux-ia32", "npm:0.18.20"],\ + ["@esbuild/linux-loong64", "npm:0.18.20"],\ + ["@esbuild/linux-mips64el", "npm:0.18.20"],\ + ["@esbuild/linux-ppc64", "npm:0.18.20"],\ + ["@esbuild/linux-riscv64", "npm:0.18.20"],\ + ["@esbuild/linux-s390x", "npm:0.18.20"],\ + ["@esbuild/linux-x64", "npm:0.18.20"],\ + ["@esbuild/netbsd-x64", "npm:0.18.20"],\ + ["@esbuild/openbsd-x64", "npm:0.18.20"],\ + ["@esbuild/sunos-x64", "npm:0.18.20"],\ + ["@esbuild/win32-arm64", "npm:0.18.20"],\ + ["@esbuild/win32-ia32", "npm:0.18.20"],\ + ["@esbuild/win32-x64", "npm:0.18.20"]\ ],\ "linkType": "HARD"\ }]\ @@ -4515,26 +4678,27 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint", [\ - ["npm:8.43.0", {\ - "packageLocation": "./.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip/node_modules/eslint/",\ - "packageDependencies": [\ - ["eslint", "npm:8.43.0"],\ - ["@eslint-community/eslint-utils", "virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0"],\ - ["@eslint-community/regexpp", "npm:4.4.1"],\ - ["@eslint/eslintrc", "npm:2.0.3"],\ - ["@eslint/js", "npm:8.43.0"],\ - ["@humanwhocodes/config-array", "npm:0.11.10"],\ + ["npm:8.52.0", {\ + "packageLocation": "./.yarn/cache/eslint-npm-8.52.0-e7f048a439-fd22d1e9bd.zip/node_modules/eslint/",\ + "packageDependencies": [\ + ["eslint", "npm:8.52.0"],\ + ["@eslint-community/eslint-utils", "virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0"],\ + ["@eslint-community/regexpp", "npm:4.8.0"],\ + ["@eslint/eslintrc", "npm:2.1.2"],\ + ["@eslint/js", "npm:8.52.0"],\ + ["@humanwhocodes/config-array", "npm:0.11.13"],\ ["@humanwhocodes/module-importer", "npm:1.0.1"],\ ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["@ungap/structured-clone", "npm:1.2.0"],\ ["ajv", "npm:6.12.6"],\ ["chalk", "npm:4.1.2"],\ ["cross-spawn", "npm:7.0.3"],\ ["debug", "virtual:b86a9fb34323a98c6519528ed55faa0d9b44ca8879307c0b29aa384bde47ff59a7d0c9051b31246f14521dfb71ba3c5d6d0b35c29fffc17bf875aa6ad977d9e8#npm:4.3.4"],\ ["doctrine", "npm:3.0.0"],\ ["escape-string-regexp", "npm:4.0.0"],\ - ["eslint-scope", "npm:7.2.0"],\ - ["eslint-visitor-keys", "npm:3.4.1"],\ - ["espree", "npm:9.5.2"],\ + ["eslint-scope", "npm:7.2.2"],\ + ["eslint-visitor-keys", "npm:3.4.3"],\ + ["espree", "npm:9.6.1"],\ ["esquery", "npm:1.5.0"],\ ["esutils", "npm:2.0.3"],\ ["fast-deep-equal", "npm:3.1.3"],\ @@ -4544,7 +4708,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["globals", "npm:13.19.0"],\ ["graphemer", "npm:1.4.0"],\ ["ignore", "npm:5.2.0"],\ - ["import-fresh", "npm:3.3.0"],\ ["imurmurhash", "npm:0.1.4"],\ ["is-glob", "npm:4.0.3"],\ ["is-path-inside", "npm:3.0.3"],\ @@ -4554,9 +4717,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["lodash.merge", "npm:4.6.2"],\ ["minimatch", "npm:3.1.2"],\ ["natural-compare", "npm:1.4.0"],\ - ["optionator", "npm:0.9.1"],\ + ["optionator", "npm:0.9.3"],\ ["strip-ansi", "npm:6.0.1"],\ - ["strip-json-comments", "npm:3.1.1"],\ ["text-table", "npm:0.2.0"]\ ],\ "linkType": "HARD"\ @@ -4578,9 +4740,9 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/eslint-plugin-import", null],\ ["@types/eslint-plugin-n", null],\ ["@types/eslint-plugin-promise", null],\ - ["eslint", "npm:8.43.0"],\ - ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.27.5"],\ - ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.0.1"],\ + ["eslint", "npm:8.52.0"],\ + ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.29.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.2.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"]\ ],\ "packagePeers": [\ @@ -4597,38 +4759,38 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-import-resolver-node", [\ - ["npm:0.3.7", {\ - "packageLocation": "./.yarn/cache/eslint-import-resolver-node-npm-0.3.7-65bed19543-3379aacf1d.zip/node_modules/eslint-import-resolver-node/",\ + ["npm:0.3.9", {\ + "packageLocation": "./.yarn/cache/eslint-import-resolver-node-npm-0.3.9-2a426afc4b-439b912712.zip/node_modules/eslint-import-resolver-node/",\ "packageDependencies": [\ - ["eslint-import-resolver-node", "npm:0.3.7"],\ - ["debug", "virtual:65bed195431eadffc59e2238eb20cc12d9a1665bc7458ce780a9320ff795091b03cb5c4c2094938315ddd967b5b02c0f1df67b3ed435c69b7457092b7cc06ed8#npm:3.2.7"],\ - ["is-core-module", "npm:2.11.0"],\ - ["resolve", "patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"]\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["is-core-module", "npm:2.13.0"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["eslint-module-utils", [\ - ["npm:2.7.4", {\ - "packageLocation": "./.yarn/cache/eslint-module-utils-npm-2.7.4-a1640084cb-5da13645da.zip/node_modules/eslint-module-utils/",\ + ["npm:2.8.0", {\ + "packageLocation": "./.yarn/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip/node_modules/eslint-module-utils/",\ "packageDependencies": [\ - ["eslint-module-utils", "npm:2.7.4"]\ + ["eslint-module-utils", "npm:2.8.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:bd6906041f26404b69936f019863470d6b0f75b1c61c4157b266eb36d096227fb0d250c76d47e694906c4d352d0c4c1a1a71e1f575fbbb05fe72b26198a32c57#npm:2.7.4", {\ - "packageLocation": "./.yarn/__virtual__/eslint-module-utils-virtual-5ee98b4501/0/cache/eslint-module-utils-npm-2.7.4-a1640084cb-5da13645da.zip/node_modules/eslint-module-utils/",\ + ["virtual:361651f3309db7531b781b9cf23ea5ff31cb68a9d2e5b7a3be36bfa256e5be480a2eee2a0bb0e03ad6f236a91b841e8cfc2d7af10d590e856ac79becc3546855#npm:2.8.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-module-utils-virtual-a2b14e4224/0/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip/node_modules/eslint-module-utils/",\ "packageDependencies": [\ - ["eslint-module-utils", "virtual:bd6906041f26404b69936f019863470d6b0f75b1c61c4157b266eb36d096227fb0d250c76d47e694906c4d352d0c4c1a1a71e1f575fbbb05fe72b26198a32c57#npm:2.7.4"],\ + ["eslint-module-utils", "virtual:361651f3309db7531b781b9cf23ea5ff31cb68a9d2e5b7a3be36bfa256e5be480a2eee2a0bb0e03ad6f236a91b841e8cfc2d7af10d590e856ac79becc3546855#npm:2.8.0"],\ ["@types/eslint", null],\ ["@types/eslint-import-resolver-node", null],\ ["@types/eslint-import-resolver-typescript", null],\ ["@types/eslint-import-resolver-webpack", null],\ ["@types/typescript-eslint__parser", null],\ ["@typescript-eslint/parser", null],\ - ["debug", "virtual:65bed195431eadffc59e2238eb20cc12d9a1665bc7458ce780a9320ff795091b03cb5c4c2094938315ddd967b5b02c0f1df67b3ed435c69b7457092b7cc06ed8#npm:3.2.7"],\ - ["eslint", "npm:8.43.0"],\ - ["eslint-import-resolver-node", "npm:0.3.7"],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ + ["eslint", "npm:8.52.0"],\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ ["eslint-import-resolver-typescript", null],\ ["eslint-import-resolver-webpack", null]\ ],\ @@ -4648,20 +4810,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-cypress", [\ - ["npm:2.13.3", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-cypress-npm-2.13.3-0ad3bff9c9-9affbcee29.zip/node_modules/eslint-plugin-cypress/",\ + ["npm:2.15.1", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-cypress-npm-2.15.1-90f777d9bd-3e66fa9a94.zip/node_modules/eslint-plugin-cypress/",\ "packageDependencies": [\ - ["eslint-plugin-cypress", "npm:2.13.3"]\ + ["eslint-plugin-cypress", "npm:2.15.1"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.13.3", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-cypress-virtual-2dc00cb202/0/cache/eslint-plugin-cypress-npm-2.13.3-0ad3bff9c9-9affbcee29.zip/node_modules/eslint-plugin-cypress/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.15.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-cypress-virtual-33ce75aabf/0/cache/eslint-plugin-cypress-npm-2.15.1-90f777d9bd-3e66fa9a94.zip/node_modules/eslint-plugin-cypress/",\ "packageDependencies": [\ - ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.13.3"],\ + ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.15.1"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"],\ - ["globals", "npm:11.12.0"]\ + ["eslint", "npm:8.52.0"],\ + ["globals", "npm:13.21.0"]\ ],\ "packagePeers": [\ "@types/eslint",\ @@ -4683,7 +4845,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["eslint-plugin-es", "virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-utils", "npm:2.1.0"],\ ["regexpp", "npm:3.2.0"]\ ],\ @@ -4702,14 +4864,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:adc54309e8e54b60324bd0d3562e4cdf4588bb7e8e9bf0e8567ae0b912e220b364ab900a1f69ea824481e4ed94aa6d687c737b8f554fa53b86231581c20d170a#npm:7.1.0", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-x-virtual-7882922717/0/cache/eslint-plugin-es-x-npm-7.1.0-35735e8bbc-a19924313c.zip/node_modules/eslint-plugin-es-x/",\ + ["virtual:990a558e2898625aeb04d5e4d99c65569b456f1205bf2f887fd96310a4f502e48e83c1c993f5a46d1cb27cf7bf7d2b513e2850b2c2df904e744e7d8325464673#npm:7.1.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-es-x-virtual-c166cb743f/0/cache/eslint-plugin-es-x-npm-7.1.0-35735e8bbc-a19924313c.zip/node_modules/eslint-plugin-es-x/",\ "packageDependencies": [\ - ["eslint-plugin-es-x", "virtual:adc54309e8e54b60324bd0d3562e4cdf4588bb7e8e9bf0e8567ae0b912e220b364ab900a1f69ea824481e4ed94aa6d687c737b8f554fa53b86231581c20d170a#npm:7.1.0"],\ - ["@eslint-community/eslint-utils", "virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0"],\ + ["eslint-plugin-es-x", "virtual:990a558e2898625aeb04d5e4d99c65569b456f1205bf2f887fd96310a4f502e48e83c1c993f5a46d1cb27cf7bf7d2b513e2850b2c2df904e744e7d8325464673#npm:7.1.0"],\ + ["@eslint-community/eslint-utils", "virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0"],\ ["@eslint-community/regexpp", "npm:4.5.1"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"]\ + ["eslint", "npm:8.52.0"]\ ],\ "packagePeers": [\ "@types/eslint",\ @@ -4719,36 +4881,38 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-import", [\ - ["npm:2.27.5", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip/node_modules/eslint-plugin-import/",\ + ["npm:2.29.0", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-import-npm-2.29.0-9cd6da0b0a-19ee541fb9.zip/node_modules/eslint-plugin-import/",\ "packageDependencies": [\ - ["eslint-plugin-import", "npm:2.27.5"]\ + ["eslint-plugin-import", "npm:2.29.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.27.5", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-import-virtual-bd6906041f/0/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip/node_modules/eslint-plugin-import/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.29.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-import-virtual-361651f330/0/cache/eslint-plugin-import-npm-2.29.0-9cd6da0b0a-19ee541fb9.zip/node_modules/eslint-plugin-import/",\ "packageDependencies": [\ - ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.27.5"],\ + ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.29.0"],\ ["@types/eslint", null],\ ["@types/typescript-eslint__parser", null],\ ["@typescript-eslint/parser", null],\ - ["array-includes", "npm:3.1.6"],\ - ["array.prototype.flat", "npm:1.3.1"],\ - ["array.prototype.flatmap", "npm:1.3.1"],\ - ["debug", "virtual:65bed195431eadffc59e2238eb20cc12d9a1665bc7458ce780a9320ff795091b03cb5c4c2094938315ddd967b5b02c0f1df67b3ed435c69b7457092b7cc06ed8#npm:3.2.7"],\ + ["array-includes", "npm:3.1.7"],\ + ["array.prototype.findlastindex", "npm:1.2.3"],\ + ["array.prototype.flat", "npm:1.3.2"],\ + ["array.prototype.flatmap", "npm:1.3.2"],\ + ["debug", "virtual:2a426afc4b2eef43db12a540d29c2b5476640459bfcd5c24f86bb401cf8cce97e63bd81794d206a5643057e7f662643afd5ce3dfc4d4bfd8e706006c6309c5fa#npm:3.2.7"],\ ["doctrine", "npm:2.1.0"],\ - ["eslint", "npm:8.43.0"],\ - ["eslint-import-resolver-node", "npm:0.3.7"],\ - ["eslint-module-utils", "virtual:bd6906041f26404b69936f019863470d6b0f75b1c61c4157b266eb36d096227fb0d250c76d47e694906c4d352d0c4c1a1a71e1f575fbbb05fe72b26198a32c57#npm:2.7.4"],\ - ["has", "npm:1.0.3"],\ - ["is-core-module", "npm:2.11.0"],\ + ["eslint", "npm:8.52.0"],\ + ["eslint-import-resolver-node", "npm:0.3.9"],\ + ["eslint-module-utils", "virtual:361651f3309db7531b781b9cf23ea5ff31cb68a9d2e5b7a3be36bfa256e5be480a2eee2a0bb0e03ad6f236a91b841e8cfc2d7af10d590e856ac79becc3546855#npm:2.8.0"],\ + ["hasown", "npm:2.0.0"],\ + ["is-core-module", "npm:2.13.1"],\ ["is-glob", "npm:4.0.3"],\ ["minimatch", "npm:3.1.2"],\ - ["object.values", "npm:1.1.6"],\ - ["resolve", "patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"],\ - ["semver", "npm:6.3.0"],\ - ["tsconfig-paths", "npm:3.14.1"]\ + ["object.fromentries", "npm:2.0.7"],\ + ["object.groupby", "npm:1.0.1"],\ + ["object.values", "npm:1.1.7"],\ + ["semver", "npm:6.3.1"],\ + ["tsconfig-paths", "npm:3.14.2"]\ ],\ "packagePeers": [\ "@types/eslint",\ @@ -4760,22 +4924,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-n", [\ - ["npm:16.0.1", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-n-npm-16.0.1-6a07bf1b46-407002bb06.zip/node_modules/eslint-plugin-n/",\ + ["npm:16.2.0", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-n-npm-16.2.0-b2b8355312-124ba4f418.zip/node_modules/eslint-plugin-n/",\ "packageDependencies": [\ - ["eslint-plugin-n", "npm:16.0.1"]\ + ["eslint-plugin-n", "npm:16.2.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.0.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-n-virtual-adc54309e8/0/cache/eslint-plugin-n-npm-16.0.1-6a07bf1b46-407002bb06.zip/node_modules/eslint-plugin-n/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.2.0", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-n-virtual-990a558e28/0/cache/eslint-plugin-n-npm-16.2.0-b2b8355312-124ba4f418.zip/node_modules/eslint-plugin-n/",\ "packageDependencies": [\ - ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.0.1"],\ - ["@eslint-community/eslint-utils", "virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.2.0"],\ + ["@eslint-community/eslint-utils", "virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0"],\ ["@types/eslint", null],\ ["builtins", "npm:5.0.1"],\ - ["eslint", "npm:8.43.0"],\ - ["eslint-plugin-es-x", "virtual:adc54309e8e54b60324bd0d3562e4cdf4588bb7e8e9bf0e8567ae0b912e220b364ab900a1f69ea824481e4ed94aa6d687c737b8f554fa53b86231581c20d170a#npm:7.1.0"],\ + ["eslint", "npm:8.52.0"],\ + ["eslint-plugin-es-x", "virtual:990a558e2898625aeb04d5e4d99c65569b456f1205bf2f887fd96310a4f502e48e83c1c993f5a46d1cb27cf7bf7d2b513e2850b2c2df904e744e7d8325464673#npm:7.1.0"],\ + ["get-tsconfig", "npm:4.7.2"],\ ["ignore", "npm:5.2.4"],\ ["is-core-module", "npm:2.12.1"],\ ["minimatch", "npm:3.1.2"],\ @@ -4802,7 +4967,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-plugin-es", "virtual:5cccaf00e87dfff96dbbb5eaf7a3055373358b8114d6a1adfb32f54ed6b40ba06068d3aa1fdd8062899a0cad040f68c17cc6b72bac2cdbe9700f3d6330d112f3#npm:3.0.1"],\ ["eslint-utils", "npm:2.1.0"],\ ["ignore", "npm:5.2.0"],\ @@ -4830,7 +4995,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"]\ + ["eslint", "npm:8.52.0"]\ ],\ "packagePeers": [\ "@types/eslint",\ @@ -4840,25 +5005,25 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["eslint-plugin-vue", [\ - ["npm:9.15.1", {\ - "packageLocation": "./.yarn/cache/eslint-plugin-vue-npm-9.15.1-9577f26965-b1cdb16e43.zip/node_modules/eslint-plugin-vue/",\ + ["npm:9.18.1", {\ + "packageLocation": "./.yarn/cache/eslint-plugin-vue-npm-9.18.1-69de725f8c-774c1e9163.zip/node_modules/eslint-plugin-vue/",\ "packageDependencies": [\ - ["eslint-plugin-vue", "npm:9.15.1"]\ + ["eslint-plugin-vue", "npm:9.18.1"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.15.1", {\ - "packageLocation": "./.yarn/__virtual__/eslint-plugin-vue-virtual-a8bbfcc6af/0/cache/eslint-plugin-vue-npm-9.15.1-9577f26965-b1cdb16e43.zip/node_modules/eslint-plugin-vue/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.18.1", {\ + "packageLocation": "./.yarn/__virtual__/eslint-plugin-vue-virtual-c049280e08/0/cache/eslint-plugin-vue-npm-9.18.1-69de725f8c-774c1e9163.zip/node_modules/eslint-plugin-vue/",\ "packageDependencies": [\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.15.1"],\ - ["@eslint-community/eslint-utils", "virtual:5757109ac88221e94a852cc9f73e2f55465a7102fffadd66cbbc453ec0085a59a55391bf490e79144c3026a10d76b992734f4e89f8c9b0e26d0c979c648afdd9#npm:4.4.0"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.18.1"],\ + ["@eslint-community/eslint-utils", "virtual:e7f048a4398cf12bbd1cde95eff45a3327b9fe42e04c31ed99d0e926830d0b78ff78b511118c2bd3bc6add84782ab97a5b001e972071d6fdbfe85a86c150922a#npm:4.4.0"],\ ["@types/eslint", null],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["natural-compare", "npm:1.4.0"],\ ["nth-check", "npm:2.1.1"],\ - ["postcss-selector-parser", "npm:6.0.10"],\ - ["semver", "npm:7.3.7"],\ - ["vue-eslint-parser", "virtual:a8bbfcc6afa85eb44874f97c133694affff1c591fe1b49dc91c6f1460a3171f7ff9fc2b8fb54fbfa07a880d0e032b8ea8822bda13d1bad3b005c3cf6f77986c0#npm:9.3.0"],\ + ["postcss-selector-parser", "npm:6.0.13"],\ + ["semver", "npm:7.5.4"],\ + ["vue-eslint-parser", "virtual:c049280e085a5fbf364ae13382e78afc9030f197042e9af966e5a699f76ded15d4d96a25dcd6b57cec183d656bd2de42ea186e6a928204c48f8702503655cbd4#npm:9.3.1"],\ ["xml-name-validator", "npm:4.0.0"]\ ],\ "packagePeers": [\ @@ -4878,10 +5043,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:7.2.0", {\ - "packageLocation": "./.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip/node_modules/eslint-scope/",\ + ["npm:7.2.2", {\ + "packageLocation": "./.yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip/node_modules/eslint-scope/",\ "packageDependencies": [\ - ["eslint-scope", "npm:7.2.0"],\ + ["eslint-scope", "npm:7.2.2"],\ ["esrecurse", "npm:4.3.0"],\ ["estraverse", "npm:5.3.0"]\ ],\ @@ -4919,6 +5084,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["eslint-visitor-keys", "npm:3.4.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:3.4.3", {\ + "packageLocation": "./.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip/node_modules/eslint-visitor-keys/",\ + "packageDependencies": [\ + ["eslint-visitor-keys", "npm:3.4.3"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["espree", [\ @@ -4932,12 +5104,12 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:9.5.2", {\ - "packageLocation": "./.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip/node_modules/espree/",\ + ["npm:9.6.1", {\ + "packageLocation": "./.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip/node_modules/espree/",\ "packageDependencies": [\ - ["espree", "npm:9.5.2"],\ - ["acorn", "npm:8.8.0"],\ - ["acorn-jsx", "virtual:5fc9506cdac3b623f10b3f7adb0b64c62d2c6059855d74020d649d3c7df60271229590b28e7061203e031c21cd88cfd7344e13902ceb1f7776b1da6a18ef4ad8#npm:5.3.2"],\ + ["espree", "npm:9.6.1"],\ + ["acorn", "npm:8.10.0"],\ + ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\ ["eslint-visitor-keys", "npm:3.4.1"]\ ],\ "linkType": "HARD"\ @@ -5195,16 +5367,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["function-bind", "npm:1.1.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.1.2", {\ + "packageLocation": "./.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip/node_modules/function-bind/",\ + "packageDependencies": [\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["function.prototype.name", [\ - ["npm:1.1.5", {\ - "packageLocation": "./.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip/node_modules/function.prototype.name/",\ + ["npm:1.1.6", {\ + "packageLocation": "./.yarn/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-7a3f9bd98a.zip/node_modules/function.prototype.name/",\ "packageDependencies": [\ - ["function.prototype.name", "npm:1.1.5"],\ + ["function.prototype.name", "npm:1.1.6"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ ["functions-have-names", "npm:1.2.3"]\ ],\ "linkType": "HARD"\ @@ -5265,6 +5444,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["has-symbols", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.2.1", {\ + "packageLocation": "./.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip/node_modules/get-intrinsic/",\ + "packageDependencies": [\ + ["get-intrinsic", "npm:1.2.1"],\ + ["function-bind", "npm:1.1.1"],\ + ["has", "npm:1.0.3"],\ + ["has-proto", "npm:1.0.1"],\ + ["has-symbols", "npm:1.0.3"]\ + ],\ + "linkType": "HARD"\ + }],\ + ["npm:1.2.2", {\ + "packageLocation": "./.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-447ff0724d.zip/node_modules/get-intrinsic/",\ + "packageDependencies": [\ + ["get-intrinsic", "npm:1.2.2"],\ + ["function-bind", "npm:1.1.2"],\ + ["has-proto", "npm:1.0.1"],\ + ["has-symbols", "npm:1.0.3"],\ + ["hasown", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["get-port", [\ @@ -5287,6 +5488,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["get-tsconfig", [\ + ["npm:4.7.2", {\ + "packageLocation": "./.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip/node_modules/get-tsconfig/",\ + "packageDependencies": [\ + ["get-tsconfig", "npm:4.7.2"],\ + ["resolve-pkg-maps", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["glob", [\ ["npm:10.2.4", {\ "packageLocation": "./.yarn/cache/glob-npm-10.2.4-49f715fccc-29845faaa1.zip/node_modules/glob/",\ @@ -5345,13 +5556,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["globals", [\ - ["npm:11.12.0", {\ - "packageLocation": "./.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip/node_modules/globals/",\ - "packageDependencies": [\ - ["globals", "npm:11.12.0"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:13.15.0", {\ "packageLocation": "./.yarn/cache/globals-npm-13.15.0-c0b0c83a7a-383ade0873.zip/node_modules/globals/",\ "packageDependencies": [\ @@ -5367,6 +5571,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["type-fest", "npm:0.20.2"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:13.21.0", {\ + "packageLocation": "./.yarn/cache/globals-npm-13.21.0-c0829ce1cb-86c92ca8a0.zip/node_modules/globals/",\ + "packageDependencies": [\ + ["globals", "npm:13.21.0"],\ + ["type-fest", "npm:0.20.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["globalthis", [\ @@ -5489,6 +5701,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["hasown", [\ + ["npm:2.0.0", {\ + "packageLocation": "./.yarn/cache/hasown-npm-2.0.0-78b794ceef-6151c75ca1.zip/node_modules/hasown/",\ + "packageDependencies": [\ + ["hasown", "npm:2.0.0"],\ + ["function-bind", "npm:1.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["highcharts", [\ ["npm:11.1.0", {\ "packageLocation": "./.yarn/cache/highcharts-npm-11.1.0-0d42a04430-f9b8cdc38b.zip/node_modules/highcharts/",\ @@ -5499,10 +5721,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["highlight.js", [\ - ["npm:11.5.1", {\ - "packageLocation": "./.yarn/cache/highlight.js-npm-11.5.1-0fb1167640-bff556101d.zip/node_modules/highlight.js/",\ + ["npm:11.9.0", {\ + "packageLocation": "./.yarn/cache/highlight.js-npm-11.9.0-ec99f7b12f-4043d31c5d.zip/node_modules/highlight.js/",\ "packageDependencies": [\ - ["highlight.js", "npm:11.5.1"]\ + ["highlight.js", "npm:11.9.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -5517,42 +5739,46 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["html-validate", [\ - ["npm:8.0.5", {\ - "packageLocation": "./.yarn/cache/html-validate-npm-8.0.5-b9c8df9b15-05c5255032.zip/node_modules/html-validate/",\ + ["npm:8.7.0", {\ + "packageLocation": "./.yarn/cache/html-validate-npm-8.7.0-7989d0b76e-f1b346bad8.zip/node_modules/html-validate/",\ "packageDependencies": [\ - ["html-validate", "npm:8.0.5"]\ + ["html-validate", "npm:8.7.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.0.5", {\ - "packageLocation": "./.yarn/__virtual__/html-validate-virtual-5b253c7fe6/0/cache/html-validate-npm-8.0.5-b9c8df9b15-05c5255032.zip/node_modules/html-validate/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.7.0", {\ + "packageLocation": "./.yarn/__virtual__/html-validate-virtual-c83421120a/0/cache/html-validate-npm-8.7.0-7989d0b76e-f1b346bad8.zip/node_modules/html-validate/",\ "packageDependencies": [\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.0.5"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.7.0"],\ ["@babel/code-frame", "npm:7.16.7"],\ ["@html-validate/stylish", "npm:4.1.0"],\ - ["@sidvind/better-ajv-errors", "virtual:5b253c7fe6920728e3c9c52a5bc1311d65d2e0c4fed3ef146b86c5f66caee15cd0369525e4dcd3e32e97a7168db12a74c5dd0ba006e6fd26f77cbbe68415a9f7#npm:2.0.0"],\ + ["@sidvind/better-ajv-errors", "virtual:c83421120a0d81573c2202cf177f92bb37ea59966baf7759b6fa4e9a2982e6fe336614d87630b5be4c85c00ef51834cf2a040f710a51f15e792d3dd3e2377e0f#npm:2.0.0"],\ ["@types/jest", null],\ ["@types/jest-diff", null],\ ["@types/jest-snapshot", null],\ + ["@types/vitest", null],\ ["ajv", "npm:8.11.0"],\ - ["deepmerge", "npm:4.2.2"],\ + ["deepmerge", "npm:4.3.1"],\ ["glob", "npm:10.2.4"],\ - ["ignore", "npm:5.2.0"],\ + ["ignore", "npm:5.2.4"],\ ["jest", null],\ ["jest-diff", null],\ ["jest-snapshot", null],\ ["kleur", "npm:4.1.4"],\ ["minimist", "npm:1.2.6"],\ ["prompts", "npm:2.4.2"],\ - ["semver", "npm:7.3.7"]\ + ["semver", "npm:7.3.7"],\ + ["vitest", null]\ ],\ "packagePeers": [\ "@types/jest-diff",\ "@types/jest-snapshot",\ "@types/jest",\ + "@types/vitest",\ "jest-diff",\ "jest-snapshot",\ - "jest"\ + "jest",\ + "vitest"\ ],\ "linkType": "HARD"\ }]\ @@ -5565,10 +5791,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:01a9d51f22d57b32a48466b80fd9ec3455d6f5a526a80bd51fe8eaa7bbd3f389fe1e0b22c1b463c7e24fb30d65e4e5dcf6cb0772821469c3384f7df764814f0f#npm:2.0.2", {\ - "packageLocation": "./.yarn/__virtual__/htmlnano-virtual-e628782d5e/0/cache/htmlnano-npm-2.0.2-a89803bfeb-41f9e0c0e5.zip/node_modules/htmlnano/",\ + ["virtual:ee0243765cbdf501388f259b4f1148af5bb4df5c2fa392d4cf1f1d61d3475a9c15a5729ae4be6dd2e258041e618368d112e36aa7b208b01a51861aaaf92fa944#npm:2.0.2", {\ + "packageLocation": "./.yarn/__virtual__/htmlnano-virtual-cd24a048c0/0/cache/htmlnano-npm-2.0.2-a89803bfeb-41f9e0c0e5.zip/node_modules/htmlnano/",\ "packageDependencies": [\ - ["htmlnano", "virtual:01a9d51f22d57b32a48466b80fd9ec3455d6f5a526a80bd51fe8eaa7bbd3f389fe1e0b22c1b463c7e24fb30d65e4e5dcf6cb0772821469c3384f7df764814f0f#npm:2.0.2"],\ + ["htmlnano", "virtual:ee0243765cbdf501388f259b4f1148af5bb4df5c2fa392d4cf1f1d61d3475a9c15a5729ae4be6dd2e258041e618368d112e36aa7b208b01a51861aaaf92fa944#npm:2.0.2"],\ ["@types/cssnano", null],\ ["@types/postcss", null],\ ["@types/purgecss", null],\ @@ -5782,11 +6008,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["internal-slot", [\ - ["npm:1.0.4", {\ - "packageLocation": "./.yarn/cache/internal-slot-npm-1.0.4-9183007374-8974588d06.zip/node_modules/internal-slot/",\ + ["npm:1.0.5", {\ + "packageLocation": "./.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip/node_modules/internal-slot/",\ "packageDependencies": [\ - ["internal-slot", "npm:1.0.4"],\ - ["get-intrinsic", "npm:1.2.0"],\ + ["internal-slot", "npm:1.0.5"],\ + ["get-intrinsic", "npm:1.2.1"],\ ["has", "npm:1.0.3"],\ ["side-channel", "npm:1.0.4"]\ ],\ @@ -5821,6 +6047,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["is-typed-array", "npm:1.1.10"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:3.0.2", {\ + "packageLocation": "./.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip/node_modules/is-array-buffer/",\ + "packageDependencies": [\ + ["is-array-buffer", "npm:3.0.2"],\ + ["call-bind", "npm:1.0.2"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["is-typed-array", "npm:1.1.10"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["is-arrayish", [\ @@ -5880,27 +6116,27 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["is-core-module", [\ - ["npm:2.10.0", {\ - "packageLocation": "./.yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip/node_modules/is-core-module/",\ + ["npm:2.12.1", {\ + "packageLocation": "./.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip/node_modules/is-core-module/",\ "packageDependencies": [\ - ["is-core-module", "npm:2.10.0"],\ + ["is-core-module", "npm:2.12.1"],\ ["has", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.11.0", {\ - "packageLocation": "./.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip/node_modules/is-core-module/",\ + ["npm:2.13.0", {\ + "packageLocation": "./.yarn/cache/is-core-module-npm-2.13.0-e444c50225-053ab101fb.zip/node_modules/is-core-module/",\ "packageDependencies": [\ - ["is-core-module", "npm:2.11.0"],\ + ["is-core-module", "npm:2.13.0"],\ ["has", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:2.12.1", {\ - "packageLocation": "./.yarn/cache/is-core-module-npm-2.12.1-ce74e89160-f04ea30533.zip/node_modules/is-core-module/",\ + ["npm:2.13.1", {\ + "packageLocation": "./.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-256559ee8a.zip/node_modules/is-core-module/",\ "packageDependencies": [\ - ["is-core-module", "npm:2.12.1"],\ - ["has", "npm:1.0.3"]\ + ["is-core-module", "npm:2.13.1"],\ + ["hasown", "npm:2.0.0"]\ ],\ "linkType": "HARD"\ }],\ @@ -6079,6 +6315,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["has-tostringtag", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:1.1.12", {\ + "packageLocation": "./.yarn/cache/is-typed-array-npm-1.1.12-6135c91b1a-4c89c4a3be.zip/node_modules/is-typed-array/",\ + "packageDependencies": [\ + ["is-typed-array", "npm:1.1.12"],\ + ["which-typed-array", "npm:1.1.13"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["is-weakref", [\ @@ -6091,6 +6335,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["isarray", [\ + ["npm:2.0.5", {\ + "packageLocation": "./.yarn/cache/isarray-npm-2.0.5-4ba522212d-bd5bbe4104.zip/node_modules/isarray/",\ + "packageDependencies": [\ + ["isarray", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["isbinaryfile", [\ ["npm:4.0.10", {\ "packageLocation": "./.yarn/cache/isbinaryfile-npm-4.0.10-91d1251522-a6b28db7e2.zip/node_modules/isbinaryfile/",\ @@ -6128,13 +6381,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["supports-color", "npm:7.2.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:3.0.1", {\ + "packageLocation": "./.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-fd17a1b879.zip/node_modules/istanbul-lib-report/",\ + "packageDependencies": [\ + ["istanbul-lib-report", "npm:3.0.1"],\ + ["istanbul-lib-coverage", "npm:3.2.0"],\ + ["make-dir", "npm:4.0.0"],\ + ["supports-color", "npm:7.2.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["istanbul-reports", [\ - ["npm:3.1.4", {\ - "packageLocation": "./.yarn/cache/istanbul-reports-npm-3.1.4-5faaa9636c-2132983355.zip/node_modules/istanbul-reports/",\ + ["npm:3.1.6", {\ + "packageLocation": "./.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-44c4c0582f.zip/node_modules/istanbul-reports/",\ "packageDependencies": [\ - ["istanbul-reports", "npm:3.1.4"],\ + ["istanbul-reports", "npm:3.1.6"],\ ["html-escaper", "npm:2.0.2"],\ ["istanbul-lib-report", "npm:3.0.0"]\ ],\ @@ -6153,10 +6416,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["jquery", [\ - ["npm:3.7.0", {\ - "packageLocation": "./.yarn/cache/jquery-npm-3.7.0-a02a382bf4-907785e133.zip/node_modules/jquery/",\ + ["npm:3.7.1", {\ + "packageLocation": "./.yarn/cache/jquery-npm-3.7.1-eeeac0f21e-4370b8139d.zip/node_modules/jquery/",\ "packageDependencies": [\ - ["jquery", "npm:3.7.0"]\ + ["jquery", "npm:3.7.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -6174,7 +6437,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["@types/jquery", null],\ - ["jquery", "npm:3.7.0"]\ + ["jquery", "npm:3.7.1"]\ ],\ "packagePeers": [\ "@types/jquery",\ @@ -6438,21 +6701,21 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:2.7.11", {\ - "packageLocation": "./.yarn/unplugged/lmdb-npm-2.7.11-464a53df83/node_modules/lmdb/",\ - "packageDependencies": [\ - ["lmdb", "npm:2.7.11"],\ - ["@lmdb/lmdb-darwin-arm64", "npm:2.7.11"],\ - ["@lmdb/lmdb-darwin-x64", "npm:2.7.11"],\ - ["@lmdb/lmdb-linux-arm", "npm:2.7.11"],\ - ["@lmdb/lmdb-linux-arm64", "npm:2.7.11"],\ - ["@lmdb/lmdb-linux-x64", "npm:2.7.11"],\ - ["@lmdb/lmdb-win32-x64", "npm:2.7.11"],\ - ["msgpackr", "npm:1.8.5"],\ - ["node-addon-api", "npm:4.3.0"],\ + ["npm:2.8.5", {\ + "packageLocation": "./.yarn/unplugged/lmdb-npm-2.8.5-e5fdd937dd/node_modules/lmdb/",\ + "packageDependencies": [\ + ["lmdb", "npm:2.8.5"],\ + ["@lmdb/lmdb-darwin-arm64", "npm:2.8.5"],\ + ["@lmdb/lmdb-darwin-x64", "npm:2.8.5"],\ + ["@lmdb/lmdb-linux-arm", "npm:2.8.5"],\ + ["@lmdb/lmdb-linux-arm64", "npm:2.8.5"],\ + ["@lmdb/lmdb-linux-x64", "npm:2.8.5"],\ + ["@lmdb/lmdb-win32-x64", "npm:2.8.5"],\ + ["msgpackr", "npm:1.9.9"],\ + ["node-addon-api", "npm:6.1.0"],\ ["node-gyp", "npm:9.0.0"],\ - ["node-gyp-build-optional-packages", "npm:5.0.6"],\ - ["ordered-binary", "npm:1.4.0"],\ + ["node-gyp-build-optional-packages", "npm:5.1.1"],\ + ["ordered-binary", "npm:1.4.1"],\ ["weak-lru-cache", "npm:1.2.2"]\ ],\ "linkType": "HARD"\ @@ -6520,19 +6783,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["luxon", [\ - ["npm:3.3.0", {\ - "packageLocation": "./.yarn/cache/luxon-npm-3.3.0-bdbae9bfd5-50cf17a0dc.zip/node_modules/luxon/",\ + ["npm:3.4.3", {\ + "packageLocation": "./.yarn/cache/luxon-npm-3.4.3-1b54517fa6-3eade81506.zip/node_modules/luxon/",\ "packageDependencies": [\ - ["luxon", "npm:3.3.0"]\ + ["luxon", "npm:3.4.3"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["magic-string", [\ - ["npm:0.30.0", {\ - "packageLocation": "./.yarn/cache/magic-string-npm-0.30.0-20d8e0b6e4-7bdf22e273.zip/node_modules/magic-string/",\ + ["npm:0.30.5", {\ + "packageLocation": "./.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-da10fecff0.zip/node_modules/magic-string/",\ "packageDependencies": [\ - ["magic-string", "npm:0.30.0"],\ + ["magic-string", "npm:0.30.5"],\ ["@jridgewell/sourcemap-codec", "npm:1.4.15"]\ ],\ "linkType": "HARD"\ @@ -6546,6 +6809,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["semver", "npm:6.3.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.0.0", {\ + "packageLocation": "./.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-bf0731a2dd.zip/node_modules/make-dir/",\ + "packageDependencies": [\ + ["make-dir", "npm:4.0.0"],\ + ["semver", "npm:7.5.3"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["make-fetch-happen", [\ @@ -6774,10 +7045,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.8.5", {\ - "packageLocation": "./.yarn/cache/msgpackr-npm-1.8.5-ae4e94d720-baa6d94fb6.zip/node_modules/msgpackr/",\ + ["npm:1.9.9", {\ + "packageLocation": "./.yarn/cache/msgpackr-npm-1.9.9-75b366d55f-b63182d99f.zip/node_modules/msgpackr/",\ "packageDependencies": [\ - ["msgpackr", "npm:1.8.5"],\ + ["msgpackr", "npm:1.9.9"],\ ["msgpackr-extract", "npm:3.0.2"]\ ],\ "linkType": "HARD"\ @@ -6825,37 +7096,37 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["naive-ui", [\ - ["npm:2.34.4", {\ - "packageLocation": "./.yarn/cache/naive-ui-npm-2.34.4-00b9952d24-0e91d9208e.zip/node_modules/naive-ui/",\ + ["npm:2.35.0", {\ + "packageLocation": "./.yarn/cache/naive-ui-npm-2.35.0-2bb3f5a46d-53239b8cbe.zip/node_modules/naive-ui/",\ "packageDependencies": [\ - ["naive-ui", "npm:2.34.4"]\ + ["naive-ui", "npm:2.35.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.34.4", {\ - "packageLocation": "./.yarn/__virtual__/naive-ui-virtual-81189c7143/0/cache/naive-ui-npm-2.34.4-00b9952d24-0e91d9208e.zip/node_modules/naive-ui/",\ - "packageDependencies": [\ - ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.34.4"],\ - ["@css-render/plugin-bem", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10"],\ - ["@css-render/vue3-ssr", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10"],\ - ["@types/katex", "npm:0.14.0"],\ - ["@types/lodash", "npm:4.14.182"],\ - ["@types/lodash-es", "npm:4.17.6"],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.35.0", {\ + "packageLocation": "./.yarn/__virtual__/naive-ui-virtual-d5901c8fe9/0/cache/naive-ui-npm-2.35.0-2bb3f5a46d-53239b8cbe.zip/node_modules/naive-ui/",\ + "packageDependencies": [\ + ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.35.0"],\ + ["@css-render/plugin-bem", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12"],\ + ["@css-render/vue3-ssr", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.15.12"],\ + ["@types/katex", "npm:0.16.5"],\ + ["@types/lodash", "npm:4.14.200"],\ + ["@types/lodash-es", "npm:4.17.10"],\ ["@types/vue", null],\ - ["async-validator", "npm:4.1.1"],\ - ["css-render", "npm:0.15.10"],\ - ["date-fns", "npm:2.28.0"],\ - ["date-fns-tz", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:1.3.3"],\ + ["async-validator", "npm:4.2.5"],\ + ["css-render", "npm:0.15.12"],\ + ["date-fns", "npm:2.30.0"],\ + ["date-fns-tz", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:2.0.0"],\ ["evtd", "npm:0.2.4"],\ - ["highlight.js", "npm:11.5.1"],\ + ["highlight.js", "npm:11.9.0"],\ ["lodash", "npm:4.17.21"],\ ["lodash-es", "npm:4.17.21"],\ ["seemly", "npm:0.3.6"],\ ["treemate", "npm:0.3.11"],\ - ["vdirs", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.1.8"],\ - ["vooks", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.2.12"],\ - ["vue", "npm:3.3.4"],\ - ["vueuc", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.4.51"]\ + ["vdirs", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.1.8"],\ + ["vooks", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.2.12"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ + ["vueuc", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.4.51"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -6865,13 +7136,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["nanoid", [\ - ["npm:3.3.3", {\ - "packageLocation": "./.yarn/cache/nanoid-npm-3.3.3-25d865be84-ada019402a.zip/node_modules/nanoid/",\ - "packageDependencies": [\ - ["nanoid", "npm:3.3.3"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:3.3.6", {\ "packageLocation": "./.yarn/cache/nanoid-npm-3.3.6-e6d6ae7e71-7d0eda6570.zip/node_modules/nanoid/",\ "packageDependencies": [\ @@ -6914,6 +7178,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["node-gyp", "npm:9.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:6.1.0", {\ + "packageLocation": "./.yarn/unplugged/node-addon-api-npm-6.1.0-634c545b39/node_modules/node-addon-api/",\ + "packageDependencies": [\ + ["node-addon-api", "npm:6.1.0"],\ + ["node-gyp", "npm:9.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["node-gyp", [\ @@ -6959,17 +7231,18 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:5.0.6", {\ - "packageLocation": "./.yarn/cache/node-gyp-build-optional-packages-npm-5.0.6-e687ca7fe8-080656ae27.zip/node_modules/node-gyp-build-optional-packages/",\ + ["npm:5.0.7", {\ + "packageLocation": "./.yarn/cache/node-gyp-build-optional-packages-npm-5.0.7-40f21a5d68-bcb4537af1.zip/node_modules/node-gyp-build-optional-packages/",\ "packageDependencies": [\ - ["node-gyp-build-optional-packages", "npm:5.0.6"]\ + ["node-gyp-build-optional-packages", "npm:5.0.7"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:5.0.7", {\ - "packageLocation": "./.yarn/cache/node-gyp-build-optional-packages-npm-5.0.7-40f21a5d68-bcb4537af1.zip/node_modules/node-gyp-build-optional-packages/",\ + ["npm:5.1.1", {\ + "packageLocation": "./.yarn/cache/node-gyp-build-optional-packages-npm-5.1.1-ff11e179dd-f3cb197862.zip/node_modules/node-gyp-build-optional-packages/",\ "packageDependencies": [\ - ["node-gyp-build-optional-packages", "npm:5.0.7"]\ + ["node-gyp-build-optional-packages", "npm:5.1.1"],\ + ["detect-libc", "npm:2.0.2"]\ ],\ "linkType": "HARD"\ }]\ @@ -7051,10 +7324,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.12.3", {\ - "packageLocation": "./.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip/node_modules/object-inspect/",\ + ["npm:1.13.1", {\ + "packageLocation": "./.yarn/cache/object-inspect-npm-1.13.1-fd038a2f0a-7d9fa9221d.zip/node_modules/object-inspect/",\ "packageDependencies": [\ - ["object-inspect", "npm:1.12.3"]\ + ["object-inspect", "npm:1.13.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -7081,14 +7354,39 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["object.fromentries", [\ + ["npm:2.0.7", {\ + "packageLocation": "./.yarn/cache/object.fromentries-npm-2.0.7-2e38392540-7341ce246e.zip/node_modules/object.fromentries/",\ + "packageDependencies": [\ + ["object.fromentries", "npm:2.0.7"],\ + ["call-bind", "npm:1.0.2"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["object.groupby", [\ + ["npm:1.0.1", {\ + "packageLocation": "./.yarn/cache/object.groupby-npm-1.0.1-fc268391fe-d7959d6eaa.zip/node_modules/object.groupby/",\ + "packageDependencies": [\ + ["object.groupby", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.2"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"],\ + ["get-intrinsic", "npm:1.2.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["object.values", [\ - ["npm:1.1.6", {\ - "packageLocation": "./.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip/node_modules/object.values/",\ + ["npm:1.1.7", {\ + "packageLocation": "./.yarn/cache/object.values-npm-1.1.7-deae619f88-f3e4ae4f21.zip/node_modules/object.values/",\ "packageDependencies": [\ - ["object.values", "npm:1.1.6"],\ + ["object.values", "npm:1.1.7"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"]\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"]\ ],\ "linkType": "HARD"\ }]\ @@ -7114,16 +7412,16 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["optionator", [\ - ["npm:0.9.1", {\ - "packageLocation": "./.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip/node_modules/optionator/",\ + ["npm:0.9.3", {\ + "packageLocation": "./.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-0928199944.zip/node_modules/optionator/",\ "packageDependencies": [\ - ["optionator", "npm:0.9.1"],\ + ["optionator", "npm:0.9.3"],\ + ["@aashutoshrathi/word-wrap", "npm:1.2.6"],\ ["deep-is", "npm:0.1.4"],\ ["fast-levenshtein", "npm:2.0.6"],\ ["levn", "npm:0.4.1"],\ ["prelude-ls", "npm:1.2.1"],\ - ["type-check", "npm:0.4.0"],\ - ["word-wrap", "npm:1.2.3"]\ + ["type-check", "npm:0.4.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -7136,10 +7434,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.4.0", {\ - "packageLocation": "./.yarn/cache/ordered-binary-npm-1.4.0-1319bac199-951fecb400.zip/node_modules/ordered-binary/",\ + ["npm:1.4.1", {\ + "packageLocation": "./.yarn/cache/ordered-binary-npm-1.4.1-9ad6b7c6b5-274940b4ef.zip/node_modules/ordered-binary/",\ "packageDependencies": [\ - ["ordered-binary", "npm:1.4.0"]\ + ["ordered-binary", "npm:1.4.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -7175,28 +7473,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["parcel", [\ - ["npm:2.9.2", {\ - "packageLocation": "./.yarn/cache/parcel-npm-2.9.2-a28e47b190-bd16d67104.zip/node_modules/parcel/",\ + ["npm:2.10.0", {\ + "packageLocation": "./.yarn/cache/parcel-npm-2.10.0-8e794fc289-fe25ddcf2d.zip/node_modules/parcel/",\ "packageDependencies": [\ - ["parcel", "npm:2.9.2"]\ + ["parcel", "npm:2.10.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.9.2", {\ - "packageLocation": "./.yarn/__virtual__/parcel-virtual-c28611412c/0/cache/parcel-npm-2.9.2-a28e47b190-bd16d67104.zip/node_modules/parcel/",\ - "packageDependencies": [\ - ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.9.2"],\ - ["@parcel/config-default", "virtual:c28611412c955a1fda20639657c96ff2be961c906ace258361995235bacf8e4a907ad524e4fb9fb5a0aaae51e5563719e1d95f46bcfadadbe883a4a6942a7afb#npm:2.9.2"],\ - ["@parcel/core", "npm:2.9.2"],\ - ["@parcel/diagnostic", "npm:2.9.2"],\ - ["@parcel/events", "npm:2.9.2"],\ - ["@parcel/fs", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/logger", "npm:2.9.2"],\ - ["@parcel/package-manager", "virtual:43efe8c40140be76b32499653f543b18393eb1de2ef0e88117e3f2cada1597e4a2a0c0d655c705adbf72ebea2ed1fa9151fd162dc048cb763ed04af898c30a12#npm:2.9.2"],\ - ["@parcel/reporter-cli", "npm:2.9.2"],\ - ["@parcel/reporter-dev-server", "npm:2.9.2"],\ - ["@parcel/reporter-tracer", "npm:2.9.2"],\ - ["@parcel/utils", "npm:2.9.2"],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.10.0", {\ + "packageLocation": "./.yarn/__virtual__/parcel-virtual-71592776e8/0/cache/parcel-npm-2.10.0-8e794fc289-fe25ddcf2d.zip/node_modules/parcel/",\ + "packageDependencies": [\ + ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.10.0"],\ + ["@parcel/config-default", "virtual:71592776e81a3a98123fea990d2adcb9a2eb4cc84ca35ac4be3a6f331fe8d1f764a124c4f9a2dad3afd35076e01667fb0ef9ccd5629fbe405b31f0d1b14a14fd#npm:2.10.0"],\ + ["@parcel/core", "npm:2.10.0"],\ + ["@parcel/diagnostic", "npm:2.10.0"],\ + ["@parcel/events", "npm:2.10.0"],\ + ["@parcel/fs", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/logger", "npm:2.10.0"],\ + ["@parcel/package-manager", "virtual:59eaeeba7a5d21408bb7b40531b36a88648baa29ed841afea77b484ce4124f400b3aed2f6c7b6598bebbcce34fe625391a4c262c0e17b5a4f9e1ebbf693fa69b#npm:2.10.0"],\ + ["@parcel/reporter-cli", "npm:2.10.0"],\ + ["@parcel/reporter-dev-server", "npm:2.10.0"],\ + ["@parcel/reporter-tracer", "npm:2.10.0"],\ + ["@parcel/utils", "npm:2.10.0"],\ ["@types/parcel__core", null],\ ["chalk", "npm:4.1.2"],\ ["commander", "npm:7.2.0"],\ @@ -7306,25 +7604,25 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["pinia", [\ - ["npm:2.1.4", {\ - "packageLocation": "./.yarn/cache/pinia-npm-2.1.4-8c3fdb8813-5285b1415e.zip/node_modules/pinia/",\ + ["npm:2.1.7", {\ + "packageLocation": "./.yarn/cache/pinia-npm-2.1.7-195409c154-1b7882aab2.zip/node_modules/pinia/",\ "packageDependencies": [\ - ["pinia", "npm:2.1.4"]\ + ["pinia", "npm:2.1.7"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.4", {\ - "packageLocation": "./.yarn/__virtual__/pinia-virtual-bb260f937b/0/cache/pinia-npm-2.1.4-8c3fdb8813-5285b1415e.zip/node_modules/pinia/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.7", {\ + "packageLocation": "./.yarn/__virtual__/pinia-virtual-cf6f7439ee/0/cache/pinia-npm-2.1.7-195409c154-1b7882aab2.zip/node_modules/pinia/",\ "packageDependencies": [\ - ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.4"],\ + ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.7"],\ ["@types/typescript", null],\ ["@types/vue", null],\ ["@types/vue__composition-api", null],\ ["@vue/composition-api", null],\ ["@vue/devtools-api", "npm:6.5.0"],\ ["typescript", null],\ - ["vue", "npm:3.3.4"],\ - ["vue-demi", "virtual:bb260f937b7a21d0bf1a237b49b5f5bb70768133cd2135f9b6e87b722c443cbd2bff06d78c2b68972426bd729bb048f00831bc4a0d6a7b18a7319117ceec672d#npm:0.14.5"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ + ["vue-demi", "virtual:cf6f7439ee76dfd2e7f8f2565ae847d76901434fc49c65702190cdf3d1c61e61c701a5c45b514c4bdeacb8f4bcac9c8a98bd4db3d0bc8e403d9e8db2cf14372a#npm:0.14.5"]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -7353,8 +7651,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/vue", null],\ ["@types/vue__composition-api", null],\ ["@vue/composition-api", null],\ - ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.4"],\ - ["vue", "npm:3.3.4"],\ + ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.7"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ ["vue-demi", "virtual:f56fcf19bbebc2ada1b28955da8cc216b1e9a569a1a7337d2d1926c1ebd1bc7a5bd91aedae1d05c15c8562f33caf7c59bd3020a667340f6bdc6a7b13fc2ba847#npm:0.12.5"]\ ],\ "packagePeers": [\ @@ -7369,20 +7667,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["postcss", [\ - ["npm:8.4.12", {\ - "packageLocation": "./.yarn/cache/postcss-npm-8.4.12-e941d78a98-248e3d0f9b.zip/node_modules/postcss/",\ + ["npm:8.4.27", {\ + "packageLocation": "./.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip/node_modules/postcss/",\ "packageDependencies": [\ - ["postcss", "npm:8.4.12"],\ - ["nanoid", "npm:3.3.3"],\ + ["postcss", "npm:8.4.27"],\ + ["nanoid", "npm:3.3.6"],\ ["picocolors", "npm:1.0.0"],\ ["source-map-js", "npm:1.0.2"]\ ],\ "linkType": "HARD"\ }],\ - ["npm:8.4.23", {\ - "packageLocation": "./.yarn/cache/postcss-npm-8.4.23-d4a02a832d-8bb9d1b2ea.zip/node_modules/postcss/",\ + ["npm:8.4.31", {\ + "packageLocation": "./.yarn/cache/postcss-npm-8.4.31-385051a82b-1d8611341b.zip/node_modules/postcss/",\ "packageDependencies": [\ - ["postcss", "npm:8.4.23"],\ + ["postcss", "npm:8.4.31"],\ ["nanoid", "npm:3.3.6"],\ ["picocolors", "npm:1.0.0"],\ ["source-map-js", "npm:1.0.2"]\ @@ -7391,10 +7689,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["postcss-selector-parser", [\ - ["npm:6.0.10", {\ - "packageLocation": "./.yarn/cache/postcss-selector-parser-npm-6.0.10-a4d7aaa270-46afaa60e3.zip/node_modules/postcss-selector-parser/",\ + ["npm:6.0.13", {\ + "packageLocation": "./.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip/node_modules/postcss-selector-parser/",\ "packageDependencies": [\ - ["postcss-selector-parser", "npm:6.0.10"],\ + ["postcss-selector-parser", "npm:6.0.13"],\ ["cssesc", "npm:3.0.0"],\ ["util-deprecate", "npm:1.0.2"]\ ],\ @@ -7737,16 +8035,23 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["regenerator-runtime", "npm:0.13.9"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:0.14.0", {\ + "packageLocation": "./.yarn/cache/regenerator-runtime-npm-0.14.0-e060897cf7-1c977ad82a.zip/node_modules/regenerator-runtime/",\ + "packageDependencies": [\ + ["regenerator-runtime", "npm:0.14.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["regexp.prototype.flags", [\ - ["npm:1.4.3", {\ - "packageLocation": "./.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip/node_modules/regexp.prototype.flags/",\ + ["npm:1.5.1", {\ + "packageLocation": "./.yarn/cache/regexp.prototype.flags-npm-1.5.1-b8faeee306-869edff002.zip/node_modules/regexp.prototype.flags/",\ "packageDependencies": [\ - ["regexp.prototype.flags", "npm:1.4.3"],\ + ["regexp.prototype.flags", "npm:1.5.1"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["functions-have-names", "npm:1.2.3"]\ + ["define-properties", "npm:1.2.0"],\ + ["set-function-name", "npm:2.0.1"]\ ],\ "linkType": "HARD"\ }]\ @@ -7789,21 +8094,21 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b", {\ - "packageLocation": "./.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip/node_modules/resolve/",\ + ["patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b", {\ + "packageLocation": "./.yarn/cache/resolve-patch-8df1eb26d0-ad59734723.zip/node_modules/resolve/",\ "packageDependencies": [\ - ["resolve", "patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b"],\ - ["is-core-module", "npm:2.10.0"],\ + ["resolve", "patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b"],\ + ["is-core-module", "npm:2.12.1"],\ ["path-parse", "npm:1.0.7"],\ ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ }],\ - ["patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b", {\ - "packageLocation": "./.yarn/cache/resolve-patch-8df1eb26d0-ad59734723.zip/node_modules/resolve/",\ + ["patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b", {\ + "packageLocation": "./.yarn/cache/resolve-patch-f6b5304cab-5479b7d431.zip/node_modules/resolve/",\ "packageDependencies": [\ - ["resolve", "patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=07638b"],\ - ["is-core-module", "npm:2.12.1"],\ + ["resolve", "patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b"],\ + ["is-core-module", "npm:2.13.0"],\ ["path-parse", "npm:1.0.7"],\ ["supports-preserve-symlinks-flag", "npm:1.0.0"]\ ],\ @@ -7819,6 +8124,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["resolve-pkg-maps", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip/node_modules/resolve-pkg-maps/",\ + "packageDependencies": [\ + ["resolve-pkg-maps", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["retry", [\ ["npm:0.12.0", {\ "packageLocation": "./.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip/node_modules/retry/",\ @@ -7857,10 +8171,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["rollup", [\ - ["npm:3.21.6", {\ - "packageLocation": "./.yarn/cache/rollup-npm-3.21.6-ae95b73a21-bb6786ee0d.zip/node_modules/rollup/",\ + ["npm:3.28.0", {\ + "packageLocation": "./.yarn/cache/rollup-npm-3.28.0-4ab1b4022e-6ded4a0d3c.zip/node_modules/rollup/",\ "packageDependencies": [\ - ["rollup", "npm:3.21.6"],\ + ["rollup", "npm:3.28.0"],\ ["fsevents", "patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7"]\ ],\ "linkType": "HARD"\ @@ -7871,69 +8185,69 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./",\ "packageDependencies": [\ ["root-workspace-0b6124", "workspace:."],\ - ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/core", "npm:6.1.8"],\ - ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.8"],\ - ["@parcel/optimizer-data-url", "npm:2.9.2"],\ - ["@parcel/transformer-inline-string", "npm:2.9.2"],\ - ["@parcel/transformer-sass", "npm:2.9.2"],\ + ["@fullcalendar/bootstrap5", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/core", "npm:6.1.9"],\ + ["@fullcalendar/daygrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/icalendar", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/interaction", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/list", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/luxon3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/timegrid", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@fullcalendar/vue3", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.9"],\ + ["@parcel/optimizer-data-url", "npm:2.10.0"],\ + ["@parcel/transformer-inline-string", "npm:2.10.0"],\ + ["@parcel/transformer-sass", "npm:2.10.0"],\ ["@popperjs/core", "npm:2.11.8"],\ - ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.2"],\ + ["@rollup/pluginutils", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.0.5"],\ ["@twuni/emojify", "npm:1.0.2"],\ - ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.3"],\ - ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.0"],\ - ["bootstrap-icons", "npm:1.10.5"],\ - ["browser-fs-access", "npm:0.34.1"],\ + ["@vitejs/plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.4.0"],\ + ["bootstrap", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:5.3.2"],\ + ["bootstrap-icons", "npm:1.11.1"],\ + ["browser-fs-access", "npm:0.35.0"],\ ["browserlist", "npm:1.0.1"],\ - ["c8", "npm:8.0.0"],\ - ["caniuse-lite", "npm:1.0.30001495"],\ + ["c8", "npm:8.0.1"],\ + ["caniuse-lite", "npm:1.0.30001538"],\ ["d3", "npm:7.8.5"],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-config-standard", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:17.1.0"],\ - ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.13.3"],\ - ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.27.5"],\ - ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.0.1"],\ + ["eslint-plugin-cypress", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.15.1"],\ + ["eslint-plugin-import", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.29.0"],\ + ["eslint-plugin-n", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:16.2.0"],\ ["eslint-plugin-node", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:11.1.0"],\ ["eslint-plugin-promise", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:6.1.1"],\ - ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.15.1"],\ + ["eslint-plugin-vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:9.18.1"],\ ["file-saver", "npm:2.0.5"],\ ["highcharts", "npm:11.1.0"],\ - ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.0.5"],\ + ["html-validate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:8.7.0"],\ ["ical.js", "npm:1.5.0"],\ - ["jquery", "npm:3.7.0"],\ + ["jquery", "npm:3.7.1"],\ ["jquery-migrate", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.4.1"],\ ["js-cookie", "npm:3.0.5"],\ ["list.js", "npm:2.3.1"],\ ["lodash", "npm:4.17.21"],\ ["lodash-es", "npm:4.17.21"],\ - ["luxon", "npm:3.3.0"],\ + ["luxon", "npm:3.4.3"],\ ["moment", "npm:2.29.4"],\ ["moment-timezone", "npm:0.5.43"],\ ["ms", "npm:2.1.3"],\ ["murmurhash-js", "npm:1.0.0"],\ - ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.34.4"],\ - ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.9.2"],\ - ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.4"],\ + ["naive-ui", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.35.0"],\ + ["parcel", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.10.0"],\ + ["pinia", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:2.1.7"],\ ["pinia-plugin-persist", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:1.0.0"],\ ["pug", "npm:3.0.2"],\ - ["sass", "npm:1.63.4"],\ + ["sass", "npm:1.69.4"],\ ["seedrandom", "npm:3.0.5"],\ ["select2", "npm:4.1.0-rc.0"],\ ["select2-bootstrap-5-theme", "npm:1.3.0"],\ ["send", "npm:0.18.0"],\ - ["shepherd.js", "npm:11.1.1"],\ + ["shepherd.js", "npm:11.2.0"],\ ["slugify", "npm:1.6.6"],\ ["sortablejs", "npm:1.15.0"],\ - ["vanillajs-datepicker", "npm:1.3.3"],\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.9"],\ - ["vue", "npm:3.3.4"],\ - ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.2"],\ + ["vanillajs-datepicker", "npm:1.3.4"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.0"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ + ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.5"],\ ["zxcvbn", "npm:4.4.2"]\ ],\ "linkType": "SOFT"\ @@ -7958,6 +8272,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["safe-array-concat", [\ + ["npm:1.0.1", {\ + "packageLocation": "./.yarn/cache/safe-array-concat-npm-1.0.1-8a42907bbf-001ecf1d8a.zip/node_modules/safe-array-concat/",\ + "packageDependencies": [\ + ["safe-array-concat", "npm:1.0.1"],\ + ["call-bind", "npm:1.0.2"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["has-symbols", "npm:1.0.3"],\ + ["isarray", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["safe-buffer", [\ ["npm:5.1.2", {\ "packageLocation": "./.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip/node_modules/safe-buffer/",\ @@ -8006,10 +8333,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ - ["npm:1.63.4", {\ - "packageLocation": "./.yarn/cache/sass-npm-1.63.4-bf5f3496c2-12bde5beff.zip/node_modules/sass/",\ + ["npm:1.69.4", {\ + "packageLocation": "./.yarn/cache/sass-npm-1.69.4-bea57e4b30-ed5558445b.zip/node_modules/sass/",\ "packageDependencies": [\ - ["sass", "npm:1.63.4"],\ + ["sass", "npm:1.69.4"],\ ["chokidar", "npm:3.5.3"],\ ["immutable", "npm:4.0.0"],\ ["source-map-js", "npm:1.0.2"]\ @@ -8070,6 +8397,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "HARD"\ }],\ + ["npm:6.3.1", {\ + "packageLocation": "./.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:6.3.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:7.3.7", {\ "packageLocation": "./.yarn/cache/semver-npm-7.3.7-3bfe704194-2fa3e87756.zip/node_modules/semver/",\ "packageDependencies": [\ @@ -8085,6 +8419,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["lru-cache", "npm:6.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.5.4", {\ + "packageLocation": "./.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:7.5.4"],\ + ["lru-cache", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["send", [\ @@ -8118,6 +8460,31 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["set-function-length", [\ + ["npm:1.1.1", {\ + "packageLocation": "./.yarn/cache/set-function-length-npm-1.1.1-d362bf8221-c131d7569c.zip/node_modules/set-function-length/",\ + "packageDependencies": [\ + ["set-function-length", "npm:1.1.1"],\ + ["define-data-property", "npm:1.1.1"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["gopd", "npm:1.0.1"],\ + ["has-property-descriptors", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["set-function-name", [\ + ["npm:2.0.1", {\ + "packageLocation": "./.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip/node_modules/set-function-name/",\ + "packageDependencies": [\ + ["set-function-name", "npm:2.0.1"],\ + ["define-data-property", "npm:1.1.1"],\ + ["functions-have-names", "npm:1.2.3"],\ + ["has-property-descriptors", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["setprototypeof", [\ ["npm:1.2.0", {\ "packageLocation": "./.yarn/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip/node_modules/setprototypeof/",\ @@ -8147,11 +8514,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["shepherd.js", [\ - ["npm:11.1.1", {\ - "packageLocation": "./.yarn/cache/shepherd.js-npm-11.1.1-c87ab2ed73-1d2a0563b6.zip/node_modules/shepherd.js/",\ + ["npm:11.2.0", {\ + "packageLocation": "./.yarn/cache/shepherd.js-npm-11.2.0-94b9af1487-0e71e63e51.zip/node_modules/shepherd.js/",\ "packageDependencies": [\ - ["shepherd.js", "npm:11.1.1"],\ - ["@floating-ui/dom", "npm:1.2.6"],\ + ["shepherd.js", "npm:11.2.0"],\ + ["@floating-ui/dom", "npm:1.5.2"],\ ["deepmerge", "npm:4.3.1"]\ ],\ "linkType": "HARD"\ @@ -8330,26 +8697,38 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["string.prototype.trim", [\ + ["npm:1.2.8", {\ + "packageLocation": "./.yarn/cache/string.prototype.trim-npm-1.2.8-7ed4517ce8-49eb1a862a.zip/node_modules/string.prototype.trim/",\ + "packageDependencies": [\ + ["string.prototype.trim", "npm:1.2.8"],\ + ["call-bind", "npm:1.0.2"],\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["string.prototype.trimend", [\ - ["npm:1.0.6", {\ - "packageLocation": "./.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip/node_modules/string.prototype.trimend/",\ + ["npm:1.0.7", {\ + "packageLocation": "./.yarn/cache/string.prototype.trimend-npm-1.0.7-159b9dcfbc-2375516272.zip/node_modules/string.prototype.trimend/",\ "packageDependencies": [\ - ["string.prototype.trimend", "npm:1.0.6"],\ + ["string.prototype.trimend", "npm:1.0.7"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"]\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["string.prototype.trimstart", [\ - ["npm:1.0.6", {\ - "packageLocation": "./.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip/node_modules/string.prototype.trimstart/",\ + ["npm:1.0.7", {\ + "packageLocation": "./.yarn/cache/string.prototype.trimstart-npm-1.0.7-ae2f803b78-13d0c2cb0d.zip/node_modules/string.prototype.trimstart/",\ "packageDependencies": [\ - ["string.prototype.trimstart", "npm:1.0.6"],\ + ["string.prototype.trimstart", "npm:1.0.7"],\ ["call-bind", "npm:1.0.2"],\ - ["define-properties", "npm:1.1.4"],\ - ["es-abstract", "npm:1.21.1"]\ + ["define-properties", "npm:1.2.0"],\ + ["es-abstract", "npm:1.22.3"]\ ],\ "linkType": "HARD"\ }]\ @@ -8544,10 +8923,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["tsconfig-paths", [\ - ["npm:3.14.1", {\ - "packageLocation": "./.yarn/cache/tsconfig-paths-npm-3.14.1-17a815b5c5-8afa01c673.zip/node_modules/tsconfig-paths/",\ + ["npm:3.14.2", {\ + "packageLocation": "./.yarn/cache/tsconfig-paths-npm-3.14.2-90ce75420d-a6162eaa1a.zip/node_modules/tsconfig-paths/",\ "packageDependencies": [\ - ["tsconfig-paths", "npm:3.14.1"],\ + ["tsconfig-paths", "npm:3.14.2"],\ ["@types/json5", "npm:0.0.29"],\ ["json5", "npm:1.0.2"],\ ["minimist", "npm:1.2.6"],\ @@ -8584,6 +8963,45 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["typed-array-buffer", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/typed-array-buffer-npm-1.0.0-95cb610310-3e0281c79b.zip/node_modules/typed-array-buffer/",\ + "packageDependencies": [\ + ["typed-array-buffer", "npm:1.0.0"],\ + ["call-bind", "npm:1.0.2"],\ + ["get-intrinsic", "npm:1.2.1"],\ + ["is-typed-array", "npm:1.1.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-length", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-b03db16458.zip/node_modules/typed-array-byte-length/",\ + "packageDependencies": [\ + ["typed-array-byte-length", "npm:1.0.0"],\ + ["call-bind", "npm:1.0.2"],\ + ["for-each", "npm:0.3.3"],\ + ["has-proto", "npm:1.0.1"],\ + ["is-typed-array", "npm:1.1.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["typed-array-byte-offset", [\ + ["npm:1.0.0", {\ + "packageLocation": "./.yarn/cache/typed-array-byte-offset-npm-1.0.0-8cbb911cf5-04f6f02d0e.zip/node_modules/typed-array-byte-offset/",\ + "packageDependencies": [\ + ["typed-array-byte-offset", "npm:1.0.0"],\ + ["available-typed-arrays", "npm:1.0.5"],\ + ["call-bind", "npm:1.0.2"],\ + ["for-each", "npm:0.3.3"],\ + ["has-proto", "npm:1.0.1"],\ + ["is-typed-array", "npm:1.1.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["typed-array-length", [\ ["npm:1.0.4", {\ "packageLocation": "./.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip/node_modules/typed-array-length/",\ @@ -8670,10 +9088,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vanillajs-datepicker", [\ - ["npm:1.3.3", {\ - "packageLocation": "./.yarn/cache/vanillajs-datepicker-npm-1.3.3-c1fde0e681-be830750a5.zip/node_modules/vanillajs-datepicker/",\ + ["npm:1.3.4", {\ + "packageLocation": "./.yarn/cache/vanillajs-datepicker-npm-1.3.4-bc86e15a9c-830958f8af.zip/node_modules/vanillajs-datepicker/",\ "packageDependencies": [\ - ["vanillajs-datepicker", "npm:1.3.3"]\ + ["vanillajs-datepicker", "npm:1.3.4"]\ ],\ "linkType": "HARD"\ }]\ @@ -8686,13 +9104,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.1.8", {\ - "packageLocation": "./.yarn/__virtual__/vdirs-virtual-f8bc1954b7/0/cache/vdirs-npm-0.1.8-59a32a98d6-a7be8ccad3.zip/node_modules/vdirs/",\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.1.8", {\ + "packageLocation": "./.yarn/__virtual__/vdirs-virtual-35aac8a6c6/0/cache/vdirs-npm-0.1.8-59a32a98d6-a7be8ccad3.zip/node_modules/vdirs/",\ "packageDependencies": [\ - ["vdirs", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.1.8"],\ + ["vdirs", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.1.8"],\ ["@types/vue", null],\ ["evtd", "npm:0.2.3"],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8702,41 +9120,45 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vite", [\ - ["npm:4.3.9", {\ - "packageLocation": "./.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip/node_modules/vite/",\ + ["npm:4.5.0", {\ + "packageLocation": "./.yarn/cache/vite-npm-4.5.0-6fb40946d7-06f1a4c858.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "npm:4.3.9"]\ + ["vite", "npm:4.5.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.9", {\ - "packageLocation": "./.yarn/__virtual__/vite-virtual-cc49cbe155/0/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip/node_modules/vite/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.0", {\ + "packageLocation": "./.yarn/__virtual__/vite-virtual-48c4f851a8/0/cache/vite-npm-4.5.0-6fb40946d7-06f1a4c858.zip/node_modules/vite/",\ "packageDependencies": [\ - ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.3.9"],\ + ["vite", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.5.0"],\ ["@types/less", null],\ + ["@types/lightningcss", null],\ ["@types/node", null],\ ["@types/sass", null],\ ["@types/stylus", null],\ ["@types/sugarss", null],\ ["@types/terser", null],\ - ["esbuild", "npm:0.17.13"],\ + ["esbuild", "npm:0.18.20"],\ ["fsevents", "patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7"],\ ["less", null],\ - ["postcss", "npm:8.4.23"],\ - ["rollup", "npm:3.21.6"],\ - ["sass", "npm:1.63.4"],\ + ["lightningcss", null],\ + ["postcss", "npm:8.4.27"],\ + ["rollup", "npm:3.28.0"],\ + ["sass", "npm:1.69.4"],\ ["stylus", null],\ ["sugarss", null],\ ["terser", null]\ ],\ "packagePeers": [\ "@types/less",\ + "@types/lightningcss",\ "@types/node",\ "@types/sass",\ "@types/stylus",\ "@types/sugarss",\ "@types/terser",\ "less",\ + "lightningcss",\ "sass",\ "stylus",\ "sugarss",\ @@ -8762,13 +9184,13 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.2.12", {\ - "packageLocation": "./.yarn/__virtual__/vooks-virtual-6071501f22/0/cache/vooks-npm-0.2.12-0d1a2d856b-e6841ec5b6.zip/node_modules/vooks/",\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.2.12", {\ + "packageLocation": "./.yarn/__virtual__/vooks-virtual-f099143e8a/0/cache/vooks-npm-0.2.12-0d1a2d856b-e6841ec5b6.zip/node_modules/vooks/",\ "packageDependencies": [\ - ["vooks", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.2.12"],\ + ["vooks", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.2.12"],\ ["@types/vue", null],\ ["evtd", "npm:0.2.3"],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8778,15 +9200,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vue", [\ - ["npm:3.3.4", {\ - "packageLocation": "./.yarn/cache/vue-npm-3.3.4-174fadbea4-58b6c62a66.zip/node_modules/vue/",\ + ["npm:3.3.7", {\ + "packageLocation": "./.yarn/cache/vue-npm-3.3.7-6f764474d4-463599d2a5.zip/node_modules/vue/",\ + "packageDependencies": [\ + ["vue", "npm:3.3.7"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7", {\ + "packageLocation": "./.yarn/__virtual__/vue-virtual-3abdc07485/0/cache/vue-npm-3.3.7-6f764474d4-463599d2a5.zip/node_modules/vue/",\ "packageDependencies": [\ - ["vue", "npm:3.3.4"],\ - ["@vue/compiler-dom", "npm:3.3.4"],\ - ["@vue/compiler-sfc", "npm:3.3.4"],\ - ["@vue/runtime-dom", "npm:3.3.4"],\ - ["@vue/server-renderer", "virtual:174fadbea44493263729fa2b6f65daab4b25e9b0a7a008d5887cf4635c65a7954c0e996fdf3e5d8529a9ab481440768b691dd3c59aca8db6f1f12ce74ed59685#npm:3.3.4"],\ - ["@vue/shared", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"],\ + ["@types/typescript", null],\ + ["@vue/compiler-dom", "npm:3.3.7"],\ + ["@vue/compiler-sfc", "npm:3.3.7"],\ + ["@vue/runtime-dom", "npm:3.3.7"],\ + ["@vue/server-renderer", "virtual:3abdc07485f088dc7c94fb6016205a603cbf92506f0de3d8b0b3c64fb975ecc9ffddafd33901d1bbe205fa301d19a0b5580e4aae44cfc80bff10566fc4d7e20b#npm:3.3.7"],\ + ["@vue/shared", "npm:3.3.7"],\ + ["typescript", null]\ + ],\ + "packagePeers": [\ + "@types/typescript",\ + "typescript"\ ],\ "linkType": "HARD"\ }]\ @@ -8800,20 +9235,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "SOFT"\ }],\ ["npm:0.14.5", {\ - "packageLocation": "./.yarn/unplugged/vue-demi-virtual-f86975c946/node_modules/vue-demi/",\ + "packageLocation": "./.yarn/unplugged/vue-demi-virtual-b0e571907e/node_modules/vue-demi/",\ "packageDependencies": [\ ["vue-demi", "npm:0.14.5"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:bb260f937b7a21d0bf1a237b49b5f5bb70768133cd2135f9b6e87b722c443cbd2bff06d78c2b68972426bd729bb048f00831bc4a0d6a7b18a7319117ceec672d#npm:0.14.5", {\ - "packageLocation": "./.yarn/unplugged/vue-demi-virtual-f86975c946/node_modules/vue-demi/",\ + ["virtual:cf6f7439ee76dfd2e7f8f2565ae847d76901434fc49c65702190cdf3d1c61e61c701a5c45b514c4bdeacb8f4bcac9c8a98bd4db3d0bc8e403d9e8db2cf14372a#npm:0.14.5", {\ + "packageLocation": "./.yarn/unplugged/vue-demi-virtual-b0e571907e/node_modules/vue-demi/",\ "packageDependencies": [\ - ["vue-demi", "virtual:bb260f937b7a21d0bf1a237b49b5f5bb70768133cd2135f9b6e87b722c443cbd2bff06d78c2b68972426bd729bb048f00831bc4a0d6a7b18a7319117ceec672d#npm:0.14.5"],\ + ["vue-demi", "virtual:cf6f7439ee76dfd2e7f8f2565ae847d76901434fc49c65702190cdf3d1c61e61c701a5c45b514c4bdeacb8f4bcac9c8a98bd4db3d0bc8e403d9e8db2cf14372a#npm:0.14.5"],\ ["@types/vue", null],\ ["@types/vue__composition-api", null],\ ["@vue/composition-api", null],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8830,7 +9265,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/vue", null],\ ["@types/vue__composition-api", null],\ ["@vue/composition-api", null],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8842,20 +9277,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vue-eslint-parser", [\ - ["npm:9.3.0", {\ - "packageLocation": "./.yarn/cache/vue-eslint-parser-npm-9.3.0-f1933c0f13-9bdf375655.zip/node_modules/vue-eslint-parser/",\ + ["npm:9.3.1", {\ + "packageLocation": "./.yarn/cache/vue-eslint-parser-npm-9.3.1-a0feb51670-6d1476b45f.zip/node_modules/vue-eslint-parser/",\ "packageDependencies": [\ - ["vue-eslint-parser", "npm:9.3.0"]\ + ["vue-eslint-parser", "npm:9.3.1"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:a8bbfcc6afa85eb44874f97c133694affff1c591fe1b49dc91c6f1460a3171f7ff9fc2b8fb54fbfa07a880d0e032b8ea8822bda13d1bad3b005c3cf6f77986c0#npm:9.3.0", {\ - "packageLocation": "./.yarn/__virtual__/vue-eslint-parser-virtual-adc51c636d/0/cache/vue-eslint-parser-npm-9.3.0-f1933c0f13-9bdf375655.zip/node_modules/vue-eslint-parser/",\ + ["virtual:c049280e085a5fbf364ae13382e78afc9030f197042e9af966e5a699f76ded15d4d96a25dcd6b57cec183d656bd2de42ea186e6a928204c48f8702503655cbd4#npm:9.3.1", {\ + "packageLocation": "./.yarn/__virtual__/vue-eslint-parser-virtual-ac996f3737/0/cache/vue-eslint-parser-npm-9.3.1-a0feb51670-6d1476b45f.zip/node_modules/vue-eslint-parser/",\ "packageDependencies": [\ - ["vue-eslint-parser", "virtual:a8bbfcc6afa85eb44874f97c133694affff1c591fe1b49dc91c6f1460a3171f7ff9fc2b8fb54fbfa07a880d0e032b8ea8822bda13d1bad3b005c3cf6f77986c0#npm:9.3.0"],\ + ["vue-eslint-parser", "virtual:c049280e085a5fbf364ae13382e78afc9030f197042e9af966e5a699f76ded15d4d96a25dcd6b57cec183d656bd2de42ea186e6a928204c48f8702503655cbd4#npm:9.3.1"],\ ["@types/eslint", null],\ ["debug", "virtual:b86a9fb34323a98c6519528ed55faa0d9b44ca8879307c0b29aa384bde47ff59a7d0c9051b31246f14521dfb71ba3c5d6d0b35c29fffc17bf875aa6ad977d9e8#npm:4.3.4"],\ - ["eslint", "npm:8.43.0"],\ + ["eslint", "npm:8.52.0"],\ ["eslint-scope", "npm:7.1.1"],\ ["eslint-visitor-keys", "npm:3.3.0"],\ ["espree", "npm:9.3.2"],\ @@ -8871,20 +9306,20 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["vue-router", [\ - ["npm:4.2.2", {\ - "packageLocation": "./.yarn/cache/vue-router-npm-4.2.2-56d5f442c5-4181b3776a.zip/node_modules/vue-router/",\ + ["npm:4.2.5", {\ + "packageLocation": "./.yarn/cache/vue-router-npm-4.2.5-3479f41e41-2449db4f3a.zip/node_modules/vue-router/",\ "packageDependencies": [\ - ["vue-router", "npm:4.2.2"]\ + ["vue-router", "npm:4.2.5"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.2", {\ - "packageLocation": "./.yarn/__virtual__/vue-router-virtual-6a1a182bbf/0/cache/vue-router-npm-4.2.2-56d5f442c5-4181b3776a.zip/node_modules/vue-router/",\ + ["virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.5", {\ + "packageLocation": "./.yarn/__virtual__/vue-router-virtual-2017aa030a/0/cache/vue-router-npm-4.2.5-3479f41e41-2449db4f3a.zip/node_modules/vue-router/",\ "packageDependencies": [\ - ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.2"],\ + ["vue-router", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:4.2.5"],\ ["@types/vue", null],\ ["@vue/devtools-api", "npm:6.5.0"],\ - ["vue", "npm:3.3.4"]\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8901,19 +9336,19 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ],\ "linkType": "SOFT"\ }],\ - ["virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.4.51", {\ - "packageLocation": "./.yarn/__virtual__/vueuc-virtual-6919f03c55/0/cache/vueuc-npm-0.4.51-794074113f-7969659fac.zip/node_modules/vueuc/",\ + ["virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.4.51", {\ + "packageLocation": "./.yarn/__virtual__/vueuc-virtual-07229bbf54/0/cache/vueuc-npm-0.4.51-794074113f-7969659fac.zip/node_modules/vueuc/",\ "packageDependencies": [\ - ["vueuc", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.4.51"],\ - ["@css-render/vue3-ssr", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.15.10"],\ + ["vueuc", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.4.51"],\ + ["@css-render/vue3-ssr", "virtual:07229bbf54bc488d21e48f65df3fcd2cdabd1e401dfffccce7403d04695be90e478a0d508694f896481602b0f9db804b9f384dfa051fe08e896fd18fd1fe0b6b#npm:0.15.10"],\ ["@juggle/resize-observer", "npm:3.3.1"],\ ["@types/vue", null],\ ["css-render", "npm:0.15.10"],\ ["evtd", "npm:0.2.4"],\ ["seemly", "npm:0.3.6"],\ - ["vdirs", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.1.8"],\ - ["vooks", "virtual:81189c71433f62c4ac273c448aeecf3ed7301d64e33ff7c34d03262f85581d3b354bb215f71d406ed51f0027815a19a544f8843ca4c1f8ddaea140bb6c10966f#npm:0.2.12"],\ - ["vue", "npm:3.3.4"]\ + ["vdirs", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.1.8"],\ + ["vooks", "virtual:d5901c8fe9a0c32ef9bd30914b8624afdd53ad520846726499200f014090a72c0a1d5e3737654e39af21acf7bf6f0993bedc3c908b3b8804daa47faed23d0085#npm:0.2.12"],\ + ["vue", "virtual:dc3fc578bfa5e06182a4d2be39ede0bc5b74940b1ffe0d70c26892ab140a4699787750fba175dc306292e80b4aa2c8c5f68c2a821e69b2c37e360c0dff36ff66#npm:3.3.7"]\ ],\ "packagePeers": [\ "@types/vue",\ @@ -8956,16 +9391,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["which-typed-array", [\ - ["npm:1.1.9", {\ - "packageLocation": "./.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip/node_modules/which-typed-array/",\ + ["npm:1.1.13", {\ + "packageLocation": "./.yarn/cache/which-typed-array-npm-1.1.13-92c18b4878-3828a0d5d7.zip/node_modules/which-typed-array/",\ "packageDependencies": [\ - ["which-typed-array", "npm:1.1.9"],\ + ["which-typed-array", "npm:1.1.13"],\ ["available-typed-arrays", "npm:1.0.5"],\ - ["call-bind", "npm:1.0.2"],\ + ["call-bind", "npm:1.0.5"],\ ["for-each", "npm:0.3.3"],\ ["gopd", "npm:1.0.1"],\ - ["has-tostringtag", "npm:1.0.0"],\ - ["is-typed-array", "npm:1.1.10"]\ + ["has-tostringtag", "npm:1.0.0"]\ ],\ "linkType": "HARD"\ }]\ @@ -8993,15 +9427,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ - ["word-wrap", [\ - ["npm:1.2.3", {\ - "packageLocation": "./.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip/node_modules/word-wrap/",\ - "packageDependencies": [\ - ["word-wrap", "npm:1.2.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["wrap-ansi", [\ ["npm:7.0.0", {\ "packageLocation": "./.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip/node_modules/wrap-ansi/",\ @@ -9079,26 +9504,26 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["yargs", [\ - ["npm:16.2.0", {\ - "packageLocation": "./.yarn/cache/yargs-npm-16.2.0-547873d425-b14afbb51e.zip/node_modules/yargs/",\ + ["npm:17.7.2", {\ + "packageLocation": "./.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip/node_modules/yargs/",\ "packageDependencies": [\ - ["yargs", "npm:16.2.0"],\ - ["cliui", "npm:7.0.4"],\ + ["yargs", "npm:17.7.2"],\ + ["cliui", "npm:8.0.1"],\ ["escalade", "npm:3.1.1"],\ ["get-caller-file", "npm:2.0.5"],\ ["require-directory", "npm:2.1.1"],\ ["string-width", "npm:4.2.3"],\ ["y18n", "npm:5.0.8"],\ - ["yargs-parser", "npm:20.2.9"]\ + ["yargs-parser", "npm:21.1.1"]\ ],\ "linkType": "HARD"\ }]\ ]],\ ["yargs-parser", [\ - ["npm:20.2.9", {\ - "packageLocation": "./.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip/node_modules/yargs-parser/",\ + ["npm:21.1.1", {\ + "packageLocation": "./.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip/node_modules/yargs-parser/",\ "packageDependencies": [\ - ["yargs-parser", "npm:20.2.9"]\ + ["yargs-parser", "npm:21.1.1"]\ ],\ "linkType": "HARD"\ }]\ diff --git a/.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-ada901b9e7.zip b/.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-ada901b9e7.zip new file mode 100644 index 0000000000..9334304c2a Binary files /dev/null and b/.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-ada901b9e7.zip differ diff --git a/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip b/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip deleted file mode 100644 index 98b1f16818..0000000000 Binary files a/.yarn/cache/@babel-parser-npm-7.22.4-32183c89ee-0ca6d3a2d9.zip and /dev/null differ diff --git a/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip b/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip new file mode 100644 index 0000000000..d7543e4a61 Binary files /dev/null and b/.yarn/cache/@babel-parser-npm-7.23.0-8a7b151672-453fdf8b9e.zip differ diff --git a/.yarn/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-6c4df4839e.zip b/.yarn/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-6c4df4839e.zip new file mode 100644 index 0000000000..f0d4497857 Binary files /dev/null and b/.yarn/cache/@babel-runtime-npm-7.23.2-d013d6cf7e-6c4df4839e.zip differ diff --git a/.yarn/cache/@css-render-plugin-bem-npm-0.15.10-41ccecaa2f-cbab72a7b5.zip b/.yarn/cache/@css-render-plugin-bem-npm-0.15.12-bf8b43dc1f-9fa7ddd62b.zip similarity index 61% rename from .yarn/cache/@css-render-plugin-bem-npm-0.15.10-41ccecaa2f-cbab72a7b5.zip rename to .yarn/cache/@css-render-plugin-bem-npm-0.15.12-bf8b43dc1f-9fa7ddd62b.zip index 7df7772871..7145fae118 100644 Binary files a/.yarn/cache/@css-render-plugin-bem-npm-0.15.10-41ccecaa2f-cbab72a7b5.zip and b/.yarn/cache/@css-render-plugin-bem-npm-0.15.12-bf8b43dc1f-9fa7ddd62b.zip differ diff --git a/.yarn/cache/@css-render-vue3-ssr-npm-0.15.12-a130f4db3a-a5505ae161.zip b/.yarn/cache/@css-render-vue3-ssr-npm-0.15.12-a130f4db3a-a5505ae161.zip new file mode 100644 index 0000000000..0e75f8a4c7 Binary files /dev/null and b/.yarn/cache/@css-render-vue3-ssr-npm-0.15.12-a130f4db3a-a5505ae161.zip differ diff --git a/.yarn/cache/@esbuild-darwin-arm64-npm-0.17.13-3c31ee9bef-8.zip b/.yarn/cache/@esbuild-darwin-arm64-npm-0.17.13-3c31ee9bef-8.zip deleted file mode 100644 index 90c4b9139a..0000000000 Binary files a/.yarn/cache/@esbuild-darwin-arm64-npm-0.17.13-3c31ee9bef-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-darwin-arm64-npm-0.18.20-00b3504077-8.zip b/.yarn/cache/@esbuild-darwin-arm64-npm-0.18.20-00b3504077-8.zip new file mode 100644 index 0000000000..dfd7b76554 Binary files /dev/null and b/.yarn/cache/@esbuild-darwin-arm64-npm-0.18.20-00b3504077-8.zip differ diff --git a/.yarn/cache/@esbuild-darwin-x64-npm-0.17.13-2af4bfbe4a-8.zip b/.yarn/cache/@esbuild-darwin-x64-npm-0.17.13-2af4bfbe4a-8.zip deleted file mode 100644 index 13d316951e..0000000000 Binary files a/.yarn/cache/@esbuild-darwin-x64-npm-0.17.13-2af4bfbe4a-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-darwin-x64-npm-0.18.20-767fe27d1b-8.zip b/.yarn/cache/@esbuild-darwin-x64-npm-0.18.20-767fe27d1b-8.zip new file mode 100644 index 0000000000..432802b69e Binary files /dev/null and b/.yarn/cache/@esbuild-darwin-x64-npm-0.18.20-767fe27d1b-8.zip differ diff --git a/.yarn/cache/@esbuild-linux-arm64-npm-0.17.13-533eb0e4eb-8.zip b/.yarn/cache/@esbuild-linux-arm64-npm-0.17.13-533eb0e4eb-8.zip deleted file mode 100644 index d69620a547..0000000000 Binary files a/.yarn/cache/@esbuild-linux-arm64-npm-0.17.13-533eb0e4eb-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-linux-arm64-npm-0.18.20-7b48b328fe-8.zip b/.yarn/cache/@esbuild-linux-arm64-npm-0.18.20-7b48b328fe-8.zip new file mode 100644 index 0000000000..6eb51fcc99 Binary files /dev/null and b/.yarn/cache/@esbuild-linux-arm64-npm-0.18.20-7b48b328fe-8.zip differ diff --git a/.yarn/cache/@esbuild-linux-x64-npm-0.17.13-01575597b4-8.zip b/.yarn/cache/@esbuild-linux-x64-npm-0.17.13-01575597b4-8.zip deleted file mode 100644 index e8d42bffa6..0000000000 Binary files a/.yarn/cache/@esbuild-linux-x64-npm-0.17.13-01575597b4-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-linux-x64-npm-0.18.20-de8e99b449-8.zip b/.yarn/cache/@esbuild-linux-x64-npm-0.18.20-de8e99b449-8.zip new file mode 100644 index 0000000000..bcbc77a84f Binary files /dev/null and b/.yarn/cache/@esbuild-linux-x64-npm-0.18.20-de8e99b449-8.zip differ diff --git a/.yarn/cache/@esbuild-win32-arm64-npm-0.17.13-cd496c2d1d-8.zip b/.yarn/cache/@esbuild-win32-arm64-npm-0.17.13-cd496c2d1d-8.zip deleted file mode 100644 index 233ca33f75..0000000000 Binary files a/.yarn/cache/@esbuild-win32-arm64-npm-0.17.13-cd496c2d1d-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-win32-arm64-npm-0.18.20-a58fe6c6a3-8.zip b/.yarn/cache/@esbuild-win32-arm64-npm-0.18.20-a58fe6c6a3-8.zip new file mode 100644 index 0000000000..cf9c15613b Binary files /dev/null and b/.yarn/cache/@esbuild-win32-arm64-npm-0.18.20-a58fe6c6a3-8.zip differ diff --git a/.yarn/cache/@esbuild-win32-x64-npm-0.17.13-29882f65f7-8.zip b/.yarn/cache/@esbuild-win32-x64-npm-0.17.13-29882f65f7-8.zip deleted file mode 100644 index 5e0f19912b..0000000000 Binary files a/.yarn/cache/@esbuild-win32-x64-npm-0.17.13-29882f65f7-8.zip and /dev/null differ diff --git a/.yarn/cache/@esbuild-win32-x64-npm-0.18.20-37a9ab2bda-8.zip b/.yarn/cache/@esbuild-win32-x64-npm-0.18.20-37a9ab2bda-8.zip new file mode 100644 index 0000000000..768cc68f13 Binary files /dev/null and b/.yarn/cache/@esbuild-win32-x64-npm-0.18.20-37a9ab2bda-8.zip differ diff --git a/.yarn/cache/@eslint-community-regexpp-npm-4.4.1-44c7391499-db97d8d08e.zip b/.yarn/cache/@eslint-community-regexpp-npm-4.4.1-44c7391499-db97d8d08e.zip deleted file mode 100644 index 7399004e87..0000000000 Binary files a/.yarn/cache/@eslint-community-regexpp-npm-4.4.1-44c7391499-db97d8d08e.zip and /dev/null differ diff --git a/.yarn/cache/@eslint-community-regexpp-npm-4.8.0-92ece47e3d-601e6d033d.zip b/.yarn/cache/@eslint-community-regexpp-npm-4.8.0-92ece47e3d-601e6d033d.zip new file mode 100644 index 0000000000..0cbfbf8d84 Binary files /dev/null and b/.yarn/cache/@eslint-community-regexpp-npm-4.8.0-92ece47e3d-601e6d033d.zip differ diff --git a/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip b/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip deleted file mode 100644 index 87252c4e68..0000000000 Binary files a/.yarn/cache/@eslint-eslintrc-npm-2.0.3-531b6e79f7-ddc51f25f8.zip and /dev/null differ diff --git a/.yarn/cache/@eslint-eslintrc-npm-2.1.2-feb0771c9f-bc742a1e3b.zip b/.yarn/cache/@eslint-eslintrc-npm-2.1.2-feb0771c9f-bc742a1e3b.zip new file mode 100644 index 0000000000..43f6713681 Binary files /dev/null and b/.yarn/cache/@eslint-eslintrc-npm-2.1.2-feb0771c9f-bc742a1e3b.zip differ diff --git a/.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip b/.yarn/cache/@eslint-js-npm-8.52.0-801dbdf7b0-490893b809.zip similarity index 50% rename from .yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip rename to .yarn/cache/@eslint-js-npm-8.52.0-801dbdf7b0-490893b809.zip index 506e1223d0..1c059425f2 100644 Binary files a/.yarn/cache/@eslint-js-npm-8.43.0-60a60994b7-580487a09c.zip and b/.yarn/cache/@eslint-js-npm-8.52.0-801dbdf7b0-490893b809.zip differ diff --git a/.yarn/cache/@floating-ui-core-npm-1.2.6-083bec342c-e4aa96c435.zip b/.yarn/cache/@floating-ui-core-npm-1.2.6-083bec342c-e4aa96c435.zip deleted file mode 100644 index 7f721669d5..0000000000 Binary files a/.yarn/cache/@floating-ui-core-npm-1.2.6-083bec342c-e4aa96c435.zip and /dev/null differ diff --git a/.yarn/cache/@floating-ui-core-npm-1.4.1-fe89c45d92-be4ab864fe.zip b/.yarn/cache/@floating-ui-core-npm-1.4.1-fe89c45d92-be4ab864fe.zip new file mode 100644 index 0000000000..e8ce36ae61 Binary files /dev/null and b/.yarn/cache/@floating-ui-core-npm-1.4.1-fe89c45d92-be4ab864fe.zip differ diff --git a/.yarn/cache/@floating-ui-dom-npm-1.2.6-9d4be07ec3-2226c6c244.zip b/.yarn/cache/@floating-ui-dom-npm-1.2.6-9d4be07ec3-2226c6c244.zip deleted file mode 100644 index ba1a82c722..0000000000 Binary files a/.yarn/cache/@floating-ui-dom-npm-1.2.6-9d4be07ec3-2226c6c244.zip and /dev/null differ diff --git a/.yarn/cache/@floating-ui-dom-npm-1.5.2-f1b8ca0c30-3c71eed50b.zip b/.yarn/cache/@floating-ui-dom-npm-1.5.2-f1b8ca0c30-3c71eed50b.zip new file mode 100644 index 0000000000..a984181e2c Binary files /dev/null and b/.yarn/cache/@floating-ui-dom-npm-1.5.2-f1b8ca0c30-3c71eed50b.zip differ diff --git a/.yarn/cache/@floating-ui-utils-npm-0.1.2-22eefe56f0-3e29fd3c69.zip b/.yarn/cache/@floating-ui-utils-npm-0.1.2-22eefe56f0-3e29fd3c69.zip new file mode 100644 index 0000000000..ada2c49e44 Binary files /dev/null and b/.yarn/cache/@floating-ui-utils-npm-0.1.2-22eefe56f0-3e29fd3c69.zip differ diff --git a/.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.8-bbeae5dafc-c78ef0d62e.zip b/.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.9-ef68c3c094-1d6168fafc.zip similarity index 60% rename from .yarn/cache/@fullcalendar-bootstrap5-npm-6.1.8-bbeae5dafc-c78ef0d62e.zip rename to .yarn/cache/@fullcalendar-bootstrap5-npm-6.1.9-ef68c3c094-1d6168fafc.zip index bed7f5330b..22a51e35a1 100644 Binary files a/.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.8-bbeae5dafc-c78ef0d62e.zip and b/.yarn/cache/@fullcalendar-bootstrap5-npm-6.1.9-ef68c3c094-1d6168fafc.zip differ diff --git a/.yarn/cache/@fullcalendar-core-npm-6.1.8-da04efa804-66c13078c9.zip b/.yarn/cache/@fullcalendar-core-npm-6.1.8-da04efa804-66c13078c9.zip deleted file mode 100644 index a6503c93c2..0000000000 Binary files a/.yarn/cache/@fullcalendar-core-npm-6.1.8-da04efa804-66c13078c9.zip and /dev/null differ diff --git a/.yarn/cache/@fullcalendar-core-npm-6.1.9-b4da84d4b8-836db3e40c.zip b/.yarn/cache/@fullcalendar-core-npm-6.1.9-b4da84d4b8-836db3e40c.zip new file mode 100644 index 0000000000..4e27bfed69 Binary files /dev/null and b/.yarn/cache/@fullcalendar-core-npm-6.1.9-b4da84d4b8-836db3e40c.zip differ diff --git a/.yarn/cache/@fullcalendar-daygrid-npm-6.1.8-3f45184389-a99441c81d.zip b/.yarn/cache/@fullcalendar-daygrid-npm-6.1.8-3f45184389-a99441c81d.zip deleted file mode 100644 index 1e4016e010..0000000000 Binary files a/.yarn/cache/@fullcalendar-daygrid-npm-6.1.8-3f45184389-a99441c81d.zip and /dev/null differ diff --git a/.yarn/cache/@fullcalendar-daygrid-npm-6.1.9-4c0da59f84-3db55247c4.zip b/.yarn/cache/@fullcalendar-daygrid-npm-6.1.9-4c0da59f84-3db55247c4.zip new file mode 100644 index 0000000000..5a0ad27421 Binary files /dev/null and b/.yarn/cache/@fullcalendar-daygrid-npm-6.1.9-4c0da59f84-3db55247c4.zip differ diff --git a/.yarn/cache/@fullcalendar-icalendar-npm-6.1.8-bee329d052-f322ce54bb.zip b/.yarn/cache/@fullcalendar-icalendar-npm-6.1.9-92e390eda8-d47daf4ae0.zip similarity index 65% rename from .yarn/cache/@fullcalendar-icalendar-npm-6.1.8-bee329d052-f322ce54bb.zip rename to .yarn/cache/@fullcalendar-icalendar-npm-6.1.9-92e390eda8-d47daf4ae0.zip index 0a8eeadfda..804279cbb4 100644 Binary files a/.yarn/cache/@fullcalendar-icalendar-npm-6.1.8-bee329d052-f322ce54bb.zip and b/.yarn/cache/@fullcalendar-icalendar-npm-6.1.9-92e390eda8-d47daf4ae0.zip differ diff --git a/.yarn/cache/@fullcalendar-interaction-npm-6.1.8-6c6b6987db-3ef0da6dca.zip b/.yarn/cache/@fullcalendar-interaction-npm-6.1.8-6c6b6987db-3ef0da6dca.zip deleted file mode 100644 index 41d39d3879..0000000000 Binary files a/.yarn/cache/@fullcalendar-interaction-npm-6.1.8-6c6b6987db-3ef0da6dca.zip and /dev/null differ diff --git a/.yarn/cache/@fullcalendar-interaction-npm-6.1.9-f729b81a3d-787111ea6f.zip b/.yarn/cache/@fullcalendar-interaction-npm-6.1.9-f729b81a3d-787111ea6f.zip new file mode 100644 index 0000000000..43132b57e8 Binary files /dev/null and b/.yarn/cache/@fullcalendar-interaction-npm-6.1.9-f729b81a3d-787111ea6f.zip differ diff --git a/.yarn/cache/@fullcalendar-list-npm-6.1.8-39b471f8da-b5c397040e.zip b/.yarn/cache/@fullcalendar-list-npm-6.1.8-39b471f8da-b5c397040e.zip deleted file mode 100644 index bec4ca38b3..0000000000 Binary files a/.yarn/cache/@fullcalendar-list-npm-6.1.8-39b471f8da-b5c397040e.zip and /dev/null differ diff --git a/.yarn/cache/@fullcalendar-list-npm-6.1.9-f76695c5ab-978dd54b71.zip b/.yarn/cache/@fullcalendar-list-npm-6.1.9-f76695c5ab-978dd54b71.zip new file mode 100644 index 0000000000..177ec564d1 Binary files /dev/null and b/.yarn/cache/@fullcalendar-list-npm-6.1.9-f76695c5ab-978dd54b71.zip differ diff --git a/.yarn/cache/@fullcalendar-luxon3-npm-6.1.8-7f233a53e1-7e84200641.zip b/.yarn/cache/@fullcalendar-luxon3-npm-6.1.9-d79fc8f961-25122126e2.zip similarity index 63% rename from .yarn/cache/@fullcalendar-luxon3-npm-6.1.8-7f233a53e1-7e84200641.zip rename to .yarn/cache/@fullcalendar-luxon3-npm-6.1.9-d79fc8f961-25122126e2.zip index 873248791d..097ca2265a 100644 Binary files a/.yarn/cache/@fullcalendar-luxon3-npm-6.1.8-7f233a53e1-7e84200641.zip and b/.yarn/cache/@fullcalendar-luxon3-npm-6.1.9-d79fc8f961-25122126e2.zip differ diff --git a/.yarn/cache/@fullcalendar-timegrid-npm-6.1.8-22d8c05e30-122786fd40.zip b/.yarn/cache/@fullcalendar-timegrid-npm-6.1.9-b227fefa80-8c12a508f7.zip similarity index 77% rename from .yarn/cache/@fullcalendar-timegrid-npm-6.1.8-22d8c05e30-122786fd40.zip rename to .yarn/cache/@fullcalendar-timegrid-npm-6.1.9-b227fefa80-8c12a508f7.zip index bd56e31f00..5d92af9ff1 100644 Binary files a/.yarn/cache/@fullcalendar-timegrid-npm-6.1.8-22d8c05e30-122786fd40.zip and b/.yarn/cache/@fullcalendar-timegrid-npm-6.1.9-b227fefa80-8c12a508f7.zip differ diff --git a/.yarn/cache/@fullcalendar-vue3-npm-6.1.8-a4963d0029-cff81d98ae.zip b/.yarn/cache/@fullcalendar-vue3-npm-6.1.9-3c150e259d-2c1c0fbe72.zip similarity index 79% rename from .yarn/cache/@fullcalendar-vue3-npm-6.1.8-a4963d0029-cff81d98ae.zip rename to .yarn/cache/@fullcalendar-vue3-npm-6.1.9-3c150e259d-2c1c0fbe72.zip index cf345ff23d..0ca254a0d6 100644 Binary files a/.yarn/cache/@fullcalendar-vue3-npm-6.1.8-a4963d0029-cff81d98ae.zip and b/.yarn/cache/@fullcalendar-vue3-npm-6.1.9-3c150e259d-2c1c0fbe72.zip differ diff --git a/.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.13-12314014f2-f8ea57b0d7.zip similarity index 51% rename from .yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip rename to .yarn/cache/@humanwhocodes-config-array-npm-0.11.13-12314014f2-f8ea57b0d7.zip index 3970ef9bcb..4a8665e835 100644 Binary files a/.yarn/cache/@humanwhocodes-config-array-npm-0.11.10-7b63df9e7f-1b1302e240.zip and b/.yarn/cache/@humanwhocodes-config-array-npm-0.11.13-12314014f2-f8ea57b0d7.zip differ diff --git a/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip b/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip deleted file mode 100644 index 2b79104af5..0000000000 Binary files a/.yarn/cache/@humanwhocodes-object-schema-npm-1.2.1-eb622b5d0e-a824a1ec31.zip and /dev/null differ diff --git a/.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip b/.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip new file mode 100644 index 0000000000..ddd36cec8c Binary files /dev/null and b/.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip differ diff --git a/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.7.11-6bf2bf934e-8.zip b/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.7.11-6bf2bf934e-8.zip deleted file mode 100644 index 3ba64234ef..0000000000 Binary files a/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.7.11-6bf2bf934e-8.zip and /dev/null differ diff --git a/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.8.5-a9ab00615c-8.zip b/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.8.5-a9ab00615c-8.zip new file mode 100644 index 0000000000..6df931b4af Binary files /dev/null and b/.yarn/cache/@lmdb-lmdb-darwin-arm64-npm-2.8.5-a9ab00615c-8.zip differ diff --git a/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.7.11-f282673377-8.zip b/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.7.11-f282673377-8.zip deleted file mode 100644 index 49bdca5ae0..0000000000 Binary files a/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.7.11-f282673377-8.zip and /dev/null differ diff --git a/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.8.5-080b8c9329-8.zip b/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.8.5-080b8c9329-8.zip new file mode 100644 index 0000000000..db77cafaea Binary files /dev/null and b/.yarn/cache/@lmdb-lmdb-darwin-x64-npm-2.8.5-080b8c9329-8.zip differ diff --git a/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.7.11-3dcb107756-8.zip b/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.7.11-3dcb107756-8.zip deleted file mode 100644 index 78c16d860c..0000000000 Binary files a/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.7.11-3dcb107756-8.zip and /dev/null differ diff --git a/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.8.5-9dfda9f24f-8.zip b/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.8.5-9dfda9f24f-8.zip new file mode 100644 index 0000000000..d4522df85e Binary files /dev/null and b/.yarn/cache/@lmdb-lmdb-linux-arm64-npm-2.8.5-9dfda9f24f-8.zip differ diff --git a/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.7.11-f3bb75854e-8.zip b/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.7.11-f3bb75854e-8.zip deleted file mode 100644 index 0cb386d340..0000000000 Binary files a/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.7.11-f3bb75854e-8.zip and /dev/null differ diff --git a/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.8.5-0f668ba9a7-8.zip b/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.8.5-0f668ba9a7-8.zip new file mode 100644 index 0000000000..8820ec421f Binary files /dev/null and b/.yarn/cache/@lmdb-lmdb-linux-x64-npm-2.8.5-0f668ba9a7-8.zip differ diff --git a/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.7.11-aa490eb71e-8.zip b/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.7.11-aa490eb71e-8.zip deleted file mode 100644 index 10409fa77e..0000000000 Binary files a/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.7.11-aa490eb71e-8.zip and /dev/null differ diff --git a/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.8.5-3702de4edb-8.zip b/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.8.5-3702de4edb-8.zip new file mode 100644 index 0000000000..201d7cb1f1 Binary files /dev/null and b/.yarn/cache/@lmdb-lmdb-win32-x64-npm-2.8.5-3702de4edb-8.zip differ diff --git a/.yarn/cache/@parcel-bundler-default-npm-2.10.0-bf1aa01515-58d3619928.zip b/.yarn/cache/@parcel-bundler-default-npm-2.10.0-bf1aa01515-58d3619928.zip new file mode 100644 index 0000000000..302219eaa0 Binary files /dev/null and b/.yarn/cache/@parcel-bundler-default-npm-2.10.0-bf1aa01515-58d3619928.zip differ diff --git a/.yarn/cache/@parcel-bundler-default-npm-2.9.2-cd927ae646-acd5045aae.zip b/.yarn/cache/@parcel-bundler-default-npm-2.9.2-cd927ae646-acd5045aae.zip deleted file mode 100644 index 3c65cdf515..0000000000 Binary files a/.yarn/cache/@parcel-bundler-default-npm-2.9.2-cd927ae646-acd5045aae.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip b/.yarn/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip new file mode 100644 index 0000000000..271d9d3f6f Binary files /dev/null and b/.yarn/cache/@parcel-cache-npm-2.10.0-37f1f83d32-209d474abd.zip differ diff --git a/.yarn/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip b/.yarn/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip deleted file mode 100644 index f8493457fa..0000000000 Binary files a/.yarn/cache/@parcel-cache-npm-2.9.2-5aee286b54-7968be08b0.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-codeframe-npm-2.10.0-e8aa1b4ecc-d87b17d3ce.zip b/.yarn/cache/@parcel-codeframe-npm-2.10.0-e8aa1b4ecc-d87b17d3ce.zip new file mode 100644 index 0000000000..9058e68333 Binary files /dev/null and b/.yarn/cache/@parcel-codeframe-npm-2.10.0-e8aa1b4ecc-d87b17d3ce.zip differ diff --git a/.yarn/cache/@parcel-codeframe-npm-2.9.2-964de9e20f-6a9cc23994.zip b/.yarn/cache/@parcel-codeframe-npm-2.9.2-964de9e20f-6a9cc23994.zip deleted file mode 100644 index 418797d358..0000000000 Binary files a/.yarn/cache/@parcel-codeframe-npm-2.9.2-964de9e20f-6a9cc23994.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-compressor-raw-npm-2.9.2-7dfbfadaf9-263005e4bc.zip b/.yarn/cache/@parcel-compressor-raw-npm-2.10.0-961e5d9fe0-043fca0ecb.zip similarity index 54% rename from .yarn/cache/@parcel-compressor-raw-npm-2.9.2-7dfbfadaf9-263005e4bc.zip rename to .yarn/cache/@parcel-compressor-raw-npm-2.10.0-961e5d9fe0-043fca0ecb.zip index 8e275a3480..e6333b4084 100644 Binary files a/.yarn/cache/@parcel-compressor-raw-npm-2.9.2-7dfbfadaf9-263005e4bc.zip and b/.yarn/cache/@parcel-compressor-raw-npm-2.10.0-961e5d9fe0-043fca0ecb.zip differ diff --git a/.yarn/cache/@parcel-config-default-npm-2.10.0-2a1fbdf24b-d780d05021.zip b/.yarn/cache/@parcel-config-default-npm-2.10.0-2a1fbdf24b-d780d05021.zip new file mode 100644 index 0000000000..d5a1840883 Binary files /dev/null and b/.yarn/cache/@parcel-config-default-npm-2.10.0-2a1fbdf24b-d780d05021.zip differ diff --git a/.yarn/cache/@parcel-config-default-npm-2.9.2-7a372f4a8e-b07a1c93d7.zip b/.yarn/cache/@parcel-config-default-npm-2.9.2-7a372f4a8e-b07a1c93d7.zip deleted file mode 100644 index 63f6f01c05..0000000000 Binary files a/.yarn/cache/@parcel-config-default-npm-2.9.2-7a372f4a8e-b07a1c93d7.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-core-npm-2.10.0-59eaeeba7a-c59c2971ea.zip b/.yarn/cache/@parcel-core-npm-2.10.0-59eaeeba7a-c59c2971ea.zip new file mode 100644 index 0000000000..95a14ae902 Binary files /dev/null and b/.yarn/cache/@parcel-core-npm-2.10.0-59eaeeba7a-c59c2971ea.zip differ diff --git a/.yarn/cache/@parcel-core-npm-2.9.2-43efe8c401-34fdd57791.zip b/.yarn/cache/@parcel-core-npm-2.9.2-43efe8c401-34fdd57791.zip deleted file mode 100644 index ef55218dde..0000000000 Binary files a/.yarn/cache/@parcel-core-npm-2.9.2-43efe8c401-34fdd57791.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-diagnostic-npm-2.9.2-b8228983c3-b27c14d711.zip b/.yarn/cache/@parcel-diagnostic-npm-2.10.0-1e389b369e-45c606ca52.zip similarity index 90% rename from .yarn/cache/@parcel-diagnostic-npm-2.9.2-b8228983c3-b27c14d711.zip rename to .yarn/cache/@parcel-diagnostic-npm-2.10.0-1e389b369e-45c606ca52.zip index fcb0ed1ad4..c16d0b42f4 100644 Binary files a/.yarn/cache/@parcel-diagnostic-npm-2.9.2-b8228983c3-b27c14d711.zip and b/.yarn/cache/@parcel-diagnostic-npm-2.10.0-1e389b369e-45c606ca52.zip differ diff --git a/.yarn/cache/@parcel-events-npm-2.9.2-24de4cd1a4-4bc905a5e3.zip b/.yarn/cache/@parcel-events-npm-2.10.0-da42a4afa6-1d21cd4186.zip similarity index 83% rename from .yarn/cache/@parcel-events-npm-2.9.2-24de4cd1a4-4bc905a5e3.zip rename to .yarn/cache/@parcel-events-npm-2.10.0-da42a4afa6-1d21cd4186.zip index a07ab00c07..cf89807381 100644 Binary files a/.yarn/cache/@parcel-events-npm-2.9.2-24de4cd1a4-4bc905a5e3.zip and b/.yarn/cache/@parcel-events-npm-2.10.0-da42a4afa6-1d21cd4186.zip differ diff --git a/.yarn/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip b/.yarn/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip new file mode 100644 index 0000000000..0062d48c08 Binary files /dev/null and b/.yarn/cache/@parcel-fs-npm-2.10.0-c959567f0f-10faae481c.zip differ diff --git a/.yarn/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip b/.yarn/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip deleted file mode 100644 index d2a4b942b1..0000000000 Binary files a/.yarn/cache/@parcel-fs-npm-2.9.2-44cca43adc-410c63e0dc.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-fs-search-npm-2.9.2-0251af50fa-68fd149a48.zip b/.yarn/cache/@parcel-fs-search-npm-2.9.2-0251af50fa-68fd149a48.zip deleted file mode 100644 index a8267425ed..0000000000 Binary files a/.yarn/cache/@parcel-fs-search-npm-2.9.2-0251af50fa-68fd149a48.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-graph-npm-2.9.2-cb6ed79dfc-9943396a21.zip b/.yarn/cache/@parcel-graph-npm-2.9.2-cb6ed79dfc-9943396a21.zip deleted file mode 100644 index aa8ffafa54..0000000000 Binary files a/.yarn/cache/@parcel-graph-npm-2.9.2-cb6ed79dfc-9943396a21.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-graph-npm-3.0.0-9001abfefc-0a9d5017f6.zip b/.yarn/cache/@parcel-graph-npm-3.0.0-9001abfefc-0a9d5017f6.zip new file mode 100644 index 0000000000..164f2ff077 Binary files /dev/null and b/.yarn/cache/@parcel-graph-npm-3.0.0-9001abfefc-0a9d5017f6.zip differ diff --git a/.yarn/cache/@parcel-hash-npm-2.9.2-f26f4ce463-7ee42d33a1.zip b/.yarn/cache/@parcel-hash-npm-2.9.2-f26f4ce463-7ee42d33a1.zip deleted file mode 100644 index 45307f20fb..0000000000 Binary files a/.yarn/cache/@parcel-hash-npm-2.9.2-f26f4ce463-7ee42d33a1.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-logger-npm-2.9.2-3241bcb0e5-072052724a.zip b/.yarn/cache/@parcel-logger-npm-2.10.0-41ac90e34c-52d0b5331d.zip similarity index 76% rename from .yarn/cache/@parcel-logger-npm-2.9.2-3241bcb0e5-072052724a.zip rename to .yarn/cache/@parcel-logger-npm-2.10.0-41ac90e34c-52d0b5331d.zip index 1c9bcb19a7..d7df80c7bf 100644 Binary files a/.yarn/cache/@parcel-logger-npm-2.9.2-3241bcb0e5-072052724a.zip and b/.yarn/cache/@parcel-logger-npm-2.10.0-41ac90e34c-52d0b5331d.zip differ diff --git a/.yarn/cache/@parcel-markdown-ansi-npm-2.9.2-2985c646b4-171d62a761.zip b/.yarn/cache/@parcel-markdown-ansi-npm-2.10.0-4dd4da44f3-35e2d07ec8.zip similarity index 64% rename from .yarn/cache/@parcel-markdown-ansi-npm-2.9.2-2985c646b4-171d62a761.zip rename to .yarn/cache/@parcel-markdown-ansi-npm-2.10.0-4dd4da44f3-35e2d07ec8.zip index f5c0e86b17..f5a836e3cc 100644 Binary files a/.yarn/cache/@parcel-markdown-ansi-npm-2.9.2-2985c646b4-171d62a761.zip and b/.yarn/cache/@parcel-markdown-ansi-npm-2.10.0-4dd4da44f3-35e2d07ec8.zip differ diff --git a/.yarn/cache/@parcel-namer-default-npm-2.9.2-f84d8c75d8-903da6aada.zip b/.yarn/cache/@parcel-namer-default-npm-2.10.0-4b82db40fd-f2a32096d1.zip similarity index 80% rename from .yarn/cache/@parcel-namer-default-npm-2.9.2-f84d8c75d8-903da6aada.zip rename to .yarn/cache/@parcel-namer-default-npm-2.10.0-4b82db40fd-f2a32096d1.zip index 053fa8ecf7..46d6a52498 100644 Binary files a/.yarn/cache/@parcel-namer-default-npm-2.9.2-f84d8c75d8-903da6aada.zip and b/.yarn/cache/@parcel-namer-default-npm-2.10.0-4b82db40fd-f2a32096d1.zip differ diff --git a/.yarn/cache/@parcel-node-resolver-core-npm-3.0.2-e5591710a1-82d5122e36.zip b/.yarn/cache/@parcel-node-resolver-core-npm-3.0.2-e5591710a1-82d5122e36.zip deleted file mode 100644 index e5f0700adf..0000000000 Binary files a/.yarn/cache/@parcel-node-resolver-core-npm-3.0.2-e5591710a1-82d5122e36.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-node-resolver-core-npm-3.1.0-9c9ff3ab8b-dcdd39bc6a.zip b/.yarn/cache/@parcel-node-resolver-core-npm-3.1.0-9c9ff3ab8b-dcdd39bc6a.zip new file mode 100644 index 0000000000..33ee38431b Binary files /dev/null and b/.yarn/cache/@parcel-node-resolver-core-npm-3.1.0-9c9ff3ab8b-dcdd39bc6a.zip differ diff --git a/.yarn/cache/@parcel-optimizer-css-npm-2.9.2-f17b6fe3fc-2ba9bd6eea.zip b/.yarn/cache/@parcel-optimizer-css-npm-2.10.0-dbd5825b4e-ea15989512.zip similarity index 80% rename from .yarn/cache/@parcel-optimizer-css-npm-2.9.2-f17b6fe3fc-2ba9bd6eea.zip rename to .yarn/cache/@parcel-optimizer-css-npm-2.10.0-dbd5825b4e-ea15989512.zip index 331e629428..9956afb109 100644 Binary files a/.yarn/cache/@parcel-optimizer-css-npm-2.9.2-f17b6fe3fc-2ba9bd6eea.zip and b/.yarn/cache/@parcel-optimizer-css-npm-2.10.0-dbd5825b4e-ea15989512.zip differ diff --git a/.yarn/cache/@parcel-optimizer-data-url-npm-2.9.2-c7dded7731-fed10fad94.zip b/.yarn/cache/@parcel-optimizer-data-url-npm-2.10.0-700cb5aab6-ec9530be83.zip similarity index 65% rename from .yarn/cache/@parcel-optimizer-data-url-npm-2.9.2-c7dded7731-fed10fad94.zip rename to .yarn/cache/@parcel-optimizer-data-url-npm-2.10.0-700cb5aab6-ec9530be83.zip index feacc77758..39c8d2b426 100644 Binary files a/.yarn/cache/@parcel-optimizer-data-url-npm-2.9.2-c7dded7731-fed10fad94.zip and b/.yarn/cache/@parcel-optimizer-data-url-npm-2.10.0-700cb5aab6-ec9530be83.zip differ diff --git a/.yarn/cache/@parcel-optimizer-htmlnano-npm-2.9.2-01a9d51f22-9a5f1caf59.zip b/.yarn/cache/@parcel-optimizer-htmlnano-npm-2.10.0-ee0243765c-1f6de13022.zip similarity index 83% rename from .yarn/cache/@parcel-optimizer-htmlnano-npm-2.9.2-01a9d51f22-9a5f1caf59.zip rename to .yarn/cache/@parcel-optimizer-htmlnano-npm-2.10.0-ee0243765c-1f6de13022.zip index 918a8cb96a..7b7bff73e7 100644 Binary files a/.yarn/cache/@parcel-optimizer-htmlnano-npm-2.9.2-01a9d51f22-9a5f1caf59.zip and b/.yarn/cache/@parcel-optimizer-htmlnano-npm-2.10.0-ee0243765c-1f6de13022.zip differ diff --git a/.yarn/cache/@parcel-optimizer-image-npm-2.10.0-a581b60cbd-94d5db2837.zip b/.yarn/cache/@parcel-optimizer-image-npm-2.10.0-a581b60cbd-94d5db2837.zip new file mode 100644 index 0000000000..df6e165df9 Binary files /dev/null and b/.yarn/cache/@parcel-optimizer-image-npm-2.10.0-a581b60cbd-94d5db2837.zip differ diff --git a/.yarn/cache/@parcel-optimizer-image-npm-2.9.2-2e26c5a74b-8cbf4b2e9a.zip b/.yarn/cache/@parcel-optimizer-image-npm-2.9.2-2e26c5a74b-8cbf4b2e9a.zip deleted file mode 100644 index 6895ab855e..0000000000 Binary files a/.yarn/cache/@parcel-optimizer-image-npm-2.9.2-2e26c5a74b-8cbf4b2e9a.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-optimizer-svgo-npm-2.9.2-4519e191ce-67ed4bd0db.zip b/.yarn/cache/@parcel-optimizer-svgo-npm-2.10.0-154d938969-7201c63222.zip similarity index 70% rename from .yarn/cache/@parcel-optimizer-svgo-npm-2.9.2-4519e191ce-67ed4bd0db.zip rename to .yarn/cache/@parcel-optimizer-svgo-npm-2.10.0-154d938969-7201c63222.zip index 7d4f03f8b7..ba2a5ca11a 100644 Binary files a/.yarn/cache/@parcel-optimizer-svgo-npm-2.9.2-4519e191ce-67ed4bd0db.zip and b/.yarn/cache/@parcel-optimizer-svgo-npm-2.10.0-154d938969-7201c63222.zip differ diff --git a/.yarn/cache/@parcel-optimizer-swc-npm-2.9.2-ccab80a9cc-e21d0bee33.zip b/.yarn/cache/@parcel-optimizer-swc-npm-2.10.0-caf3bb9c02-1fe68ee6ff.zip similarity index 77% rename from .yarn/cache/@parcel-optimizer-swc-npm-2.9.2-ccab80a9cc-e21d0bee33.zip rename to .yarn/cache/@parcel-optimizer-swc-npm-2.10.0-caf3bb9c02-1fe68ee6ff.zip index e1c6bde85e..ac83217658 100644 Binary files a/.yarn/cache/@parcel-optimizer-swc-npm-2.9.2-ccab80a9cc-e21d0bee33.zip and b/.yarn/cache/@parcel-optimizer-swc-npm-2.10.0-caf3bb9c02-1fe68ee6ff.zip differ diff --git a/.yarn/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip b/.yarn/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip new file mode 100644 index 0000000000..77ba89e562 Binary files /dev/null and b/.yarn/cache/@parcel-package-manager-npm-2.10.0-4f4a39adee-7c4a95d9df.zip differ diff --git a/.yarn/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip b/.yarn/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip deleted file mode 100644 index c6e32f1a54..0000000000 Binary files a/.yarn/cache/@parcel-package-manager-npm-2.9.2-ce78c9a74b-f7f1913f7f.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-packager-css-npm-2.9.2-6a69ae150c-835894034e.zip b/.yarn/cache/@parcel-packager-css-npm-2.10.0-cb31a968a8-11bf4cae4c.zip similarity index 86% rename from .yarn/cache/@parcel-packager-css-npm-2.9.2-6a69ae150c-835894034e.zip rename to .yarn/cache/@parcel-packager-css-npm-2.10.0-cb31a968a8-11bf4cae4c.zip index ed9072fbdb..71fc7e92a4 100644 Binary files a/.yarn/cache/@parcel-packager-css-npm-2.9.2-6a69ae150c-835894034e.zip and b/.yarn/cache/@parcel-packager-css-npm-2.10.0-cb31a968a8-11bf4cae4c.zip differ diff --git a/.yarn/cache/@parcel-packager-html-npm-2.10.0-d6f71e7e36-8dfd86e7d6.zip b/.yarn/cache/@parcel-packager-html-npm-2.10.0-d6f71e7e36-8dfd86e7d6.zip new file mode 100644 index 0000000000..d3c871d581 Binary files /dev/null and b/.yarn/cache/@parcel-packager-html-npm-2.10.0-d6f71e7e36-8dfd86e7d6.zip differ diff --git a/.yarn/cache/@parcel-packager-html-npm-2.9.2-7468873086-8551a11ea2.zip b/.yarn/cache/@parcel-packager-html-npm-2.9.2-7468873086-8551a11ea2.zip deleted file mode 100644 index 785643e05c..0000000000 Binary files a/.yarn/cache/@parcel-packager-html-npm-2.9.2-7468873086-8551a11ea2.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-packager-js-npm-2.10.0-f84ec4cc7b-9b62598864.zip b/.yarn/cache/@parcel-packager-js-npm-2.10.0-f84ec4cc7b-9b62598864.zip new file mode 100644 index 0000000000..9084795b65 Binary files /dev/null and b/.yarn/cache/@parcel-packager-js-npm-2.10.0-f84ec4cc7b-9b62598864.zip differ diff --git a/.yarn/cache/@parcel-packager-js-npm-2.9.2-dd0cd199e4-49fef23dc6.zip b/.yarn/cache/@parcel-packager-js-npm-2.9.2-dd0cd199e4-49fef23dc6.zip deleted file mode 100644 index 05aac7f1d5..0000000000 Binary files a/.yarn/cache/@parcel-packager-js-npm-2.9.2-dd0cd199e4-49fef23dc6.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-packager-raw-npm-2.9.2-1a5961f4f5-b56412fc29.zip b/.yarn/cache/@parcel-packager-raw-npm-2.10.0-01ef1b8e3e-492fe07ae5.zip similarity index 60% rename from .yarn/cache/@parcel-packager-raw-npm-2.9.2-1a5961f4f5-b56412fc29.zip rename to .yarn/cache/@parcel-packager-raw-npm-2.10.0-01ef1b8e3e-492fe07ae5.zip index af1c0b8f05..132ebb4043 100644 Binary files a/.yarn/cache/@parcel-packager-raw-npm-2.9.2-1a5961f4f5-b56412fc29.zip and b/.yarn/cache/@parcel-packager-raw-npm-2.10.0-01ef1b8e3e-492fe07ae5.zip differ diff --git a/.yarn/cache/@parcel-packager-svg-npm-2.9.2-1d3bdae8e7-ef38f501fb.zip b/.yarn/cache/@parcel-packager-svg-npm-2.10.0-22326715bd-f49d7f3b88.zip similarity index 80% rename from .yarn/cache/@parcel-packager-svg-npm-2.9.2-1d3bdae8e7-ef38f501fb.zip rename to .yarn/cache/@parcel-packager-svg-npm-2.10.0-22326715bd-f49d7f3b88.zip index 05333558bf..c3031c1920 100644 Binary files a/.yarn/cache/@parcel-packager-svg-npm-2.9.2-1d3bdae8e7-ef38f501fb.zip and b/.yarn/cache/@parcel-packager-svg-npm-2.10.0-22326715bd-f49d7f3b88.zip differ diff --git a/.yarn/cache/@parcel-packager-wasm-npm-2.10.0-b1d2cd8f88-d9a13eb838.zip b/.yarn/cache/@parcel-packager-wasm-npm-2.10.0-b1d2cd8f88-d9a13eb838.zip new file mode 100644 index 0000000000..2cde1a739e Binary files /dev/null and b/.yarn/cache/@parcel-packager-wasm-npm-2.10.0-b1d2cd8f88-d9a13eb838.zip differ diff --git a/.yarn/cache/@parcel-plugin-npm-2.9.2-a6fcdfe690-3104b076ec.zip b/.yarn/cache/@parcel-plugin-npm-2.10.0-efbc58a209-e13ba6e7e5.zip similarity index 76% rename from .yarn/cache/@parcel-plugin-npm-2.9.2-a6fcdfe690-3104b076ec.zip rename to .yarn/cache/@parcel-plugin-npm-2.10.0-efbc58a209-e13ba6e7e5.zip index 03332d6f71..0c18974840 100644 Binary files a/.yarn/cache/@parcel-plugin-npm-2.9.2-a6fcdfe690-3104b076ec.zip and b/.yarn/cache/@parcel-plugin-npm-2.10.0-efbc58a209-e13ba6e7e5.zip differ diff --git a/.yarn/cache/@parcel-profiler-npm-2.9.2-f86abba7d6-390faeb1a0.zip b/.yarn/cache/@parcel-profiler-npm-2.10.0-b1ba499bc1-78d545edb7.zip similarity index 87% rename from .yarn/cache/@parcel-profiler-npm-2.9.2-f86abba7d6-390faeb1a0.zip rename to .yarn/cache/@parcel-profiler-npm-2.10.0-b1ba499bc1-78d545edb7.zip index 168a9dd9d0..7a39442c82 100644 Binary files a/.yarn/cache/@parcel-profiler-npm-2.9.2-f86abba7d6-390faeb1a0.zip and b/.yarn/cache/@parcel-profiler-npm-2.10.0-b1ba499bc1-78d545edb7.zip differ diff --git a/.yarn/cache/@parcel-reporter-cli-npm-2.10.0-083fc2f2d6-0137a91e45.zip b/.yarn/cache/@parcel-reporter-cli-npm-2.10.0-083fc2f2d6-0137a91e45.zip new file mode 100644 index 0000000000..cafce4c242 Binary files /dev/null and b/.yarn/cache/@parcel-reporter-cli-npm-2.10.0-083fc2f2d6-0137a91e45.zip differ diff --git a/.yarn/cache/@parcel-reporter-cli-npm-2.9.2-04a53602ed-d9b5ca577f.zip b/.yarn/cache/@parcel-reporter-cli-npm-2.9.2-04a53602ed-d9b5ca577f.zip deleted file mode 100644 index 1f586a7584..0000000000 Binary files a/.yarn/cache/@parcel-reporter-cli-npm-2.9.2-04a53602ed-d9b5ca577f.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-reporter-dev-server-npm-2.10.0-2f19cb846e-e72fd6ec09.zip b/.yarn/cache/@parcel-reporter-dev-server-npm-2.10.0-2f19cb846e-e72fd6ec09.zip new file mode 100644 index 0000000000..655d45cf19 Binary files /dev/null and b/.yarn/cache/@parcel-reporter-dev-server-npm-2.10.0-2f19cb846e-e72fd6ec09.zip differ diff --git a/.yarn/cache/@parcel-reporter-dev-server-npm-2.9.2-a9675da842-1fdc8d48fd.zip b/.yarn/cache/@parcel-reporter-dev-server-npm-2.9.2-a9675da842-1fdc8d48fd.zip deleted file mode 100644 index 0d5b83e2f3..0000000000 Binary files a/.yarn/cache/@parcel-reporter-dev-server-npm-2.9.2-a9675da842-1fdc8d48fd.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-reporter-tracer-npm-2.9.2-ad4deef524-e08623e902.zip b/.yarn/cache/@parcel-reporter-tracer-npm-2.10.0-184a89e262-0f8249b998.zip similarity index 75% rename from .yarn/cache/@parcel-reporter-tracer-npm-2.9.2-ad4deef524-e08623e902.zip rename to .yarn/cache/@parcel-reporter-tracer-npm-2.10.0-184a89e262-0f8249b998.zip index e23db8ae75..533f83cc16 100644 Binary files a/.yarn/cache/@parcel-reporter-tracer-npm-2.9.2-ad4deef524-e08623e902.zip and b/.yarn/cache/@parcel-reporter-tracer-npm-2.10.0-184a89e262-0f8249b998.zip differ diff --git a/.yarn/cache/@parcel-resolver-default-npm-2.10.0-ca49f01a75-c82e2d3c4b.zip b/.yarn/cache/@parcel-resolver-default-npm-2.10.0-ca49f01a75-c82e2d3c4b.zip new file mode 100644 index 0000000000..39ac48c80c Binary files /dev/null and b/.yarn/cache/@parcel-resolver-default-npm-2.10.0-ca49f01a75-c82e2d3c4b.zip differ diff --git a/.yarn/cache/@parcel-resolver-default-npm-2.9.2-130b2b9fc6-dc502cd62f.zip b/.yarn/cache/@parcel-resolver-default-npm-2.9.2-130b2b9fc6-dc502cd62f.zip deleted file mode 100644 index 03e9fbfaff..0000000000 Binary files a/.yarn/cache/@parcel-resolver-default-npm-2.9.2-130b2b9fc6-dc502cd62f.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.10.0-c6b7773a09-12928462c8.zip b/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.10.0-c6b7773a09-12928462c8.zip new file mode 100644 index 0000000000..7f1d968b8a Binary files /dev/null and b/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.10.0-c6b7773a09-12928462c8.zip differ diff --git a/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.9.2-c5978cbee9-4d08afa026.zip b/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.9.2-c5978cbee9-4d08afa026.zip deleted file mode 100644 index 19210d13c7..0000000000 Binary files a/.yarn/cache/@parcel-runtime-browser-hmr-npm-2.9.2-c5978cbee9-4d08afa026.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-runtime-js-npm-2.10.0-6b4cf1576c-3bbd64c5b9.zip b/.yarn/cache/@parcel-runtime-js-npm-2.10.0-6b4cf1576c-3bbd64c5b9.zip new file mode 100644 index 0000000000..10fc3360d3 Binary files /dev/null and b/.yarn/cache/@parcel-runtime-js-npm-2.10.0-6b4cf1576c-3bbd64c5b9.zip differ diff --git a/.yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip b/.yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip deleted file mode 100644 index cf0e818b93..0000000000 Binary files a/.yarn/cache/@parcel-runtime-js-npm-2.9.2-617b40156f-8dada6fecf.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-runtime-react-refresh-npm-2.10.0-b1f6c62bdf-dc567474a1.zip b/.yarn/cache/@parcel-runtime-react-refresh-npm-2.10.0-b1f6c62bdf-dc567474a1.zip new file mode 100644 index 0000000000..75e403b9dd Binary files /dev/null and b/.yarn/cache/@parcel-runtime-react-refresh-npm-2.10.0-b1f6c62bdf-dc567474a1.zip differ diff --git a/.yarn/cache/@parcel-runtime-react-refresh-npm-2.9.2-dc674a15e8-16631bc020.zip b/.yarn/cache/@parcel-runtime-react-refresh-npm-2.9.2-dc674a15e8-16631bc020.zip deleted file mode 100644 index 2d7f772c3d..0000000000 Binary files a/.yarn/cache/@parcel-runtime-react-refresh-npm-2.9.2-dc674a15e8-16631bc020.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-runtime-service-worker-npm-2.9.2-c099b0c8ba-21180ba472.zip b/.yarn/cache/@parcel-runtime-service-worker-npm-2.10.0-3ca99a5366-d0bfd113b9.zip similarity index 64% rename from .yarn/cache/@parcel-runtime-service-worker-npm-2.9.2-c099b0c8ba-21180ba472.zip rename to .yarn/cache/@parcel-runtime-service-worker-npm-2.10.0-3ca99a5366-d0bfd113b9.zip index d148d365e4..8602ad88a3 100644 Binary files a/.yarn/cache/@parcel-runtime-service-worker-npm-2.9.2-c099b0c8ba-21180ba472.zip and b/.yarn/cache/@parcel-runtime-service-worker-npm-2.10.0-3ca99a5366-d0bfd113b9.zip differ diff --git a/.yarn/cache/@parcel-transformer-js-npm-2.9.2-f233609d97-0ea4ff8282.zip b/.yarn/cache/@parcel-rust-npm-2.10.0-99038406b0-466a78d27d.zip similarity index 73% rename from .yarn/cache/@parcel-transformer-js-npm-2.9.2-f233609d97-0ea4ff8282.zip rename to .yarn/cache/@parcel-rust-npm-2.10.0-99038406b0-466a78d27d.zip index 4c95eb7242..22f9773a93 100644 Binary files a/.yarn/cache/@parcel-transformer-js-npm-2.9.2-f233609d97-0ea4ff8282.zip and b/.yarn/cache/@parcel-rust-npm-2.10.0-99038406b0-466a78d27d.zip differ diff --git a/.yarn/cache/@parcel-transformer-babel-npm-2.9.2-ff6950ff1f-4177b0f176.zip b/.yarn/cache/@parcel-transformer-babel-npm-2.10.0-fb74ad8c73-fd64092c9c.zip similarity index 96% rename from .yarn/cache/@parcel-transformer-babel-npm-2.9.2-ff6950ff1f-4177b0f176.zip rename to .yarn/cache/@parcel-transformer-babel-npm-2.10.0-fb74ad8c73-fd64092c9c.zip index 32844f6505..df186d3d17 100644 Binary files a/.yarn/cache/@parcel-transformer-babel-npm-2.9.2-ff6950ff1f-4177b0f176.zip and b/.yarn/cache/@parcel-transformer-babel-npm-2.10.0-fb74ad8c73-fd64092c9c.zip differ diff --git a/.yarn/cache/@parcel-transformer-css-npm-2.10.0-4fc35c8005-acc26e9b3d.zip b/.yarn/cache/@parcel-transformer-css-npm-2.10.0-4fc35c8005-acc26e9b3d.zip new file mode 100644 index 0000000000..9ad2a3992a Binary files /dev/null and b/.yarn/cache/@parcel-transformer-css-npm-2.10.0-4fc35c8005-acc26e9b3d.zip differ diff --git a/.yarn/cache/@parcel-transformer-css-npm-2.9.2-87b7d1818d-4aacbe62fa.zip b/.yarn/cache/@parcel-transformer-css-npm-2.9.2-87b7d1818d-4aacbe62fa.zip deleted file mode 100644 index 860f2eb3e6..0000000000 Binary files a/.yarn/cache/@parcel-transformer-css-npm-2.9.2-87b7d1818d-4aacbe62fa.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-transformer-html-npm-2.9.2-1265e03787-baf4047c55.zip b/.yarn/cache/@parcel-transformer-html-npm-2.10.0-b6d2228044-f28e0d3606.zip similarity index 78% rename from .yarn/cache/@parcel-transformer-html-npm-2.9.2-1265e03787-baf4047c55.zip rename to .yarn/cache/@parcel-transformer-html-npm-2.10.0-b6d2228044-f28e0d3606.zip index c07ab4b5fd..5a84fa37da 100644 Binary files a/.yarn/cache/@parcel-transformer-html-npm-2.9.2-1265e03787-baf4047c55.zip and b/.yarn/cache/@parcel-transformer-html-npm-2.10.0-b6d2228044-f28e0d3606.zip differ diff --git a/.yarn/cache/@parcel-transformer-image-npm-2.9.2-9c204c156c-197ffd8245.zip b/.yarn/cache/@parcel-transformer-image-npm-2.10.0-e63bd526ed-61a47d7d8e.zip similarity index 86% rename from .yarn/cache/@parcel-transformer-image-npm-2.9.2-9c204c156c-197ffd8245.zip rename to .yarn/cache/@parcel-transformer-image-npm-2.10.0-e63bd526ed-61a47d7d8e.zip index f07dad4bf2..18ec9cbd62 100644 Binary files a/.yarn/cache/@parcel-transformer-image-npm-2.9.2-9c204c156c-197ffd8245.zip and b/.yarn/cache/@parcel-transformer-image-npm-2.10.0-e63bd526ed-61a47d7d8e.zip differ diff --git a/.yarn/cache/@parcel-transformer-inline-string-npm-2.9.2-fd24e64c5c-d9146597b4.zip b/.yarn/cache/@parcel-transformer-inline-string-npm-2.10.0-44c9b349db-618c919108.zip similarity index 56% rename from .yarn/cache/@parcel-transformer-inline-string-npm-2.9.2-fd24e64c5c-d9146597b4.zip rename to .yarn/cache/@parcel-transformer-inline-string-npm-2.10.0-44c9b349db-618c919108.zip index 8cbf659137..636b8cafdc 100644 Binary files a/.yarn/cache/@parcel-transformer-inline-string-npm-2.9.2-fd24e64c5c-d9146597b4.zip and b/.yarn/cache/@parcel-transformer-inline-string-npm-2.10.0-44c9b349db-618c919108.zip differ diff --git a/.yarn/cache/@parcel-transformer-js-npm-2.10.0-132e460926-e9944ce77c.zip b/.yarn/cache/@parcel-transformer-js-npm-2.10.0-132e460926-e9944ce77c.zip new file mode 100644 index 0000000000..ff6263c541 Binary files /dev/null and b/.yarn/cache/@parcel-transformer-js-npm-2.10.0-132e460926-e9944ce77c.zip differ diff --git a/.yarn/cache/@parcel-transformer-json-npm-2.9.2-6294f04574-656c01128e.zip b/.yarn/cache/@parcel-transformer-json-npm-2.10.0-5525143f86-9c7aceb8e6.zip similarity index 61% rename from .yarn/cache/@parcel-transformer-json-npm-2.9.2-6294f04574-656c01128e.zip rename to .yarn/cache/@parcel-transformer-json-npm-2.10.0-5525143f86-9c7aceb8e6.zip index 66cb348dd4..e821a47649 100644 Binary files a/.yarn/cache/@parcel-transformer-json-npm-2.9.2-6294f04574-656c01128e.zip and b/.yarn/cache/@parcel-transformer-json-npm-2.10.0-5525143f86-9c7aceb8e6.zip differ diff --git a/.yarn/cache/@parcel-transformer-postcss-npm-2.9.2-66e7b1728c-4c514e8098.zip b/.yarn/cache/@parcel-transformer-postcss-npm-2.10.0-c1f60c708a-2e524bd513.zip similarity index 53% rename from .yarn/cache/@parcel-transformer-postcss-npm-2.9.2-66e7b1728c-4c514e8098.zip rename to .yarn/cache/@parcel-transformer-postcss-npm-2.10.0-c1f60c708a-2e524bd513.zip index 34402629c4..5e78f70b2d 100644 Binary files a/.yarn/cache/@parcel-transformer-postcss-npm-2.9.2-66e7b1728c-4c514e8098.zip and b/.yarn/cache/@parcel-transformer-postcss-npm-2.10.0-c1f60c708a-2e524bd513.zip differ diff --git a/.yarn/cache/@parcel-transformer-posthtml-npm-2.9.2-e6929cf94c-a88988f714.zip b/.yarn/cache/@parcel-transformer-posthtml-npm-2.10.0-31d54ed3f0-7de343f0f9.zip similarity index 77% rename from .yarn/cache/@parcel-transformer-posthtml-npm-2.9.2-e6929cf94c-a88988f714.zip rename to .yarn/cache/@parcel-transformer-posthtml-npm-2.10.0-31d54ed3f0-7de343f0f9.zip index 23e2b07331..5228dc9af8 100644 Binary files a/.yarn/cache/@parcel-transformer-posthtml-npm-2.9.2-e6929cf94c-a88988f714.zip and b/.yarn/cache/@parcel-transformer-posthtml-npm-2.10.0-31d54ed3f0-7de343f0f9.zip differ diff --git a/.yarn/cache/@parcel-transformer-raw-npm-2.9.2-77f972073e-1603569c73.zip b/.yarn/cache/@parcel-transformer-raw-npm-2.10.0-d7cd50f767-c7b1b9c6f7.zip similarity index 79% rename from .yarn/cache/@parcel-transformer-raw-npm-2.9.2-77f972073e-1603569c73.zip rename to .yarn/cache/@parcel-transformer-raw-npm-2.10.0-d7cd50f767-c7b1b9c6f7.zip index 83f3420800..3c536f6417 100644 Binary files a/.yarn/cache/@parcel-transformer-raw-npm-2.9.2-77f972073e-1603569c73.zip and b/.yarn/cache/@parcel-transformer-raw-npm-2.10.0-d7cd50f767-c7b1b9c6f7.zip differ diff --git a/.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.9.2-9ece2e6944-9de36a5fa4.zip b/.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.10.0-4c3ddcc095-fc3163bcb0.zip similarity index 80% rename from .yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.9.2-9ece2e6944-9de36a5fa4.zip rename to .yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.10.0-4c3ddcc095-fc3163bcb0.zip index 04e907452e..67e2da6e22 100644 Binary files a/.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.9.2-9ece2e6944-9de36a5fa4.zip and b/.yarn/cache/@parcel-transformer-react-refresh-wrap-npm-2.10.0-4c3ddcc095-fc3163bcb0.zip differ diff --git a/.yarn/cache/@parcel-transformer-sass-npm-2.10.0-6c5f188bcc-2d697077ac.zip b/.yarn/cache/@parcel-transformer-sass-npm-2.10.0-6c5f188bcc-2d697077ac.zip new file mode 100644 index 0000000000..3caad5c9a7 Binary files /dev/null and b/.yarn/cache/@parcel-transformer-sass-npm-2.10.0-6c5f188bcc-2d697077ac.zip differ diff --git a/.yarn/cache/@parcel-transformer-sass-npm-2.9.2-29ff1924b6-928b8767f3.zip b/.yarn/cache/@parcel-transformer-sass-npm-2.9.2-29ff1924b6-928b8767f3.zip deleted file mode 100644 index 472d33beec..0000000000 Binary files a/.yarn/cache/@parcel-transformer-sass-npm-2.9.2-29ff1924b6-928b8767f3.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-transformer-svg-npm-2.9.2-f5135ba1d5-1b8b2c60ee.zip b/.yarn/cache/@parcel-transformer-svg-npm-2.10.0-881c72cd1f-d5f55f6eee.zip similarity index 56% rename from .yarn/cache/@parcel-transformer-svg-npm-2.9.2-f5135ba1d5-1b8b2c60ee.zip rename to .yarn/cache/@parcel-transformer-svg-npm-2.10.0-881c72cd1f-d5f55f6eee.zip index 7c9c8d1e8b..b6ef15207c 100644 Binary files a/.yarn/cache/@parcel-transformer-svg-npm-2.9.2-f5135ba1d5-1b8b2c60ee.zip and b/.yarn/cache/@parcel-transformer-svg-npm-2.10.0-881c72cd1f-d5f55f6eee.zip differ diff --git a/.yarn/cache/@parcel-types-npm-2.10.0-270e786ba1-387aa07902.zip b/.yarn/cache/@parcel-types-npm-2.10.0-270e786ba1-387aa07902.zip new file mode 100644 index 0000000000..59297ef889 Binary files /dev/null and b/.yarn/cache/@parcel-types-npm-2.10.0-270e786ba1-387aa07902.zip differ diff --git a/.yarn/cache/@parcel-types-npm-2.9.2-da147a7755-976fb44534.zip b/.yarn/cache/@parcel-types-npm-2.9.2-da147a7755-976fb44534.zip deleted file mode 100644 index aaf472d803..0000000000 Binary files a/.yarn/cache/@parcel-types-npm-2.9.2-da147a7755-976fb44534.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-utils-npm-2.10.0-1f25fbc366-9f4953ff9a.zip b/.yarn/cache/@parcel-utils-npm-2.10.0-1f25fbc366-9f4953ff9a.zip new file mode 100644 index 0000000000..5162312f75 Binary files /dev/null and b/.yarn/cache/@parcel-utils-npm-2.10.0-1f25fbc366-9f4953ff9a.zip differ diff --git a/.yarn/cache/@parcel-utils-npm-2.9.2-267a2360a2-130cf1a6cb.zip b/.yarn/cache/@parcel-utils-npm-2.9.2-267a2360a2-130cf1a6cb.zip deleted file mode 100644 index e272fb117c..0000000000 Binary files a/.yarn/cache/@parcel-utils-npm-2.9.2-267a2360a2-130cf1a6cb.zip and /dev/null differ diff --git a/.yarn/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip b/.yarn/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip similarity index 64% rename from .yarn/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip rename to .yarn/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip index dac46b8597..d3e73822e5 100644 Binary files a/.yarn/cache/@parcel-workers-npm-2.9.2-9acb007028-7e980749c1.zip and b/.yarn/cache/@parcel-workers-npm-2.10.0-7f8aa5ad5a-e8b1701b53.zip differ diff --git a/.yarn/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip b/.yarn/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip deleted file mode 100644 index d898c5035c..0000000000 Binary files a/.yarn/cache/@rollup-pluginutils-npm-5.0.2-6aa9d0ddd4-edea15e543.zip and /dev/null differ diff --git a/.yarn/cache/@rollup-pluginutils-npm-5.0.5-cfa8fafc53-dcd4d6e3cb.zip b/.yarn/cache/@rollup-pluginutils-npm-5.0.5-cfa8fafc53-dcd4d6e3cb.zip new file mode 100644 index 0000000000..91a5a69139 Binary files /dev/null and b/.yarn/cache/@rollup-pluginutils-npm-5.0.5-cfa8fafc53-dcd4d6e3cb.zip differ diff --git a/.yarn/cache/@types-katex-npm-0.14.0-acd5bc3e87-330e0d0337.zip b/.yarn/cache/@types-katex-npm-0.14.0-acd5bc3e87-330e0d0337.zip deleted file mode 100644 index 79825772d5..0000000000 Binary files a/.yarn/cache/@types-katex-npm-0.14.0-acd5bc3e87-330e0d0337.zip and /dev/null differ diff --git a/.yarn/cache/@types-katex-npm-0.16.5-ff9336f176-a1ce22cd87.zip b/.yarn/cache/@types-katex-npm-0.16.5-ff9336f176-a1ce22cd87.zip new file mode 100644 index 0000000000..92aafc4818 Binary files /dev/null and b/.yarn/cache/@types-katex-npm-0.16.5-ff9336f176-a1ce22cd87.zip differ diff --git a/.yarn/cache/@types-lodash-es-npm-4.17.10-a7dae21818-129e9dde83.zip b/.yarn/cache/@types-lodash-es-npm-4.17.10-a7dae21818-129e9dde83.zip new file mode 100644 index 0000000000..d0043c3a60 Binary files /dev/null and b/.yarn/cache/@types-lodash-es-npm-4.17.10-a7dae21818-129e9dde83.zip differ diff --git a/.yarn/cache/@types-lodash-es-npm-4.17.6-fd5abbdc74-9bd239dd52.zip b/.yarn/cache/@types-lodash-es-npm-4.17.6-fd5abbdc74-9bd239dd52.zip deleted file mode 100644 index 3bd29bcbad..0000000000 Binary files a/.yarn/cache/@types-lodash-es-npm-4.17.6-fd5abbdc74-9bd239dd52.zip and /dev/null differ diff --git a/.yarn/cache/@types-lodash-npm-4.14.200-8559f51fce-6471f8bb5d.zip b/.yarn/cache/@types-lodash-npm-4.14.200-8559f51fce-6471f8bb5d.zip new file mode 100644 index 0000000000..ae8b2ba4c0 Binary files /dev/null and b/.yarn/cache/@types-lodash-npm-4.14.200-8559f51fce-6471f8bb5d.zip differ diff --git a/.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip b/.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip new file mode 100644 index 0000000000..598a36e085 Binary files /dev/null and b/.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip differ diff --git a/.yarn/cache/@vitejs-plugin-vue-npm-4.2.3-f2af5ce2fe-1c70c1cd18.zip b/.yarn/cache/@vitejs-plugin-vue-npm-4.2.3-f2af5ce2fe-1c70c1cd18.zip deleted file mode 100644 index 4060d82440..0000000000 Binary files a/.yarn/cache/@vitejs-plugin-vue-npm-4.2.3-f2af5ce2fe-1c70c1cd18.zip and /dev/null differ diff --git a/.yarn/cache/@vitejs-plugin-vue-npm-4.4.0-c33d65c6f6-37b6987951.zip b/.yarn/cache/@vitejs-plugin-vue-npm-4.4.0-c33d65c6f6-37b6987951.zip new file mode 100644 index 0000000000..96bb8b3013 Binary files /dev/null and b/.yarn/cache/@vitejs-plugin-vue-npm-4.4.0-c33d65c6f6-37b6987951.zip differ diff --git a/.yarn/cache/@vue-compiler-core-npm-3.3.4-e514bded25-5437942ea6.zip b/.yarn/cache/@vue-compiler-core-npm-3.3.4-e514bded25-5437942ea6.zip deleted file mode 100644 index c09b47c6a8..0000000000 Binary files a/.yarn/cache/@vue-compiler-core-npm-3.3.4-e514bded25-5437942ea6.zip and /dev/null differ diff --git a/.yarn/cache/@vue-compiler-core-npm-3.3.7-584a90831e-94ac56a5a8.zip b/.yarn/cache/@vue-compiler-core-npm-3.3.7-584a90831e-94ac56a5a8.zip new file mode 100644 index 0000000000..7a97cc0f06 Binary files /dev/null and b/.yarn/cache/@vue-compiler-core-npm-3.3.7-584a90831e-94ac56a5a8.zip differ diff --git a/.yarn/cache/@vue-compiler-dom-npm-3.3.4-029250af79-1c2ac0c89d.zip b/.yarn/cache/@vue-compiler-dom-npm-3.3.4-029250af79-1c2ac0c89d.zip deleted file mode 100644 index cc5c3904dd..0000000000 Binary files a/.yarn/cache/@vue-compiler-dom-npm-3.3.4-029250af79-1c2ac0c89d.zip and /dev/null differ diff --git a/.yarn/cache/@vue-compiler-dom-npm-3.3.7-53a75677b1-d54c49fd82.zip b/.yarn/cache/@vue-compiler-dom-npm-3.3.7-53a75677b1-d54c49fd82.zip new file mode 100644 index 0000000000..e575fe111a Binary files /dev/null and b/.yarn/cache/@vue-compiler-dom-npm-3.3.7-53a75677b1-d54c49fd82.zip differ diff --git a/.yarn/cache/@vue-compiler-sfc-npm-3.3.4-783aff746b-0a0adfdd3e.zip b/.yarn/cache/@vue-compiler-sfc-npm-3.3.4-783aff746b-0a0adfdd3e.zip deleted file mode 100644 index 40573c4dc3..0000000000 Binary files a/.yarn/cache/@vue-compiler-sfc-npm-3.3.4-783aff746b-0a0adfdd3e.zip and /dev/null differ diff --git a/.yarn/cache/@vue-compiler-sfc-npm-3.3.7-57757e7ccc-593c0b00f3.zip b/.yarn/cache/@vue-compiler-sfc-npm-3.3.7-57757e7ccc-593c0b00f3.zip new file mode 100644 index 0000000000..54122b57ef Binary files /dev/null and b/.yarn/cache/@vue-compiler-sfc-npm-3.3.7-57757e7ccc-593c0b00f3.zip differ diff --git a/.yarn/cache/@vue-compiler-ssr-npm-3.3.4-9c5036c29f-5d1875d55e.zip b/.yarn/cache/@vue-compiler-ssr-npm-3.3.4-9c5036c29f-5d1875d55e.zip deleted file mode 100644 index 2fb9d33d8a..0000000000 Binary files a/.yarn/cache/@vue-compiler-ssr-npm-3.3.4-9c5036c29f-5d1875d55e.zip and /dev/null differ diff --git a/.yarn/cache/@vue-compiler-ssr-npm-3.3.7-61efc0860e-42f8ddc9ff.zip b/.yarn/cache/@vue-compiler-ssr-npm-3.3.7-61efc0860e-42f8ddc9ff.zip new file mode 100644 index 0000000000..31da201aef Binary files /dev/null and b/.yarn/cache/@vue-compiler-ssr-npm-3.3.7-61efc0860e-42f8ddc9ff.zip differ diff --git a/.yarn/cache/@vue-reactivity-npm-3.3.4-4bb841d3a9-81c3d0c587.zip b/.yarn/cache/@vue-reactivity-npm-3.3.4-4bb841d3a9-81c3d0c587.zip deleted file mode 100644 index 38458a8899..0000000000 Binary files a/.yarn/cache/@vue-reactivity-npm-3.3.4-4bb841d3a9-81c3d0c587.zip and /dev/null differ diff --git a/.yarn/cache/@vue-reactivity-npm-3.3.7-0bf3bc7094-16b629c997.zip b/.yarn/cache/@vue-reactivity-npm-3.3.7-0bf3bc7094-16b629c997.zip new file mode 100644 index 0000000000..38b5fa6d04 Binary files /dev/null and b/.yarn/cache/@vue-reactivity-npm-3.3.7-0bf3bc7094-16b629c997.zip differ diff --git a/.yarn/cache/@vue-reactivity-transform-npm-3.3.4-bfbf394bf7-b425e78b20.zip b/.yarn/cache/@vue-reactivity-transform-npm-3.3.7-7c404f0363-f88d39c8a4.zip similarity index 74% rename from .yarn/cache/@vue-reactivity-transform-npm-3.3.4-bfbf394bf7-b425e78b20.zip rename to .yarn/cache/@vue-reactivity-transform-npm-3.3.7-7c404f0363-f88d39c8a4.zip index 4759f812bd..4575a9337f 100644 Binary files a/.yarn/cache/@vue-reactivity-transform-npm-3.3.4-bfbf394bf7-b425e78b20.zip and b/.yarn/cache/@vue-reactivity-transform-npm-3.3.7-7c404f0363-f88d39c8a4.zip differ diff --git a/.yarn/cache/@vue-runtime-core-npm-3.3.4-4a56fcce5e-d402da5126.zip b/.yarn/cache/@vue-runtime-core-npm-3.3.4-4a56fcce5e-d402da5126.zip deleted file mode 100644 index aa4a131e69..0000000000 Binary files a/.yarn/cache/@vue-runtime-core-npm-3.3.4-4a56fcce5e-d402da5126.zip and /dev/null differ diff --git a/.yarn/cache/@vue-runtime-core-npm-3.3.7-61d8aab53a-3fd38c6831.zip b/.yarn/cache/@vue-runtime-core-npm-3.3.7-61d8aab53a-3fd38c6831.zip new file mode 100644 index 0000000000..368c70512c Binary files /dev/null and b/.yarn/cache/@vue-runtime-core-npm-3.3.7-61d8aab53a-3fd38c6831.zip differ diff --git a/.yarn/cache/@vue-runtime-dom-npm-3.3.4-554b8c4277-dac9ada7f6.zip b/.yarn/cache/@vue-runtime-dom-npm-3.3.4-554b8c4277-dac9ada7f6.zip deleted file mode 100644 index b1011236c7..0000000000 Binary files a/.yarn/cache/@vue-runtime-dom-npm-3.3.4-554b8c4277-dac9ada7f6.zip and /dev/null differ diff --git a/.yarn/cache/@vue-runtime-dom-npm-3.3.7-07cf6cc840-9331ea0886.zip b/.yarn/cache/@vue-runtime-dom-npm-3.3.7-07cf6cc840-9331ea0886.zip new file mode 100644 index 0000000000..bd517fed0a Binary files /dev/null and b/.yarn/cache/@vue-runtime-dom-npm-3.3.7-07cf6cc840-9331ea0886.zip differ diff --git a/.yarn/cache/@vue-server-renderer-npm-3.3.4-75b963f24d-e8598ed1a4.zip b/.yarn/cache/@vue-server-renderer-npm-3.3.4-75b963f24d-e8598ed1a4.zip deleted file mode 100644 index 9917a9c898..0000000000 Binary files a/.yarn/cache/@vue-server-renderer-npm-3.3.4-75b963f24d-e8598ed1a4.zip and /dev/null differ diff --git a/.yarn/cache/@vue-server-renderer-npm-3.3.7-a66f8ec338-c2e673d6f7.zip b/.yarn/cache/@vue-server-renderer-npm-3.3.7-a66f8ec338-c2e673d6f7.zip new file mode 100644 index 0000000000..c037fccafd Binary files /dev/null and b/.yarn/cache/@vue-server-renderer-npm-3.3.7-a66f8ec338-c2e673d6f7.zip differ diff --git a/.yarn/cache/@vue-shared-npm-3.3.4-76d250afa2-12fe53ff81.zip b/.yarn/cache/@vue-shared-npm-3.3.4-76d250afa2-12fe53ff81.zip deleted file mode 100644 index 8d67c0c0d3..0000000000 Binary files a/.yarn/cache/@vue-shared-npm-3.3.4-76d250afa2-12fe53ff81.zip and /dev/null differ diff --git a/.yarn/cache/@vue-shared-npm-3.3.7-44832a6399-a6718f760b.zip b/.yarn/cache/@vue-shared-npm-3.3.7-44832a6399-a6718f760b.zip new file mode 100644 index 0000000000..c65bb7407a Binary files /dev/null and b/.yarn/cache/@vue-shared-npm-3.3.7-44832a6399-a6718f760b.zip differ diff --git a/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip b/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip new file mode 100644 index 0000000000..6820207002 Binary files /dev/null and b/.yarn/cache/acorn-npm-8.10.0-2230c9e83e-538ba38af0.zip differ diff --git a/.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip b/.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip deleted file mode 100644 index b5376b1392..0000000000 Binary files a/.yarn/cache/acorn-npm-8.8.0-9ef399ab45-7270ca82b2.zip and /dev/null differ diff --git a/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip b/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip new file mode 100644 index 0000000000..d2d609a667 Binary files /dev/null and b/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip differ diff --git a/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip b/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip deleted file mode 100644 index a1083551bf..0000000000 Binary files a/.yarn/cache/array-includes-npm-3.1.6-d0ff9d248b-f22f8cd8ba.zip and /dev/null differ diff --git a/.yarn/cache/array-includes-npm-3.1.7-d32a5ee179-06f9e4598f.zip b/.yarn/cache/array-includes-npm-3.1.7-d32a5ee179-06f9e4598f.zip new file mode 100644 index 0000000000..1f7fc2c577 Binary files /dev/null and b/.yarn/cache/array-includes-npm-3.1.7-d32a5ee179-06f9e4598f.zip differ diff --git a/.yarn/cache/array.prototype.findlastindex-npm-1.2.3-2a36f4417b-31f35d7b37.zip b/.yarn/cache/array.prototype.findlastindex-npm-1.2.3-2a36f4417b-31f35d7b37.zip new file mode 100644 index 0000000000..8aaa4a956a Binary files /dev/null and b/.yarn/cache/array.prototype.findlastindex-npm-1.2.3-2a36f4417b-31f35d7b37.zip differ diff --git a/.yarn/cache/array.prototype.flat-npm-1.3.1-e9a9e389c0-5a8415949d.zip b/.yarn/cache/array.prototype.flat-npm-1.3.2-350729f7f4-5d6b4bf102.zip similarity index 55% rename from .yarn/cache/array.prototype.flat-npm-1.3.1-e9a9e389c0-5a8415949d.zip rename to .yarn/cache/array.prototype.flat-npm-1.3.2-350729f7f4-5d6b4bf102.zip index f3e42570b9..7720137d70 100644 Binary files a/.yarn/cache/array.prototype.flat-npm-1.3.1-e9a9e389c0-5a8415949d.zip and b/.yarn/cache/array.prototype.flat-npm-1.3.2-350729f7f4-5d6b4bf102.zip differ diff --git a/.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip b/.yarn/cache/array.prototype.flatmap-npm-1.3.2-5c6a4af226-ce09fe21dc.zip similarity index 61% rename from .yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip rename to .yarn/cache/array.prototype.flatmap-npm-1.3.2-5c6a4af226-ce09fe21dc.zip index a791d28dca..2553a317f1 100644 Binary files a/.yarn/cache/array.prototype.flatmap-npm-1.3.1-c65186ca34-8c1c43a499.zip and b/.yarn/cache/array.prototype.flatmap-npm-1.3.2-5c6a4af226-ce09fe21dc.zip differ diff --git a/.yarn/cache/arraybuffer.prototype.slice-npm-1.0.2-4eda52ad8c-c200faf437.zip b/.yarn/cache/arraybuffer.prototype.slice-npm-1.0.2-4eda52ad8c-c200faf437.zip new file mode 100644 index 0000000000..559e55f81a Binary files /dev/null and b/.yarn/cache/arraybuffer.prototype.slice-npm-1.0.2-4eda52ad8c-c200faf437.zip differ diff --git a/.yarn/cache/async-validator-npm-4.1.1-470b8d5b59-88590ab8ad.zip b/.yarn/cache/async-validator-npm-4.1.1-470b8d5b59-88590ab8ad.zip deleted file mode 100644 index 71730f2e23..0000000000 Binary files a/.yarn/cache/async-validator-npm-4.1.1-470b8d5b59-88590ab8ad.zip and /dev/null differ diff --git a/.yarn/cache/async-validator-npm-4.2.5-4d61110c66-3e3d891a2e.zip b/.yarn/cache/async-validator-npm-4.2.5-4d61110c66-3e3d891a2e.zip new file mode 100644 index 0000000000..36bedd6286 Binary files /dev/null and b/.yarn/cache/async-validator-npm-4.2.5-4d61110c66-3e3d891a2e.zip differ diff --git a/.yarn/cache/bootstrap-icons-npm-1.10.5-36f80ab074-8a0cfbd237.zip b/.yarn/cache/bootstrap-icons-npm-1.11.1-9f55aea76a-d78ff24a83.zip similarity index 53% rename from .yarn/cache/bootstrap-icons-npm-1.10.5-36f80ab074-8a0cfbd237.zip rename to .yarn/cache/bootstrap-icons-npm-1.11.1-9f55aea76a-d78ff24a83.zip index 5aef05dd97..8124ba6569 100644 Binary files a/.yarn/cache/bootstrap-icons-npm-1.10.5-36f80ab074-8a0cfbd237.zip and b/.yarn/cache/bootstrap-icons-npm-1.11.1-9f55aea76a-d78ff24a83.zip differ diff --git a/.yarn/cache/bootstrap-npm-5.3.0-240c38a3b2-29a83cc8ca.zip b/.yarn/cache/bootstrap-npm-5.3.0-240c38a3b2-29a83cc8ca.zip deleted file mode 100644 index 8099bab24f..0000000000 Binary files a/.yarn/cache/bootstrap-npm-5.3.0-240c38a3b2-29a83cc8ca.zip and /dev/null differ diff --git a/.yarn/cache/bootstrap-npm-5.3.2-20b391b636-d5580b253d.zip b/.yarn/cache/bootstrap-npm-5.3.2-20b391b636-d5580b253d.zip new file mode 100644 index 0000000000..a575a52461 Binary files /dev/null and b/.yarn/cache/bootstrap-npm-5.3.2-20b391b636-d5580b253d.zip differ diff --git a/.yarn/cache/browser-fs-access-npm-0.34.1-7fcd7d9328-339865241c.zip b/.yarn/cache/browser-fs-access-npm-0.35.0-1577b5a7ba-5f3bf1ec17.zip similarity index 59% rename from .yarn/cache/browser-fs-access-npm-0.34.1-7fcd7d9328-339865241c.zip rename to .yarn/cache/browser-fs-access-npm-0.35.0-1577b5a7ba-5f3bf1ec17.zip index 0f27ba9932..2202ffed8e 100644 Binary files a/.yarn/cache/browser-fs-access-npm-0.34.1-7fcd7d9328-339865241c.zip and b/.yarn/cache/browser-fs-access-npm-0.35.0-1577b5a7ba-5f3bf1ec17.zip differ diff --git a/.yarn/cache/c8-npm-8.0.0-905b9370f4-9b107e412a.zip b/.yarn/cache/c8-npm-8.0.1-6462c8130b-2c47531d21.zip similarity index 93% rename from .yarn/cache/c8-npm-8.0.0-905b9370f4-9b107e412a.zip rename to .yarn/cache/c8-npm-8.0.1-6462c8130b-2c47531d21.zip index 210f69e8d7..ff8bf91a24 100644 Binary files a/.yarn/cache/c8-npm-8.0.0-905b9370f4-9b107e412a.zip and b/.yarn/cache/c8-npm-8.0.1-6462c8130b-2c47531d21.zip differ diff --git a/.yarn/cache/call-bind-npm-1.0.5-65600fae47-449e83ecbd.zip b/.yarn/cache/call-bind-npm-1.0.5-65600fae47-449e83ecbd.zip new file mode 100644 index 0000000000..29854c129a Binary files /dev/null and b/.yarn/cache/call-bind-npm-1.0.5-65600fae47-449e83ecbd.zip differ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001495-4b9e0263f7-c0a139a2e6.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001495-4b9e0263f7-c0a139a2e6.zip deleted file mode 100644 index 0857df82a1..0000000000 Binary files a/.yarn/cache/caniuse-lite-npm-1.0.30001495-4b9e0263f7-c0a139a2e6.zip and /dev/null differ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001538-68bfe8259b-94c5d55757.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001538-68bfe8259b-94c5d55757.zip new file mode 100644 index 0000000000..12c494fb8d Binary files /dev/null and b/.yarn/cache/caniuse-lite-npm-1.0.30001538-68bfe8259b-94c5d55757.zip differ diff --git a/.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip b/.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip similarity index 70% rename from .yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip rename to .yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip index 24f58564e4..a90643c5e5 100644 Binary files a/.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip and b/.yarn/cache/cliui-npm-8.0.1-3b029092cf-79648b3b00.zip differ diff --git a/.yarn/cache/css-render-npm-0.15.12-ff93ab2bdd-80265c5055.zip b/.yarn/cache/css-render-npm-0.15.12-ff93ab2bdd-80265c5055.zip new file mode 100644 index 0000000000..a23ef5e7b9 Binary files /dev/null and b/.yarn/cache/css-render-npm-0.15.12-ff93ab2bdd-80265c5055.zip differ diff --git a/.yarn/cache/date-fns-npm-2.28.0-c19c5add1b-a0516b2e4f.zip b/.yarn/cache/date-fns-npm-2.28.0-c19c5add1b-a0516b2e4f.zip deleted file mode 100644 index 1e88493b72..0000000000 Binary files a/.yarn/cache/date-fns-npm-2.28.0-c19c5add1b-a0516b2e4f.zip and /dev/null differ diff --git a/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-f7be015232.zip b/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-f7be015232.zip new file mode 100644 index 0000000000..f51ffd3ec9 Binary files /dev/null and b/.yarn/cache/date-fns-npm-2.30.0-895c790e0f-f7be015232.zip differ diff --git a/.yarn/cache/date-fns-tz-npm-1.3.3-4b42de3dcf-52111dffb4.zip b/.yarn/cache/date-fns-tz-npm-2.0.0-9b7996f292-a6553603a9.zip similarity index 56% rename from .yarn/cache/date-fns-tz-npm-1.3.3-4b42de3dcf-52111dffb4.zip rename to .yarn/cache/date-fns-tz-npm-2.0.0-9b7996f292-a6553603a9.zip index 856e44240d..337d3f2fd4 100644 Binary files a/.yarn/cache/date-fns-tz-npm-1.3.3-4b42de3dcf-52111dffb4.zip and b/.yarn/cache/date-fns-tz-npm-2.0.0-9b7996f292-a6553603a9.zip differ diff --git a/.yarn/cache/deepmerge-npm-4.2.2-112165ced2-a8c43a1ed8.zip b/.yarn/cache/deepmerge-npm-4.2.2-112165ced2-a8c43a1ed8.zip deleted file mode 100644 index 3e07a61c47..0000000000 Binary files a/.yarn/cache/deepmerge-npm-4.2.2-112165ced2-a8c43a1ed8.zip and /dev/null differ diff --git a/.yarn/cache/define-data-property-npm-1.1.1-2b5156d112-a29855ad3f.zip b/.yarn/cache/define-data-property-npm-1.1.1-2b5156d112-a29855ad3f.zip new file mode 100644 index 0000000000..75936e2374 Binary files /dev/null and b/.yarn/cache/define-data-property-npm-1.1.1-2b5156d112-a29855ad3f.zip differ diff --git a/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip b/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip new file mode 100644 index 0000000000..bcbfcf6e68 Binary files /dev/null and b/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip differ diff --git a/.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip b/.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip new file mode 100644 index 0000000000..1db92146ba Binary files /dev/null and b/.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip differ diff --git a/.yarn/cache/es-abstract-npm-1.21.1-28d9a4a469-23ff60d42d.zip b/.yarn/cache/es-abstract-npm-1.21.1-28d9a4a469-23ff60d42d.zip deleted file mode 100644 index 46e5d7d326..0000000000 Binary files a/.yarn/cache/es-abstract-npm-1.21.1-28d9a4a469-23ff60d42d.zip and /dev/null differ diff --git a/.yarn/cache/es-abstract-npm-1.22.3-15a58832e5-b1bdc96285.zip b/.yarn/cache/es-abstract-npm-1.22.3-15a58832e5-b1bdc96285.zip new file mode 100644 index 0000000000..f72f30d6f5 Binary files /dev/null and b/.yarn/cache/es-abstract-npm-1.22.3-15a58832e5-b1bdc96285.zip differ diff --git a/.yarn/cache/esbuild-npm-0.17.13-538abc913d-c3be8d41a3.zip b/.yarn/cache/esbuild-npm-0.17.13-538abc913d-c3be8d41a3.zip deleted file mode 100644 index 994bb8b78f..0000000000 Binary files a/.yarn/cache/esbuild-npm-0.17.13-538abc913d-c3be8d41a3.zip and /dev/null differ diff --git a/.yarn/cache/esbuild-npm-0.18.20-004a76d281-5d253614e5.zip b/.yarn/cache/esbuild-npm-0.18.20-004a76d281-5d253614e5.zip new file mode 100644 index 0000000000..74931c9be3 Binary files /dev/null and b/.yarn/cache/esbuild-npm-0.18.20-004a76d281-5d253614e5.zip differ diff --git a/.yarn/cache/eslint-import-resolver-node-npm-0.3.7-65bed19543-3379aacf1d.zip b/.yarn/cache/eslint-import-resolver-node-npm-0.3.7-65bed19543-3379aacf1d.zip deleted file mode 100644 index f9111a337b..0000000000 Binary files a/.yarn/cache/eslint-import-resolver-node-npm-0.3.7-65bed19543-3379aacf1d.zip and /dev/null differ diff --git a/.yarn/cache/eslint-import-resolver-node-npm-0.3.9-2a426afc4b-439b912712.zip b/.yarn/cache/eslint-import-resolver-node-npm-0.3.9-2a426afc4b-439b912712.zip new file mode 100644 index 0000000000..f2e17574bd Binary files /dev/null and b/.yarn/cache/eslint-import-resolver-node-npm-0.3.9-2a426afc4b-439b912712.zip differ diff --git a/.yarn/cache/eslint-module-utils-npm-2.7.4-a1640084cb-5da13645da.zip b/.yarn/cache/eslint-module-utils-npm-2.7.4-a1640084cb-5da13645da.zip deleted file mode 100644 index 005d442b0f..0000000000 Binary files a/.yarn/cache/eslint-module-utils-npm-2.7.4-a1640084cb-5da13645da.zip and /dev/null differ diff --git a/.yarn/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip b/.yarn/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip new file mode 100644 index 0000000000..964bee4e4d Binary files /dev/null and b/.yarn/cache/eslint-module-utils-npm-2.8.0-05e42bcab0-74c6dfea76.zip differ diff --git a/.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip b/.yarn/cache/eslint-npm-8.52.0-e7f048a439-fd22d1e9bd.zip similarity index 60% rename from .yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip rename to .yarn/cache/eslint-npm-8.52.0-e7f048a439-fd22d1e9bd.zip index f51b7c3897..625d3a60da 100644 Binary files a/.yarn/cache/eslint-npm-8.43.0-5757109ac8-55654ce00b.zip and b/.yarn/cache/eslint-npm-8.52.0-e7f048a439-fd22d1e9bd.zip differ diff --git a/.yarn/cache/eslint-plugin-cypress-npm-2.13.3-0ad3bff9c9-9affbcee29.zip b/.yarn/cache/eslint-plugin-cypress-npm-2.15.1-90f777d9bd-3e66fa9a94.zip similarity index 80% rename from .yarn/cache/eslint-plugin-cypress-npm-2.13.3-0ad3bff9c9-9affbcee29.zip rename to .yarn/cache/eslint-plugin-cypress-npm-2.15.1-90f777d9bd-3e66fa9a94.zip index 8ba449dd87..13724ec234 100644 Binary files a/.yarn/cache/eslint-plugin-cypress-npm-2.13.3-0ad3bff9c9-9affbcee29.zip and b/.yarn/cache/eslint-plugin-cypress-npm-2.15.1-90f777d9bd-3e66fa9a94.zip differ diff --git a/.yarn/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip b/.yarn/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip deleted file mode 100644 index 6b2c4b1f33..0000000000 Binary files a/.yarn/cache/eslint-plugin-import-npm-2.27.5-35b044b26f-f500571a38.zip and /dev/null differ diff --git a/.yarn/cache/eslint-plugin-import-npm-2.29.0-9cd6da0b0a-19ee541fb9.zip b/.yarn/cache/eslint-plugin-import-npm-2.29.0-9cd6da0b0a-19ee541fb9.zip new file mode 100644 index 0000000000..ed15139635 Binary files /dev/null and b/.yarn/cache/eslint-plugin-import-npm-2.29.0-9cd6da0b0a-19ee541fb9.zip differ diff --git a/.yarn/cache/eslint-plugin-n-npm-16.0.1-6a07bf1b46-407002bb06.zip b/.yarn/cache/eslint-plugin-n-npm-16.0.1-6a07bf1b46-407002bb06.zip deleted file mode 100644 index b635bec4f7..0000000000 Binary files a/.yarn/cache/eslint-plugin-n-npm-16.0.1-6a07bf1b46-407002bb06.zip and /dev/null differ diff --git a/.yarn/cache/eslint-plugin-n-npm-16.2.0-b2b8355312-124ba4f418.zip b/.yarn/cache/eslint-plugin-n-npm-16.2.0-b2b8355312-124ba4f418.zip new file mode 100644 index 0000000000..12357638c9 Binary files /dev/null and b/.yarn/cache/eslint-plugin-n-npm-16.2.0-b2b8355312-124ba4f418.zip differ diff --git a/.yarn/cache/eslint-plugin-vue-npm-9.15.1-9577f26965-b1cdb16e43.zip b/.yarn/cache/eslint-plugin-vue-npm-9.15.1-9577f26965-b1cdb16e43.zip deleted file mode 100644 index 7fec21f7ab..0000000000 Binary files a/.yarn/cache/eslint-plugin-vue-npm-9.15.1-9577f26965-b1cdb16e43.zip and /dev/null differ diff --git a/.yarn/cache/eslint-plugin-vue-npm-9.18.1-69de725f8c-774c1e9163.zip b/.yarn/cache/eslint-plugin-vue-npm-9.18.1-69de725f8c-774c1e9163.zip new file mode 100644 index 0000000000..d846217f1c Binary files /dev/null and b/.yarn/cache/eslint-plugin-vue-npm-9.18.1-69de725f8c-774c1e9163.zip differ diff --git a/.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip b/.yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip similarity index 64% rename from .yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip rename to .yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip index 466323f2bc..29b002eb98 100644 Binary files a/.yarn/cache/eslint-scope-npm-7.2.0-88784f5a38-64591a2d8b.zip and b/.yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip differ diff --git a/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip b/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip new file mode 100644 index 0000000000..7c61b814bf Binary files /dev/null and b/.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip differ diff --git a/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip b/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip deleted file mode 100644 index 4c6380f990..0000000000 Binary files a/.yarn/cache/espree-npm-9.5.2-5fc9506cda-6506289d6e.zip and /dev/null differ diff --git a/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip b/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip new file mode 100644 index 0000000000..0014c0574a Binary files /dev/null and b/.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip differ diff --git a/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip b/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip new file mode 100644 index 0000000000..55fbdad3a3 Binary files /dev/null and b/.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip differ diff --git a/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip b/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip deleted file mode 100644 index ac0af539ea..0000000000 Binary files a/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip and /dev/null differ diff --git a/.yarn/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-7a3f9bd98a.zip b/.yarn/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-7a3f9bd98a.zip new file mode 100644 index 0000000000..9c6ff345f9 Binary files /dev/null and b/.yarn/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-7a3f9bd98a.zip differ diff --git a/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip b/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip new file mode 100644 index 0000000000..687f611165 Binary files /dev/null and b/.yarn/cache/get-intrinsic-npm-1.2.1-ae857fd610-5b61d88552.zip differ diff --git a/.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-447ff0724d.zip b/.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-447ff0724d.zip new file mode 100644 index 0000000000..510eb5f0ed Binary files /dev/null and b/.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-447ff0724d.zip differ diff --git a/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip b/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip new file mode 100644 index 0000000000..6580ce4351 Binary files /dev/null and b/.yarn/cache/get-tsconfig-npm-4.7.2-8fbccd9fcf-1723589032.zip differ diff --git a/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip b/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip deleted file mode 100644 index 306b5aacad..0000000000 Binary files a/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip and /dev/null differ diff --git a/.yarn/cache/globals-npm-13.21.0-c0829ce1cb-86c92ca8a0.zip b/.yarn/cache/globals-npm-13.21.0-c0829ce1cb-86c92ca8a0.zip new file mode 100644 index 0000000000..597f67a92e Binary files /dev/null and b/.yarn/cache/globals-npm-13.21.0-c0829ce1cb-86c92ca8a0.zip differ diff --git a/.yarn/cache/hasown-npm-2.0.0-78b794ceef-6151c75ca1.zip b/.yarn/cache/hasown-npm-2.0.0-78b794ceef-6151c75ca1.zip new file mode 100644 index 0000000000..5454406288 Binary files /dev/null and b/.yarn/cache/hasown-npm-2.0.0-78b794ceef-6151c75ca1.zip differ diff --git a/.yarn/cache/highlight.js-npm-11.5.1-0fb1167640-bff556101d.zip b/.yarn/cache/highlight.js-npm-11.5.1-0fb1167640-bff556101d.zip deleted file mode 100644 index efbd98ed5d..0000000000 Binary files a/.yarn/cache/highlight.js-npm-11.5.1-0fb1167640-bff556101d.zip and /dev/null differ diff --git a/.yarn/cache/highlight.js-npm-11.9.0-ec99f7b12f-4043d31c5d.zip b/.yarn/cache/highlight.js-npm-11.9.0-ec99f7b12f-4043d31c5d.zip new file mode 100644 index 0000000000..7a740063fa Binary files /dev/null and b/.yarn/cache/highlight.js-npm-11.9.0-ec99f7b12f-4043d31c5d.zip differ diff --git a/.yarn/cache/html-validate-npm-8.0.5-b9c8df9b15-05c5255032.zip b/.yarn/cache/html-validate-npm-8.0.5-b9c8df9b15-05c5255032.zip deleted file mode 100644 index d9104a700a..0000000000 Binary files a/.yarn/cache/html-validate-npm-8.0.5-b9c8df9b15-05c5255032.zip and /dev/null differ diff --git a/.yarn/cache/html-validate-npm-8.7.0-7989d0b76e-f1b346bad8.zip b/.yarn/cache/html-validate-npm-8.7.0-7989d0b76e-f1b346bad8.zip new file mode 100644 index 0000000000..632fbe666f Binary files /dev/null and b/.yarn/cache/html-validate-npm-8.7.0-7989d0b76e-f1b346bad8.zip differ diff --git a/.yarn/cache/internal-slot-npm-1.0.4-9183007374-8974588d06.zip b/.yarn/cache/internal-slot-npm-1.0.4-9183007374-8974588d06.zip deleted file mode 100644 index cba2d7ba66..0000000000 Binary files a/.yarn/cache/internal-slot-npm-1.0.4-9183007374-8974588d06.zip and /dev/null differ diff --git a/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip b/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip new file mode 100644 index 0000000000..18fccd3ac2 Binary files /dev/null and b/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip differ diff --git a/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip b/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip new file mode 100644 index 0000000000..7556381d45 Binary files /dev/null and b/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip differ diff --git a/.yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip b/.yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip deleted file mode 100644 index 42dc0c31eb..0000000000 Binary files a/.yarn/cache/is-core-module-npm-2.10.0-6dff9310aa-0f3f77811f.zip and /dev/null differ diff --git a/.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip b/.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip deleted file mode 100644 index 4b89bc40ec..0000000000 Binary files a/.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip and /dev/null differ diff --git a/.yarn/cache/is-core-module-npm-2.13.0-e444c50225-053ab101fb.zip b/.yarn/cache/is-core-module-npm-2.13.0-e444c50225-053ab101fb.zip new file mode 100644 index 0000000000..636775cb5e Binary files /dev/null and b/.yarn/cache/is-core-module-npm-2.13.0-e444c50225-053ab101fb.zip differ diff --git a/.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-256559ee8a.zip b/.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-256559ee8a.zip new file mode 100644 index 0000000000..897f505685 Binary files /dev/null and b/.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-256559ee8a.zip differ diff --git a/.yarn/cache/is-typed-array-npm-1.1.12-6135c91b1a-4c89c4a3be.zip b/.yarn/cache/is-typed-array-npm-1.1.12-6135c91b1a-4c89c4a3be.zip new file mode 100644 index 0000000000..4a35c2e95f Binary files /dev/null and b/.yarn/cache/is-typed-array-npm-1.1.12-6135c91b1a-4c89c4a3be.zip differ diff --git a/.yarn/cache/isarray-npm-2.0.5-4ba522212d-bd5bbe4104.zip b/.yarn/cache/isarray-npm-2.0.5-4ba522212d-bd5bbe4104.zip new file mode 100644 index 0000000000..f46224f1cc Binary files /dev/null and b/.yarn/cache/isarray-npm-2.0.5-4ba522212d-bd5bbe4104.zip differ diff --git a/.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-fd17a1b879.zip b/.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-fd17a1b879.zip new file mode 100644 index 0000000000..b946848afd Binary files /dev/null and b/.yarn/cache/istanbul-lib-report-npm-3.0.1-b17446ab24-fd17a1b879.zip differ diff --git a/.yarn/cache/istanbul-reports-npm-3.1.4-5faaa9636c-2132983355.zip b/.yarn/cache/istanbul-reports-npm-3.1.4-5faaa9636c-2132983355.zip deleted file mode 100644 index c9a9a9c949..0000000000 Binary files a/.yarn/cache/istanbul-reports-npm-3.1.4-5faaa9636c-2132983355.zip and /dev/null differ diff --git a/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-44c4c0582f.zip b/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-44c4c0582f.zip new file mode 100644 index 0000000000..4a337c3397 Binary files /dev/null and b/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-44c4c0582f.zip differ diff --git a/.yarn/cache/jquery-npm-3.7.0-a02a382bf4-907785e133.zip b/.yarn/cache/jquery-npm-3.7.0-a02a382bf4-907785e133.zip deleted file mode 100644 index b856db0060..0000000000 Binary files a/.yarn/cache/jquery-npm-3.7.0-a02a382bf4-907785e133.zip and /dev/null differ diff --git a/.yarn/cache/jquery-npm-3.7.1-eeeac0f21e-4370b8139d.zip b/.yarn/cache/jquery-npm-3.7.1-eeeac0f21e-4370b8139d.zip new file mode 100644 index 0000000000..dda19f270f Binary files /dev/null and b/.yarn/cache/jquery-npm-3.7.1-eeeac0f21e-4370b8139d.zip differ diff --git a/.yarn/cache/lmdb-npm-2.7.11-464a53df83-44f9c7ea07.zip b/.yarn/cache/lmdb-npm-2.8.5-e5fdd937dd-b1ec76650d.zip similarity index 63% rename from .yarn/cache/lmdb-npm-2.7.11-464a53df83-44f9c7ea07.zip rename to .yarn/cache/lmdb-npm-2.8.5-e5fdd937dd-b1ec76650d.zip index 7198b68e3a..1fe6a6f48d 100644 Binary files a/.yarn/cache/lmdb-npm-2.7.11-464a53df83-44f9c7ea07.zip and b/.yarn/cache/lmdb-npm-2.8.5-e5fdd937dd-b1ec76650d.zip differ diff --git a/.yarn/cache/luxon-npm-3.3.0-bdbae9bfd5-50cf17a0dc.zip b/.yarn/cache/luxon-npm-3.3.0-bdbae9bfd5-50cf17a0dc.zip deleted file mode 100644 index e70d3dc06d..0000000000 Binary files a/.yarn/cache/luxon-npm-3.3.0-bdbae9bfd5-50cf17a0dc.zip and /dev/null differ diff --git a/.yarn/cache/luxon-npm-3.4.3-1b54517fa6-3eade81506.zip b/.yarn/cache/luxon-npm-3.4.3-1b54517fa6-3eade81506.zip new file mode 100644 index 0000000000..3089c36a81 Binary files /dev/null and b/.yarn/cache/luxon-npm-3.4.3-1b54517fa6-3eade81506.zip differ diff --git a/.yarn/cache/magic-string-npm-0.30.0-20d8e0b6e4-7bdf22e273.zip b/.yarn/cache/magic-string-npm-0.30.0-20d8e0b6e4-7bdf22e273.zip deleted file mode 100644 index 24415206d0..0000000000 Binary files a/.yarn/cache/magic-string-npm-0.30.0-20d8e0b6e4-7bdf22e273.zip and /dev/null differ diff --git a/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-da10fecff0.zip b/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-da10fecff0.zip new file mode 100644 index 0000000000..649679c9b0 Binary files /dev/null and b/.yarn/cache/magic-string-npm-0.30.5-dffb7e6a73-da10fecff0.zip differ diff --git a/.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-bf0731a2dd.zip b/.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-bf0731a2dd.zip new file mode 100644 index 0000000000..2a141eff65 Binary files /dev/null and b/.yarn/cache/make-dir-npm-4.0.0-ec3cd921cc-bf0731a2dd.zip differ diff --git a/.yarn/cache/msgpackr-npm-1.8.5-ae4e94d720-baa6d94fb6.zip b/.yarn/cache/msgpackr-npm-1.8.5-ae4e94d720-baa6d94fb6.zip deleted file mode 100644 index 6ea6775514..0000000000 Binary files a/.yarn/cache/msgpackr-npm-1.8.5-ae4e94d720-baa6d94fb6.zip and /dev/null differ diff --git a/.yarn/cache/msgpackr-npm-1.9.9-75b366d55f-b63182d99f.zip b/.yarn/cache/msgpackr-npm-1.9.9-75b366d55f-b63182d99f.zip new file mode 100644 index 0000000000..ce927778aa Binary files /dev/null and b/.yarn/cache/msgpackr-npm-1.9.9-75b366d55f-b63182d99f.zip differ diff --git a/.yarn/cache/naive-ui-npm-2.34.4-00b9952d24-0e91d9208e.zip b/.yarn/cache/naive-ui-npm-2.35.0-2bb3f5a46d-53239b8cbe.zip similarity index 56% rename from .yarn/cache/naive-ui-npm-2.34.4-00b9952d24-0e91d9208e.zip rename to .yarn/cache/naive-ui-npm-2.35.0-2bb3f5a46d-53239b8cbe.zip index 529a7dd80a..79503fb7af 100644 Binary files a/.yarn/cache/naive-ui-npm-2.34.4-00b9952d24-0e91d9208e.zip and b/.yarn/cache/naive-ui-npm-2.35.0-2bb3f5a46d-53239b8cbe.zip differ diff --git a/.yarn/cache/nanoid-npm-3.3.3-25d865be84-ada019402a.zip b/.yarn/cache/nanoid-npm-3.3.3-25d865be84-ada019402a.zip deleted file mode 100644 index d28e91f1ff..0000000000 Binary files a/.yarn/cache/nanoid-npm-3.3.3-25d865be84-ada019402a.zip and /dev/null differ diff --git a/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip b/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip new file mode 100644 index 0000000000..012df449c0 Binary files /dev/null and b/.yarn/cache/node-addon-api-npm-6.1.0-634c545b39-3a539510e6.zip differ diff --git a/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.6-e687ca7fe8-080656ae27.zip b/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.6-e687ca7fe8-080656ae27.zip deleted file mode 100644 index 49bbcb4450..0000000000 Binary files a/.yarn/cache/node-gyp-build-optional-packages-npm-5.0.6-e687ca7fe8-080656ae27.zip and /dev/null differ diff --git a/.yarn/cache/node-gyp-build-optional-packages-npm-5.1.1-ff11e179dd-f3cb197862.zip b/.yarn/cache/node-gyp-build-optional-packages-npm-5.1.1-ff11e179dd-f3cb197862.zip new file mode 100644 index 0000000000..840821996d Binary files /dev/null and b/.yarn/cache/node-gyp-build-optional-packages-npm-5.1.1-ff11e179dd-f3cb197862.zip differ diff --git a/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip b/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip deleted file mode 100644 index ec58095dc8..0000000000 Binary files a/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip and /dev/null differ diff --git a/.yarn/cache/object-inspect-npm-1.13.1-fd038a2f0a-7d9fa9221d.zip b/.yarn/cache/object-inspect-npm-1.13.1-fd038a2f0a-7d9fa9221d.zip new file mode 100644 index 0000000000..1e1bbfbcfa Binary files /dev/null and b/.yarn/cache/object-inspect-npm-1.13.1-fd038a2f0a-7d9fa9221d.zip differ diff --git a/.yarn/cache/object.fromentries-npm-2.0.7-2e38392540-7341ce246e.zip b/.yarn/cache/object.fromentries-npm-2.0.7-2e38392540-7341ce246e.zip new file mode 100644 index 0000000000..a976cc8e0e Binary files /dev/null and b/.yarn/cache/object.fromentries-npm-2.0.7-2e38392540-7341ce246e.zip differ diff --git a/.yarn/cache/object.groupby-npm-1.0.1-fc268391fe-d7959d6eaa.zip b/.yarn/cache/object.groupby-npm-1.0.1-fc268391fe-d7959d6eaa.zip new file mode 100644 index 0000000000..c67f462cfb Binary files /dev/null and b/.yarn/cache/object.groupby-npm-1.0.1-fc268391fe-d7959d6eaa.zip differ diff --git a/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip b/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip deleted file mode 100644 index 679cbd793f..0000000000 Binary files a/.yarn/cache/object.values-npm-1.1.6-ab9b67ccd3-f6fff9fd81.zip and /dev/null differ diff --git a/.yarn/cache/object.values-npm-1.1.7-deae619f88-f3e4ae4f21.zip b/.yarn/cache/object.values-npm-1.1.7-deae619f88-f3e4ae4f21.zip new file mode 100644 index 0000000000..4c12832e02 Binary files /dev/null and b/.yarn/cache/object.values-npm-1.1.7-deae619f88-f3e4ae4f21.zip differ diff --git a/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip b/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip deleted file mode 100644 index 6e6efe345b..0000000000 Binary files a/.yarn/cache/optionator-npm-0.9.1-577e397aae-dbc6fa0656.zip and /dev/null differ diff --git a/.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-0928199944.zip b/.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-0928199944.zip new file mode 100644 index 0000000000..06266323c5 Binary files /dev/null and b/.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-0928199944.zip differ diff --git a/.yarn/cache/ordered-binary-npm-1.4.0-1319bac199-951fecb400.zip b/.yarn/cache/ordered-binary-npm-1.4.1-9ad6b7c6b5-274940b4ef.zip similarity index 63% rename from .yarn/cache/ordered-binary-npm-1.4.0-1319bac199-951fecb400.zip rename to .yarn/cache/ordered-binary-npm-1.4.1-9ad6b7c6b5-274940b4ef.zip index a12082346c..35ea485c2b 100644 Binary files a/.yarn/cache/ordered-binary-npm-1.4.0-1319bac199-951fecb400.zip and b/.yarn/cache/ordered-binary-npm-1.4.1-9ad6b7c6b5-274940b4ef.zip differ diff --git a/.yarn/cache/parcel-npm-2.10.0-8e794fc289-fe25ddcf2d.zip b/.yarn/cache/parcel-npm-2.10.0-8e794fc289-fe25ddcf2d.zip new file mode 100644 index 0000000000..018a98c3b8 Binary files /dev/null and b/.yarn/cache/parcel-npm-2.10.0-8e794fc289-fe25ddcf2d.zip differ diff --git a/.yarn/cache/parcel-npm-2.9.2-a28e47b190-bd16d67104.zip b/.yarn/cache/parcel-npm-2.9.2-a28e47b190-bd16d67104.zip deleted file mode 100644 index 009f0406a1..0000000000 Binary files a/.yarn/cache/parcel-npm-2.9.2-a28e47b190-bd16d67104.zip and /dev/null differ diff --git a/.yarn/cache/pinia-npm-2.1.4-8c3fdb8813-5285b1415e.zip b/.yarn/cache/pinia-npm-2.1.4-8c3fdb8813-5285b1415e.zip deleted file mode 100644 index c99e2a5533..0000000000 Binary files a/.yarn/cache/pinia-npm-2.1.4-8c3fdb8813-5285b1415e.zip and /dev/null differ diff --git a/.yarn/cache/pinia-npm-2.1.7-195409c154-1b7882aab2.zip b/.yarn/cache/pinia-npm-2.1.7-195409c154-1b7882aab2.zip new file mode 100644 index 0000000000..352e0a2f9f Binary files /dev/null and b/.yarn/cache/pinia-npm-2.1.7-195409c154-1b7882aab2.zip differ diff --git a/.yarn/cache/postcss-npm-8.4.12-e941d78a98-248e3d0f9b.zip b/.yarn/cache/postcss-npm-8.4.12-e941d78a98-248e3d0f9b.zip deleted file mode 100644 index 4f940728b9..0000000000 Binary files a/.yarn/cache/postcss-npm-8.4.12-e941d78a98-248e3d0f9b.zip and /dev/null differ diff --git a/.yarn/cache/postcss-npm-8.4.23-d4a02a832d-8bb9d1b2ea.zip b/.yarn/cache/postcss-npm-8.4.23-d4a02a832d-8bb9d1b2ea.zip deleted file mode 100644 index 561478eb09..0000000000 Binary files a/.yarn/cache/postcss-npm-8.4.23-d4a02a832d-8bb9d1b2ea.zip and /dev/null differ diff --git a/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip b/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip new file mode 100644 index 0000000000..11d492b6c1 Binary files /dev/null and b/.yarn/cache/postcss-npm-8.4.27-2a9f5f8f40-1cdd0c2988.zip differ diff --git a/.yarn/cache/postcss-npm-8.4.31-385051a82b-1d8611341b.zip b/.yarn/cache/postcss-npm-8.4.31-385051a82b-1d8611341b.zip new file mode 100644 index 0000000000..dc7dd6671c Binary files /dev/null and b/.yarn/cache/postcss-npm-8.4.31-385051a82b-1d8611341b.zip differ diff --git a/.yarn/cache/postcss-selector-parser-npm-6.0.10-a4d7aaa270-46afaa60e3.zip b/.yarn/cache/postcss-selector-parser-npm-6.0.10-a4d7aaa270-46afaa60e3.zip deleted file mode 100644 index 496c72f70c..0000000000 Binary files a/.yarn/cache/postcss-selector-parser-npm-6.0.10-a4d7aaa270-46afaa60e3.zip and /dev/null differ diff --git a/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip new file mode 100644 index 0000000000..1623d46ce1 Binary files /dev/null and b/.yarn/cache/postcss-selector-parser-npm-6.0.13-f732d92326-f89163338a.zip differ diff --git a/.yarn/cache/regenerator-runtime-npm-0.14.0-e060897cf7-1c977ad82a.zip b/.yarn/cache/regenerator-runtime-npm-0.14.0-e060897cf7-1c977ad82a.zip new file mode 100644 index 0000000000..743dca6a4e Binary files /dev/null and b/.yarn/cache/regenerator-runtime-npm-0.14.0-e060897cf7-1c977ad82a.zip differ diff --git a/.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip b/.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip deleted file mode 100644 index 9e56b1a48b..0000000000 Binary files a/.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip and /dev/null differ diff --git a/.yarn/cache/regexp.prototype.flags-npm-1.5.1-b8faeee306-869edff002.zip b/.yarn/cache/regexp.prototype.flags-npm-1.5.1-b8faeee306-869edff002.zip new file mode 100644 index 0000000000..d73fb5c3df Binary files /dev/null and b/.yarn/cache/regexp.prototype.flags-npm-1.5.1-b8faeee306-869edff002.zip differ diff --git a/.yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip b/.yarn/cache/resolve-npm-1.22.8-098f379dfe-f8a26958aa.zip similarity index 63% rename from .yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip rename to .yarn/cache/resolve-npm-1.22.8-098f379dfe-f8a26958aa.zip index d41402c877..87b2b21978 100644 Binary files a/.yarn/cache/resolve-npm-1.22.1-3980488690-07af5fc1e8.zip and b/.yarn/cache/resolve-npm-1.22.8-098f379dfe-f8a26958aa.zip differ diff --git a/.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip b/.yarn/cache/resolve-patch-f6b5304cab-5479b7d431.zip similarity index 63% rename from .yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip rename to .yarn/cache/resolve-patch-f6b5304cab-5479b7d431.zip index c3066c3608..84c63abe59 100644 Binary files a/.yarn/cache/resolve-patch-46f9469d0d-5656f4d0be.zip and b/.yarn/cache/resolve-patch-f6b5304cab-5479b7d431.zip differ diff --git a/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip b/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip new file mode 100644 index 0000000000..53ff3fc69e Binary files /dev/null and b/.yarn/cache/resolve-pkg-maps-npm-1.0.0-135b70c854-1012afc566.zip differ diff --git a/.yarn/cache/rollup-npm-3.21.6-ae95b73a21-bb6786ee0d.zip b/.yarn/cache/rollup-npm-3.21.6-ae95b73a21-bb6786ee0d.zip deleted file mode 100644 index dcc06fb878..0000000000 Binary files a/.yarn/cache/rollup-npm-3.21.6-ae95b73a21-bb6786ee0d.zip and /dev/null differ diff --git a/.yarn/cache/rollup-npm-3.28.0-4ab1b4022e-6ded4a0d3c.zip b/.yarn/cache/rollup-npm-3.28.0-4ab1b4022e-6ded4a0d3c.zip new file mode 100644 index 0000000000..fba58d7eec Binary files /dev/null and b/.yarn/cache/rollup-npm-3.28.0-4ab1b4022e-6ded4a0d3c.zip differ diff --git a/.yarn/cache/safe-array-concat-npm-1.0.1-8a42907bbf-001ecf1d8a.zip b/.yarn/cache/safe-array-concat-npm-1.0.1-8a42907bbf-001ecf1d8a.zip new file mode 100644 index 0000000000..6789308b81 Binary files /dev/null and b/.yarn/cache/safe-array-concat-npm-1.0.1-8a42907bbf-001ecf1d8a.zip differ diff --git a/.yarn/cache/sass-npm-1.63.4-bf5f3496c2-12bde5beff.zip b/.yarn/cache/sass-npm-1.63.4-bf5f3496c2-12bde5beff.zip deleted file mode 100644 index adadea9538..0000000000 Binary files a/.yarn/cache/sass-npm-1.63.4-bf5f3496c2-12bde5beff.zip and /dev/null differ diff --git a/.yarn/cache/sass-npm-1.69.4-bea57e4b30-ed5558445b.zip b/.yarn/cache/sass-npm-1.69.4-bea57e4b30-ed5558445b.zip new file mode 100644 index 0000000000..e9db6b0c8c Binary files /dev/null and b/.yarn/cache/sass-npm-1.69.4-bea57e4b30-ed5558445b.zip differ diff --git a/.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip b/.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip new file mode 100644 index 0000000000..91f42cf845 Binary files /dev/null and b/.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip differ diff --git a/.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip b/.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip new file mode 100644 index 0000000000..f8689471f5 Binary files /dev/null and b/.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip differ diff --git a/.yarn/cache/set-function-length-npm-1.1.1-d362bf8221-c131d7569c.zip b/.yarn/cache/set-function-length-npm-1.1.1-d362bf8221-c131d7569c.zip new file mode 100644 index 0000000000..024add469c Binary files /dev/null and b/.yarn/cache/set-function-length-npm-1.1.1-d362bf8221-c131d7569c.zip differ diff --git a/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip b/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip new file mode 100644 index 0000000000..f18d53b599 Binary files /dev/null and b/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip differ diff --git a/.yarn/cache/shepherd.js-npm-11.1.1-c87ab2ed73-1d2a0563b6.zip b/.yarn/cache/shepherd.js-npm-11.1.1-c87ab2ed73-1d2a0563b6.zip deleted file mode 100644 index 58028462dc..0000000000 Binary files a/.yarn/cache/shepherd.js-npm-11.1.1-c87ab2ed73-1d2a0563b6.zip and /dev/null differ diff --git a/.yarn/cache/shepherd.js-npm-11.2.0-94b9af1487-0e71e63e51.zip b/.yarn/cache/shepherd.js-npm-11.2.0-94b9af1487-0e71e63e51.zip new file mode 100644 index 0000000000..6bd0d1e294 Binary files /dev/null and b/.yarn/cache/shepherd.js-npm-11.2.0-94b9af1487-0e71e63e51.zip differ diff --git a/.yarn/cache/string.prototype.trim-npm-1.2.8-7ed4517ce8-49eb1a862a.zip b/.yarn/cache/string.prototype.trim-npm-1.2.8-7ed4517ce8-49eb1a862a.zip new file mode 100644 index 0000000000..543f676ced Binary files /dev/null and b/.yarn/cache/string.prototype.trim-npm-1.2.8-7ed4517ce8-49eb1a862a.zip differ diff --git a/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip b/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip deleted file mode 100644 index c28cc815b2..0000000000 Binary files a/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip and /dev/null differ diff --git a/.yarn/cache/string.prototype.trimend-npm-1.0.7-159b9dcfbc-2375516272.zip b/.yarn/cache/string.prototype.trimend-npm-1.0.7-159b9dcfbc-2375516272.zip new file mode 100644 index 0000000000..93f30c147e Binary files /dev/null and b/.yarn/cache/string.prototype.trimend-npm-1.0.7-159b9dcfbc-2375516272.zip differ diff --git a/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip b/.yarn/cache/string.prototype.trimstart-npm-1.0.7-ae2f803b78-13d0c2cb0d.zip similarity index 54% rename from .yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip rename to .yarn/cache/string.prototype.trimstart-npm-1.0.7-ae2f803b78-13d0c2cb0d.zip index 6203bec399..187509d052 100644 Binary files a/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip and b/.yarn/cache/string.prototype.trimstart-npm-1.0.7-ae2f803b78-13d0c2cb0d.zip differ diff --git a/.yarn/cache/tsconfig-paths-npm-3.14.1-17a815b5c5-8afa01c673.zip b/.yarn/cache/tsconfig-paths-npm-3.14.2-90ce75420d-a6162eaa1a.zip similarity index 91% rename from .yarn/cache/tsconfig-paths-npm-3.14.1-17a815b5c5-8afa01c673.zip rename to .yarn/cache/tsconfig-paths-npm-3.14.2-90ce75420d-a6162eaa1a.zip index 98a7ab1f87..0b76788258 100644 Binary files a/.yarn/cache/tsconfig-paths-npm-3.14.1-17a815b5c5-8afa01c673.zip and b/.yarn/cache/tsconfig-paths-npm-3.14.2-90ce75420d-a6162eaa1a.zip differ diff --git a/.yarn/cache/typed-array-buffer-npm-1.0.0-95cb610310-3e0281c79b.zip b/.yarn/cache/typed-array-buffer-npm-1.0.0-95cb610310-3e0281c79b.zip new file mode 100644 index 0000000000..7e8dc8f1ed Binary files /dev/null and b/.yarn/cache/typed-array-buffer-npm-1.0.0-95cb610310-3e0281c79b.zip differ diff --git a/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-b03db16458.zip b/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-b03db16458.zip new file mode 100644 index 0000000000..9cd6f34788 Binary files /dev/null and b/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-b03db16458.zip differ diff --git a/.yarn/cache/typed-array-byte-offset-npm-1.0.0-8cbb911cf5-04f6f02d0e.zip b/.yarn/cache/typed-array-byte-offset-npm-1.0.0-8cbb911cf5-04f6f02d0e.zip new file mode 100644 index 0000000000..2318610bbc Binary files /dev/null and b/.yarn/cache/typed-array-byte-offset-npm-1.0.0-8cbb911cf5-04f6f02d0e.zip differ diff --git a/.yarn/cache/vanillajs-datepicker-npm-1.3.3-c1fde0e681-be830750a5.zip b/.yarn/cache/vanillajs-datepicker-npm-1.3.4-bc86e15a9c-830958f8af.zip similarity index 73% rename from .yarn/cache/vanillajs-datepicker-npm-1.3.3-c1fde0e681-be830750a5.zip rename to .yarn/cache/vanillajs-datepicker-npm-1.3.4-bc86e15a9c-830958f8af.zip index a48ca28cfa..151d4c9230 100644 Binary files a/.yarn/cache/vanillajs-datepicker-npm-1.3.3-c1fde0e681-be830750a5.zip and b/.yarn/cache/vanillajs-datepicker-npm-1.3.4-bc86e15a9c-830958f8af.zip differ diff --git a/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip b/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip deleted file mode 100644 index 3970294564..0000000000 Binary files a/.yarn/cache/vite-npm-4.3.9-24f3552941-8c45a51627.zip and /dev/null differ diff --git a/.yarn/cache/vite-npm-4.5.0-6fb40946d7-06f1a4c858.zip b/.yarn/cache/vite-npm-4.5.0-6fb40946d7-06f1a4c858.zip new file mode 100644 index 0000000000..3c0f689f94 Binary files /dev/null and b/.yarn/cache/vite-npm-4.5.0-6fb40946d7-06f1a4c858.zip differ diff --git a/.yarn/cache/vue-eslint-parser-npm-9.3.0-f1933c0f13-9bdf375655.zip b/.yarn/cache/vue-eslint-parser-npm-9.3.1-a0feb51670-6d1476b45f.zip similarity index 76% rename from .yarn/cache/vue-eslint-parser-npm-9.3.0-f1933c0f13-9bdf375655.zip rename to .yarn/cache/vue-eslint-parser-npm-9.3.1-a0feb51670-6d1476b45f.zip index d33a8a100a..82eadd1443 100644 Binary files a/.yarn/cache/vue-eslint-parser-npm-9.3.0-f1933c0f13-9bdf375655.zip and b/.yarn/cache/vue-eslint-parser-npm-9.3.1-a0feb51670-6d1476b45f.zip differ diff --git a/.yarn/cache/vue-npm-3.3.4-174fadbea4-58b6c62a66.zip b/.yarn/cache/vue-npm-3.3.4-174fadbea4-58b6c62a66.zip deleted file mode 100644 index 2386327419..0000000000 Binary files a/.yarn/cache/vue-npm-3.3.4-174fadbea4-58b6c62a66.zip and /dev/null differ diff --git a/.yarn/cache/vue-npm-3.3.7-6f764474d4-463599d2a5.zip b/.yarn/cache/vue-npm-3.3.7-6f764474d4-463599d2a5.zip new file mode 100644 index 0000000000..c1406a0878 Binary files /dev/null and b/.yarn/cache/vue-npm-3.3.7-6f764474d4-463599d2a5.zip differ diff --git a/.yarn/cache/vue-router-npm-4.2.2-56d5f442c5-4181b3776a.zip b/.yarn/cache/vue-router-npm-4.2.2-56d5f442c5-4181b3776a.zip deleted file mode 100644 index 57bca9d09f..0000000000 Binary files a/.yarn/cache/vue-router-npm-4.2.2-56d5f442c5-4181b3776a.zip and /dev/null differ diff --git a/.yarn/cache/vue-router-npm-4.2.5-3479f41e41-2449db4f3a.zip b/.yarn/cache/vue-router-npm-4.2.5-3479f41e41-2449db4f3a.zip new file mode 100644 index 0000000000..930757dd0b Binary files /dev/null and b/.yarn/cache/vue-router-npm-4.2.5-3479f41e41-2449db4f3a.zip differ diff --git a/.yarn/cache/which-typed-array-npm-1.1.13-92c18b4878-3828a0d5d7.zip b/.yarn/cache/which-typed-array-npm-1.1.13-92c18b4878-3828a0d5d7.zip new file mode 100644 index 0000000000..0d9d2479da Binary files /dev/null and b/.yarn/cache/which-typed-array-npm-1.1.13-92c18b4878-3828a0d5d7.zip differ diff --git a/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip b/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip deleted file mode 100644 index e7e7d548de..0000000000 Binary files a/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip and /dev/null differ diff --git a/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip b/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip deleted file mode 100644 index 518977eb88..0000000000 Binary files a/.yarn/cache/word-wrap-npm-1.2.3-7fb15ab002-30b48f91fc.zip and /dev/null differ diff --git a/.yarn/cache/yargs-npm-16.2.0-547873d425-b14afbb51e.zip b/.yarn/cache/yargs-npm-16.2.0-547873d425-b14afbb51e.zip deleted file mode 100644 index d11c27d510..0000000000 Binary files a/.yarn/cache/yargs-npm-16.2.0-547873d425-b14afbb51e.zip and /dev/null differ diff --git a/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip b/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip new file mode 100644 index 0000000000..54c49dc9c6 Binary files /dev/null and b/.yarn/cache/yargs-npm-17.7.2-80b62638e1-73b572e863.zip differ diff --git a/.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip b/.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip deleted file mode 100644 index f230038cfc..0000000000 Binary files a/.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip and /dev/null differ diff --git a/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip b/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip new file mode 100644 index 0000000000..d68ba748e7 Binary files /dev/null and b/.yarn/cache/yargs-parser-npm-21.1.1-8fdc003314-ed2d96a616.zip differ diff --git a/bin/add-old-drafts-from-archive.py b/bin/add-old-drafts-from-archive.py deleted file mode 100755 index 239ba7837c..0000000000 --- a/bin/add-old-drafts-from-archive.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -# Copyright The IETF Trust 2017-2019, All Rights Reserved - -import datetime -import os -import sys -from pathlib import Path -from contextlib import closing - -os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" - -import django -django.setup() - -from django.conf import settings -from django.core.validators import validate_email, ValidationError -from ietf.utils.draft import PlaintextDraft -from ietf.submit.utils import update_authors -from ietf.utils.timezone import date_today - -import debug # pyflakes:ignore - -from ietf.doc.models import Document, NewRevisionDocEvent, DocEvent, State -from ietf.person.models import Person - -system = Person.objects.get(name="(System)") -expired = State.objects.get(type='draft',slug='expired') - -names = set() -print 'collecting draft names ...' -versions = 0 -for p in Path(settings.INTERNET_DRAFT_PATH).glob('draft*.txt'): - n = str(p).split('/')[-1].split('-') - if n[-1][:2].isdigit(): - name = '-'.join(n[:-1]) - if '--' in name or '.txt' in name or '[' in name or '=' in name or '&' in name: - continue - if name.startswith('draft-draft-'): - continue - if name == 'draft-ietf-trade-iotp-v1_0-dsig': - continue - if len(n[-1]) != 6: - continue - if name.startswith('draft-mlee-'): - continue - names.add('-'.join(n[:-1])) - -count=0 -print 'iterating through names ...' -for name in sorted(names): - if not Document.objects.filter(name=name).exists(): - paths = list(Path(settings.INTERNET_DRAFT_PATH).glob('%s-??.txt'%name)) - paths.sort() - doc = None - for p in paths: - n = str(p).split('/')[-1].split('-') - rev = n[-1][:2] - with open(str(p)) as txt_file: - raw = txt_file.read() - try: - text = raw.decode('utf8') - except UnicodeDecodeError: - text = raw.decode('latin1') - try: - draft = PlaintextDraft(text, txt_file.name, name_from_source=True) - except Exception as e: - print name, rev, "Can't parse", p,":",e - continue - if draft.errors and draft.errors.keys()!=['draftname',]: - print "Errors - could not process", name, rev, datetime.datetime.fromtimestamp(p.stat().st_mtime, datetime.timezone.utc), draft.errors, draft.get_title().encode('utf8') - else: - time = datetime.datetime.fromtimestamp(p.stat().st_mtime, datetime.timezone.utc) - if not doc: - doc = Document.objects.create(name=name, - time=time, - type_id='draft', - title=draft.get_title(), - abstract=draft.get_abstract(), - rev = rev, - pages=draft.get_pagecount(), - words=draft.get_wordcount(), - expires=time+datetime.timedelta(settings.INTERNET_DRAFT_DAYS_TO_EXPIRE), - ) - DocAlias.objects.create(name=doc.name).docs.add(doc) - doc.states.add(expired) - # update authors - authors = [] - for author in draft.get_author_list(): - full_name, first_name, middle_initial, last_name, name_suffix, email, country, company = author - - author_name = full_name.replace("\n", "").replace("\r", "").replace("<", "").replace(">", "").strip() - - if email: - try: - validate_email(email) - except ValidationError: - email = "" - - def turn_into_unicode(s): - if s is None: - return u"" - - if isinstance(s, unicode): - return s - else: - try: - return s.decode("utf-8") - except UnicodeDecodeError: - try: - return s.decode("latin-1") - except UnicodeDecodeError: - return "" - - author_name = turn_into_unicode(author_name) - email = turn_into_unicode(email) - company = turn_into_unicode(company) - - authors.append({ - "name": author_name, - "email": email, - "affiliation": company, - "country": country - }) - dummysubmission=type('', (), {})() #https://stackoverflow.com/questions/19476816/creating-an-empty-object-in-python - dummysubmission.authors = authors - update_authors(doc,dummysubmission) - - # add a docevent with words explaining where this came from - events = [] - e = NewRevisionDocEvent.objects.create( - type="new_revision", - doc=doc, - rev=rev, - by=system, - desc="New version available: %s-%s.txt" % (doc.name, doc.rev), - time=time, - ) - events.append(e) - e = DocEvent.objects.create( - type="comment", - doc = doc, - rev = rev, - by = system, - desc = "Revision added from id-archive on %s by %s"%(date_today(),sys.argv[0]), - time=time, - ) - events.append(e) - doc.time = time - doc.rev = rev - doc.save_with_history(events) - print "Added",name, rev diff --git a/client/agenda/AgendaMobileBar.vue b/client/agenda/AgendaMobileBar.vue index 201d51794c..5d15e9e692 100644 --- a/client/agenda/AgendaMobileBar.vue +++ b/client/agenda/AgendaMobileBar.vue @@ -1,12 +1,19 @@ -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Areas -{% endblock %} - -{% block content %} - -
-

Areas

- - - - - - - - - - {% for item in results %} - - - - - - {% endfor %} - -
NameAcronymStatus
{{ item.name }}{{ item.acronym }}{{ item.state }}
- -
-
    -
-
-
- -{% endblock %} diff --git a/ietf/secr/templates/areas/people.html b/ietf/secr/templates/areas/people.html deleted file mode 100644 index 168089f52c..0000000000 --- a/ietf/secr/templates/areas/people.html +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} -{% block title %}Areas - People{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Areas - » {{ area.acronym }} - » People -{% endblock %} - -{% block content %} - -
-

Area Directors ({{ area.acronym }})

- - {% for director in directors %} - {% csrf_token %} - - - - - {% endif %} - - - - {% endfor %} -
{{ director.person.name }}{% if director.name.slug == "ad" %} - Voting Enabled - {% else %} -
- - - -
-
    -
  • -
-
-
- -{% endblock %} \ No newline at end of file diff --git a/ietf/secr/templates/areas/view.html b/ietf/secr/templates/areas/view.html deleted file mode 100644 index 2bcb9619c9..0000000000 --- a/ietf/secr/templates/areas/view.html +++ /dev/null @@ -1,50 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} -{% block title %}Areas - View{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Areas - » {{ area.acronym }} -{% endblock %} - -{% block content %} - -
-

Area - View

- - - - - - - - - - -
Area Acronym:{{ area.acronym }}
Area Name:{{ area.name }}
Status:{{ area.state }}
Start Date:{{ area.start_date|date:"Y-m-d" }}
Concluded Date:{{ area.concluded_date|date:"Y-m-d" }}
Last Modified Date:{{ area.time|date:"Y-m-d" }}
Comments:{{ area.comments}}
- - - -
-
    - -
  • -
  • -
-
-
- -{% endblock %} diff --git a/ietf/secr/templates/console/main.html b/ietf/secr/templates/console/main.html deleted file mode 100644 index 5aadefc558..0000000000 --- a/ietf/secr/templates/console/main.html +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "base_site.html" %} - -{% block title %}Console{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Console -{% endblock %} - -{% block content %} - -
-

Console

- - - - - -
Latest DocEvent{{ latest_docevent }}
- -
- -{% endblock %} diff --git a/ietf/secr/templates/main.html b/ietf/secr/templates/main.html index 455895c76d..42d6e8f6a1 100644 --- a/ietf/secr/templates/main.html +++ b/ietf/secr/templates/main.html @@ -14,13 +14,11 @@

IESG

IDs and WGs Process

@@ -31,15 +29,9 @@

Meetings and Proceedings

- - -

IPR

- + diff --git a/ietf/secr/templates/meetings/blue_sheet.html b/ietf/secr/templates/meetings/blue_sheet.html deleted file mode 100644 index 9bda80f2ed..0000000000 --- a/ietf/secr/templates/meetings/blue_sheet.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "base_site.html" %} -{% load static %} - -{% block title %}Meetings - Blue Sheet{% endblock %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block breadcrumbs %}{{ block.super }} - » Meetings - » {{ meeting.number }} - » Blue Sheets -{% endblock %} - -{% block content %} - -
-

IETF {{ meeting.number }} - Blue Sheet

- -

Use this to generate blue sheets for meeting sessions.

-
    -
  • -
    {% csrf_token %} - -
    -   Last run: - {% if last_run %} - {{ last_run }} - {% else %} - Never - {% endif %} -
  • -
-

Use this to download the blue sheets from the server.

-
    -
  • - -
  • -
- -
-

- Use the session details page for a group to upload scanned bluesheets. The session details pages for a group can be reached from the meeting's materials page. -

-
- -{% endblock %} diff --git a/ietf/secr/templates/meetings/view.html b/ietf/secr/templates/meetings/view.html index d54346dae2..89bd8f7e03 100644 --- a/ietf/secr/templates/meetings/view.html +++ b/ietf/secr/templates/meetings/view.html @@ -37,7 +37,6 @@

IETF {{ meeting.number }} - View

  • -
  • diff --git a/ietf/secr/templates/rolodex/view.html b/ietf/secr/templates/rolodex/view.html index 73d1c3f58b..d1a78cfaa5 100644 --- a/ietf/secr/templates/rolodex/view.html +++ b/ietf/secr/templates/rolodex/view.html @@ -44,7 +44,7 @@

    Roles

    {{ role.name }} {% if role.group.type.slug == "area" %} - {{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %} + {{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %} {% else %} {{ role.group.acronym }}{% if role.group.state.slug == "conclude" %} (concluded){% endif %} {% endif %} diff --git a/ietf/secr/templates/telechat/doc.html b/ietf/secr/templates/telechat/doc.html index 9d37db4cb0..7891c1b1e7 100644 --- a/ietf/secr/templates/telechat/doc.html +++ b/ietf/secr/templates/telechat/doc.html @@ -85,13 +85,13 @@

    Ballot Writeup

    {% if downrefs %}

    Downward References

    {% for ref in downrefs %} -

    Add {{ref.target.document.canonical_name}} - ({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}}) +

    Add {{ref.target.name}} + ({{ref.target.std_level}} - {{ref.target.stream.desc}}) to downref registry.
    - {% if not ref.target.document.std_level %} + {% if not ref.target.std_level %} +++ Warning: The standards level has not been set yet!!!
    {% endif %} - {% if not ref.target.document.stream %} + {% if not ref.target.stream %} +++ Warning: document stream has not been set yet!!!
    {% endif %} {% endfor %}

    diff --git a/ietf/secr/urls.py b/ietf/secr/urls.py index e5d3c19c34..0ce14a449a 100644 --- a/ietf/secr/urls.py +++ b/ietf/secr/urls.py @@ -4,8 +4,6 @@ urlpatterns = [ re_path(r'^$', TemplateView.as_view(template_name='main.html')), re_path(r'^announcement/', include('ietf.secr.announcement.urls')), - re_path(r'^areas/', include('ietf.secr.areas.urls')), - re_path(r'^console/', include('ietf.secr.console.urls')), re_path(r'^meetings/', include('ietf.secr.meetings.urls')), re_path(r'^rolodex/', include('ietf.secr.rolodex.urls')), re_path(r'^sreq/', include('ietf.secr.sreq.urls')), diff --git a/ietf/secr/utils/document.py b/ietf/secr/utils/document.py index 0a34512a17..361bf836df 100644 --- a/ietf/secr/utils/document.py +++ b/ietf/secr/utils/document.py @@ -13,15 +13,6 @@ def get_full_path(doc): return None return os.path.join(doc.get_file_path(), doc.uploaded_filename) -def get_rfc_num(doc): - qs = doc.docalias.filter(name__startswith='rfc') - return qs[0].name[3:] if qs else None - -def is_draft(doc): - if doc.docalias.filter(name__startswith='rfc'): - return False - else: - return True def get_start_date(doc): ''' diff --git a/ietf/secr/utils/group.py b/ietf/secr/utils/group.py index a4c1c0f98a..40a9065ace 100644 --- a/ietf/secr/utils/group.py +++ b/ietf/secr/utils/group.py @@ -3,11 +3,8 @@ # Python imports -import io -import os # Django imports -from django.conf import settings from django.core.exceptions import ObjectDoesNotExist # Datatracker imports @@ -15,27 +12,6 @@ from ietf.ietfauth.utils import has_role - - -def current_nomcom(): - qs = Group.objects.filter(acronym__startswith='nomcom',state__slug="active").order_by('-time') - if qs.count(): - return qs[0] - else: - return None - -def get_charter_text(group): - ''' - Takes a group object and returns the text or the group's charter as a string - ''' - charter = group.charter - path = os.path.join(settings.CHARTER_PATH, '%s-%s.txt' % (charter.canonical_name(), charter.rev)) - f = io.open(path,'r') - text = f.read() - f.close() - - return text - def get_my_groups(user,conclude=False): ''' Takes a Django user object (from request) diff --git a/ietf/settings.py b/ietf/settings.py index b92129ccec..eb5066e974 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -488,7 +488,6 @@ def skip_unreadable_post(record): 'ietf.utils', # IETF Secretariat apps 'ietf.secr.announcement', - 'ietf.secr.areas', 'ietf.secr.meetings', 'ietf.secr.rolodex', 'ietf.secr.sreq', @@ -573,8 +572,6 @@ def skip_unreadable_post(record): TEST_DIFF_FAILURE_DIR = "/tmp/test/failure/" -TEST_GHOSTDRIVER_LOG_PATH = "ghostdriver.log" - # These are regexes TEST_URL_COVERAGE_EXCLUDE = [ r"^\^admin/", @@ -601,7 +598,6 @@ def skip_unreadable_post(record): "ietf/utils/test_runner.py", "ietf/name/generate_fixtures.py", "ietf/review/import_from_review_tool.py", - "ietf/stats/backfill_data.py", "ietf/utils/patch.py", "ietf/utils/test_data.py", ] @@ -706,7 +702,7 @@ def skip_unreadable_post(record): DOC_HREFS = { "charter": "https://www.ietf.org/charter/{doc.name}-{doc.rev}.txt", "draft": "https://www.ietf.org/archive/id/{doc.name}-{doc.rev}.txt", - "rfc": "https://www.rfc-editor.org/rfc/rfc{doc.rfcnum}.txt", + "rfc": "https://www.rfc-editor.org/rfc/rfc{doc.rfc_number}.txt", "slides": "https://www.ietf.org/slides/{doc.name}-{doc.rev}", "procmaterials": "https://www.ietf.org/procmaterials/{doc.name}-{doc.rev}", "conflrev": "https://www.ietf.org/cr/{doc.name}-{doc.rev}.txt", @@ -1156,6 +1152,7 @@ def skip_unreadable_post(record): CELERY_BROKER_URL = 'amqp://mq/' CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' CELERY_BEAT_SYNC_EVERY = 1 # update DB after every event +CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True # the default, but setting it squelches a warning # Meetecho API setup: Uncomment this and provide real credentials to enable # Meetecho conference creation for interim session requests @@ -1270,6 +1267,8 @@ def skip_unreadable_post(record): }, } +PUBLISH_IPR_STATES = ['posted', 'removed', 'removed_objfalse'] + # We provide a secret key only for test and development modes. It's # absolutely vital that django fails to start in production mode unless a # secret key has been provided elsewhere, not in this file which is diff --git a/ietf/static/css/custom-bs-import.scss b/ietf/static/css/custom-bs-import.scss new file mode 100644 index 0000000000..e124b56875 --- /dev/null +++ b/ietf/static/css/custom-bs-import.scss @@ -0,0 +1,55 @@ +@import "bootstrap/scss/functions"; + +// Enable negative margin classes. +$enable-negative-margins: true; + +// Don't add carets to dropdowns by default. +// $enable-caret: false; + +$popover-max-width: 100%; + +// Override default fonts + +$font-family-sans-serif: "Inter", +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"; +$font-family-monospace: "Noto Sans Mono", +SFMono-Regular, +Menlo, +Monaco, +Consolas, +"Liberation Mono", +"Courier New", +monospace; + +// Enable color modes +$color-mode-type: data; + +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; + +$h1-font-size: $font-size-base * 2.2; +$h2-font-size: $font-size-base * 1.8; +$h3-font-size: $font-size-base * 1.6; +$h4-font-size: $font-size-base * 1.4; +$h5-font-size: $font-size-base * 1.2; +$h6-font-size: $font-size-base; + +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/root"; + + + diff --git a/ietf/static/css/datepicker.scss b/ietf/static/css/datepicker.scss index 4e2655b3fd..88f9e835fd 100644 --- a/ietf/static/css/datepicker.scss +++ b/ietf/static/css/datepicker.scss @@ -1,13 +1,4 @@ -@import "bootstrap/scss/functions"; - -// Enable color modes -$color-mode-type: data; - -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/root"; +@import "custom-bs-import"; // FIXME: color.scale doesn't seem to work with CSS variables, so avoid those:` $dp-cell-focus-background-color: $dropdown-link-hover-bg !default; diff --git a/ietf/static/css/document_html.scss b/ietf/static/css/document_html.scss index d353908976..0b5a70f124 100644 --- a/ietf/static/css/document_html.scss +++ b/ietf/static/css/document_html.scss @@ -1,21 +1,9 @@ @use "sass:map"; -$font-family-sans-serif: "Inter", 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"; -$font-family-monospace: "Noto Sans Mono", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - -@import "bootstrap/scss/functions"; - -// Enable color modes -$color-mode-type: data; - -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/utilities"; -@import "bootstrap/scss/root"; +@import "custom-bs-import"; // Layout & components +// Only import what we need: @import "bootstrap/scss/reboot"; @import "bootstrap/scss/type"; // @import "bootstrap/scss/images"; @@ -25,7 +13,7 @@ $color-mode-type: data; @import "bootstrap/scss/forms"; @import "bootstrap/scss/buttons"; @import "bootstrap/scss/transitions"; -// @import "bootstrap/scss/dropdown"; +@import "bootstrap/scss/dropdown"; @import "bootstrap/scss/button-group"; @import "bootstrap/scss/nav"; @import "bootstrap/scss/navbar"; @@ -65,12 +53,16 @@ $color-mode-type: data; scrollbar-width: none; } -.sidebar-toggle[aria-expanded="true"] { +.sidebar-toggle[aria-expanded="true"] .sidebar-shown { + display: none; +} + +.sidebar-toggle[aria-expanded="false"] .sidebar-collapsed { display: none; } -.sidebar-toggle[aria-expanded="false"] { - display: inherit; +.sidebar-toolbar { + z-index: 1; } // Toggle classes for dark/light modes @@ -94,6 +86,11 @@ $color-mode-type: data; } } +// Show theme toggler checkbox +.dropdown-menu .active .bi { + display: block !important; +} + @media screen { @include media-breakpoint-down(md) { body { @@ -354,7 +351,7 @@ tbody.meta tr { page-break-inside: avoid; } -/* + /* a:link, a:visited { // color: inherit; diff --git a/ietf/static/css/document_html_txt.scss b/ietf/static/css/document_html_txt.scss index a75c491d26..b0fec7c4d6 100644 --- a/ietf/static/css/document_html_txt.scss +++ b/ietf/static/css/document_html_txt.scss @@ -69,7 +69,7 @@ figure { blockquote { @include margin-paragraph; // margin: var(--paragraph); padding-left: calc(2ch - 2px); - border-left: 2px solid darkgrey; + border-left: 2px solid var(--bs-border-color); } /* Header junk */ @@ -165,6 +165,7 @@ blockquote { #identifiers dd.authors .author { display: inline-block; margin: 0 2ch 0 1ch; + min-height: calc(2 * var(--line)); } #identifiers dd.authors .author:last-of-type { margin-right: 0; @@ -374,7 +375,7 @@ thead, tfoot { border-bottom-style: double; } td, th { - border: 1px solid inherit; + border: 1px solid var(--bs-border-color); // padding: var(--half-line) 1ch; padding-top: var(--half-line); padding-right: 1ch; diff --git a/ietf/static/css/highcharts.scss b/ietf/static/css/highcharts.scss new file mode 100644 index 0000000000..d2f5d5e0e7 --- /dev/null +++ b/ietf/static/css/highcharts.scss @@ -0,0 +1,6 @@ +@import "npm:highcharts/css/highcharts.css"; +@import "custom-bs-import"; + +.highcharts-container { + font-family: $font-family-sans-serif; +} diff --git a/ietf/static/css/ietf.scss b/ietf/static/css/ietf.scss index 4f26a12dfc..ca960c0378 100644 --- a/ietf/static/css/ietf.scss +++ b/ietf/static/css/ietf.scss @@ -1,41 +1,9 @@ @use "sass:map"; -@import "bootstrap/scss/functions"; - -// Enable negative margin classes. -$enable-negative-margins: true; - -// Don't add carets to dropdowns by default. -// $enable-caret: false; - -$popover-max-width: 100%; - -// Override default fonts - -$font-family-sans-serif: "Inter", 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"; -$font-family-monospace: "Noto Sans Mono", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - -// Enable color modes -$color-mode-type: data; - -// Only import what we need: - -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; - -$h1-font-size: $font-size-base * 2.2; -$h2-font-size: $font-size-base * 1.8; -$h3-font-size: $font-size-base * 1.6; -$h4-font-size: $font-size-base * 1.4; -$h5-font-size: $font-size-base * 1.2; -$h6-font-size: $font-size-base; - -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/utilities"; -@import "bootstrap/scss/root"; +@import "custom-bs-import"; // Layout & components +// Only import what we need: @import "bootstrap/scss/reboot"; @import "bootstrap/scss/type"; @import "bootstrap/scss/images"; @@ -79,7 +47,7 @@ url("npm:bootstrap-icons/font/fonts/bootstrap-icons.woff") format("woff"); @import "bootstrap-icons/font/bootstrap-icons"; // Leave room for fixed-top navbar... -body { +body.navbar-offset { padding-top: 60px; } @@ -185,8 +153,8 @@ pre { --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg}; --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y}; --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow}; - --#{$prefix}dropdown-link-color: #{$dropdown-link-color}; - --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color}; + --#{$prefix}dropdown-link-color: #{$nav-link-color}; + --#{$prefix}dropdown-link-hover-color: #{$nav-link-hover-color}; --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg}; --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color}; --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg}; @@ -331,7 +299,7 @@ th, .axis path, .axis line { fill: none; - stroke: black; + stroke: var(--bs-body-color); } .axis.y path, @@ -348,7 +316,7 @@ th, } .bar text { - fill: black; + fill: var(--bs-body-color); dominant-baseline: central; pointer-events: none; } @@ -387,7 +355,7 @@ th, } .ballot-icon table .my { - border: calc(2 * $table-border-width) solid #000; + border: calc(2 * $table-border-width) solid var(--bs-emphasis-color); } // See https://getbootstrap.com/docs/5.1/customize/color/#all-colors @@ -506,29 +474,57 @@ td.position-empty { border: none !important; } -tr.position-moretime-row, -tr.position-notready-row, -tr.position-discuss-row, -tr.position-block-row { - background-color: tint-color($color-discuss, 85%); -} +[data-bs-theme="light"] { -tr.position-yes-row { - background-color: tint-color($color-yes, 75%); -} + tr.position-moretime-row, + tr.position-notready-row, + tr.position-discuss-row, + tr.position-block-row { + background-color: tint-color($color-discuss, 85%); + } -tr.position-noobj-row { - background-color: tint-color($color-noobj, 50%); -} + tr.position-yes-row { + background-color: tint-color($color-yes, 75%); + } -tr.position-abstain-row { - background-color: tint-color($color-abstain, 85%); -} + tr.position-noobj-row { + background-color: tint-color($color-noobj, 50%); + } -tr.position-recuse-row { - background-color: tint-color($color-recuse, 85%); + tr.position-abstain-row { + background-color: tint-color($color-abstain, 85%); + } + + tr.position-recuse-row { + background-color: tint-color($color-recuse, 85%); + } } +[data-bs-theme="dark"] { + + tr.position-moretime-row, + tr.position-notready-row, + tr.position-discuss-row, + tr.position-block-row { + background-color: shade-color($color-discuss, 85%); + } + + tr.position-yes-row { + background-color: shade-color($color-yes, 75%); + } + + tr.position-noobj-row { + background-color: shade-color($color-noobj, 75%); + } + + tr.position-abstain-row { + background-color: shade-color($color-abstain, 85%); + } + + tr.position-recuse-row { + background-color: shade-color($color-recuse, 85%); + } +} /* === Edit Meeting Schedule ====================================== */ @@ -566,7 +562,7 @@ tr.position-recuse-row { } .edit-meeting-schedule .edit-grid .day-label .swap-days:hover { - color: #666; + color: var(--bs-secondary-color); } .edit-meeting-schedule #swap-days-modal .modal-body label { @@ -598,15 +594,15 @@ tr.position-recuse-row { } .edit-meeting-schedule .edit-grid .time-header .time-label.would-violate-hint { - background-color: #ffe0e0; - outline: #ffe0e0 solid 0.4em; + background-color: var(--bs-danger-bg-subtle); + outline: var(--bs-danger-bg-subtle) solid 0.4em; } .edit-meeting-schedule .edit-grid .time-header .time-label span { display: inline-block; width: 100%; text-align: center; - color: #444444; + color: var(--bs-secondary-color); } .edit-meeting-schedule .edit-grid .timeslots { @@ -618,7 +614,7 @@ tr.position-recuse-row { .edit-meeting-schedule .edit-grid .timeslot { position: relative; display: inline-block; - background-color: #f4f4f4; + background-color: var(--bs-secondary-bg); height: 100%; overflow: hidden; } @@ -631,7 +627,7 @@ tr.position-recuse-row { width: 100%; align-items: center; justify-content: center; - color: #999; + color: var(--bs-tertiary-color); } .edit-meeting-schedule .edit-grid .timeslot .drop-target { @@ -648,22 +644,22 @@ tr.position-recuse-row { } .edit-meeting-schedule .edit-grid .timeslot.overfull { - border-right: 0.3em dashed #f55000; + border-right: 0.3em dashed var(--bs-danger); /* cut-off illusion */ } .edit-meeting-schedule .edit-grid .timeslot.would-violate-hint { - background-color: #ffe0e0; - outline: #ffe0e0 solid 0.4em; + background-color: var(--bs-danger-bg-subtle); + outline: var(--bs-danger-bg-subtle) solid 0.4em; } .edit-meeting-schedule .edit-grid .timeslot.would-violate-hint.dropping { - background-color: #ccb3b3; + background-color: var(--bs-danger); } .edit-meeting-schedule .constraints .encircled, .edit-meeting-schedule .formatted-constraints .encircled { - border: 1px solid #000; + border: 1px solid var( --bs-body-color); border-radius: 1em; padding: 0 0.3em; text-align: center; @@ -676,7 +672,7 @@ tr.position-recuse-row { /* sessions */ .edit-meeting-schedule .session { - background-color: #fff; + background-color: var(--bs-body-bg); margin: 0.2em; padding-right: 0.2em; padding-left: 0.5em; @@ -688,15 +684,15 @@ tr.position-recuse-row { .edit-meeting-schedule .session.selected { cursor: grabbing; - outline: #0000ff solid 0.2em; - /* blue, width matches margin on .session */ + outline: var(--bs-primary) solid 0.2em; + /* width matches margin on .session */ z-index: 2; /* render above timeslot outlines */ } .edit-meeting-schedule .session.other-session-selected { - outline: #00008b solid 0.2em; - /* darkblue, width matches margin on .session */ + outline: var(--bs-info) solid 0.2em; + /* width matches margin on .session */ z-index: 2; /* render above timeslot outlines */ } @@ -707,7 +703,7 @@ tr.position-recuse-row { .edit-meeting-schedule .session.readonly { cursor: default; - background-color: #ddd; + background-color: var(--bs-dark-bg-subtle); } .edit-meeting-schedule .session.hidden-parent * { @@ -721,13 +717,12 @@ tr.position-recuse-row { } .edit-meeting-schedule .session.highlight { - outline-color: #ff8c00; - /* darkorange */ - background-color: #f3f3f3; + outline-color: var(--bs-warning); + background-color: var(--bs-light); } .edit-meeting-schedule .session.would-violate-hint { - outline: 0.3em solid #F55000; + outline: 0.3em solid var(--bs-danger); z-index: 1; /* raise up so the outline is not overdrawn */ } @@ -749,6 +744,7 @@ tr.position-recuse-row { .edit-meeting-schedule .edit-grid, .edit-meeting-schedule .session { + // Removing this font-family style causes selenium tests to fail :-( font-family: arial, helvetica, sans-serif; font-size: 11px; } @@ -820,9 +816,9 @@ tr.position-recuse-row { bottom: 0; left: 0; width: 100%; - border-top: 0.2em solid #ccc; + border-top: 0.2em solid var(--bs-border-color); margin-bottom: 2em; - background-color: #fff; + background-color: var(--bs-body-bg); opacity: 0.95; z-index: 5; /* raise above edit-grid items */ @@ -837,7 +833,7 @@ tr.position-recuse-row { min-height: 4em; max-height: 13em; overflow-y: auto; - background-color: #f4f4f4; + background-color: var(--bs-secondary-bg); } .edit-meeting-schedule .unassigned-sessions.dropping { @@ -894,7 +890,7 @@ tr.position-recuse-row { font-weight: normal; margin-right: 1em; padding: 0 1em; - border: 0.1em solid #eee; + border: 0.1em solid var(--bs-border-color); cursor: pointer; } @@ -960,7 +956,7 @@ tr.position-recuse-row { } .edit-meeting-timeslots-and-misc-sessions .room-row { - border-bottom: 1px solid #ccc; + border-bottom: 1px solid var(--bs-border-color); // height: 20px; display: flex; cursor: pointer; @@ -980,13 +976,13 @@ tr.position-recuse-row { } .edit-meeting-timeslots-and-misc-sessions .timeline.hover { - background: radial-gradient(#999 1px, transparent 1px); + background: radial-gradient(var(--bs-tertiary-color) 1px, transparent 1px); background-size: 20px 20px; } .edit-meeting-timeslots-and-misc-sessions .timeline.selected.hover, .edit-meeting-timeslots-and-misc-sessions .timeline.selected { - background: radial-gradient(#999 2px, transparent 2px); + background: radial-gradient(var(--bs-tertiary-color) 2px, transparent 2px); background-size: 20px 20px; } @@ -1002,8 +998,8 @@ tr.position-recuse-row { white-space: nowrap; cursor: pointer; padding-left: 0.2em; - border-left: 1px solid #999; - border-right: 1px solid #999; + border-left: 1px solid var(--bs-border-color); + border-right: 1px solid var(--bs-border-color); } .edit-meeting-timeslots-and-misc-sessions .timeslot:hover { @@ -1023,10 +1019,10 @@ tr.position-recuse-row { bottom: 0; left: 0; width: 100%; - border-top: 0.2em solid #ccc; + border-top: 0.2em solid var(--bs-border-color); padding-top: 0.2em; margin-bottom: 2em; - background-color: #fff; + background-color: var(--bs-body-bg); opacity: 0.95; } @@ -1074,7 +1070,7 @@ tr.position-recuse-row { } .timeslot-edit .tstable div.timeslot { - border: #000000 solid 1px; + border: var(--bs-body-color) solid 1px; border-radius: 0.5em; padding: 0.5em; } @@ -1104,7 +1100,7 @@ tr.position-recuse-row { } .timeslot-edit .tstable .tstype_unavail { - background-color: #666; + background-color: var(--bs-secondary-color); } .timeslot-edit .official-use-warning { diff --git a/ietf/static/css/list.scss b/ietf/static/css/list.scss index 142013c3dd..595bf360d5 100644 --- a/ietf/static/css/list.scss +++ b/ietf/static/css/list.scss @@ -1,11 +1,4 @@ -// Import bootstrap helpers -@import "bootstrap/scss/functions"; - -// Enable color modes -$color-mode-type: data; - -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; +@import "custom-bs-import"; table .sort { cursor: pointer; diff --git a/ietf/static/css/select2.scss b/ietf/static/css/select2.scss index ab53c228eb..c8e3da7adc 100644 --- a/ietf/static/css/select2.scss +++ b/ietf/static/css/select2.scss @@ -1,13 +1,4 @@ -@import "bootstrap/scss/functions"; - -// Enable color modes -$color-mode-type: data; - -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/root"; +@import "custom-bs-import"; // FIXME: bs-5.3.0 workaround from https://github.com/apalfrey/select2-bootstrap-5-theme/issues/75#issuecomment-1573265695 $s2bs5-border-color: $border-color; diff --git a/ietf/static/js/highcharts.js b/ietf/static/js/highcharts.js index 0b99f87a59..6c3b68051f 100644 --- a/ietf/static/js/highcharts.js +++ b/ietf/static/js/highcharts.js @@ -6,6 +6,8 @@ import Highcharts_Export_Data from "highcharts/modules/export-data"; import Highcharts_Accessibility from "highcharts/modules/accessibility"; import Highcharts_Sunburst from "highcharts/modules/sunburst"; +document.documentElement.style.setProperty("--highcharts-background-color", "transparent"); + Highcharts_Exporting(Highcharts); Highcharts_Offline_Exporting(Highcharts); Highcharts_Export_Data(Highcharts); @@ -13,17 +15,9 @@ Highcharts_Accessibility(Highcharts); Highcharts_Sunburst(Highcharts); Highcharts.setOptions({ - // use colors from https://colorbrewer2.org/#type=qualitative&scheme=Paired&n=12 - colors: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', - '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', - '#ffff99', '#b15928' - ], chart: { height: "100%", - style: { - fontFamily: getComputedStyle(document.body) - .getPropertyValue('--bs-body-font-family') - } + styledMode: true, }, credits: { enabled: false @@ -35,7 +29,7 @@ window.Highcharts = Highcharts; window.group_stats = function (url, chart_selector) { $.getJSON(url, function (data) { $(chart_selector) - .each(function (i, e) { + .each(function (_, e) { const dataset = e.dataset.dataset; if (!dataset) { console.log("dataset data attribute not set"); diff --git a/ietf/static/js/highstock.js b/ietf/static/js/highstock.js index e1965acb62..05b1250ed0 100644 --- a/ietf/static/js/highstock.js +++ b/ietf/static/js/highstock.js @@ -5,9 +5,20 @@ import Highcharts_Offline_Exporting from "highcharts/modules/offline-exporting"; import Highcharts_Export_Data from "highcharts/modules/export-data"; import Highcharts_Accessibility from"highcharts/modules/accessibility"; +document.documentElement.style.setProperty("--highcharts-background-color", "transparent"); + Highcharts_Exporting(Highcharts); Highcharts_Offline_Exporting(Highcharts); Highcharts_Export_Data(Highcharts); Highcharts_Accessibility(Highcharts); +Highcharts.setOptions({ + chart: { + styledMode: true, + }, + credits: { + enabled: false + }, +}); + window.Highcharts = Highcharts; diff --git a/ietf/static/js/ietf.js b/ietf/static/js/ietf.js index 7f7e924153..215d80553c 100644 --- a/ietf/static/js/ietf.js +++ b/ietf/static/js/ietf.js @@ -57,7 +57,7 @@ $(document) var text = $(this) .text(); // insert some at strategic places - var newtext = text.replace(/([@._])/g, "$1"); + var newtext = text.replace(/([@._+])/g, "$1"); if (newtext === text) { return; } diff --git a/ietf/static/js/list.js b/ietf/static/js/list.js index 48e9fd4866..d7e9dc944b 100644 --- a/ietf/static/js/list.js +++ b/ietf/static/js/list.js @@ -1,16 +1,22 @@ -import * as List from "list.js"; - -var dummy = new List(); +import { + default as List +} from "list.js"; function text_sort(a, b, options) { + + function prep(e, options) { + return $($.parseHTML(e.values()[options.valueName])) + .text() + .trim() + .replaceAll(/\s+/g, ' '); + } + // sort by text content - return dummy.utils.naturalSort.caseInsensitive($($.parseHTML(a.values()[options.valueName])) - .text() - .trim() - .replaceAll(/\s+/g, ' '), $($.parseHTML(b.values()[options.valueName])) - .text() - .trim() - .replaceAll(/\s+/g, ' ')); + return prep(a, options).localeCompare(prep(b, options), "en", { + sensitivity: "base", + ignorePunctuation: true, + numeric: true + }); } function replace_with_internal(table, internal_table, i) { @@ -20,7 +26,7 @@ function replace_with_internal(table, internal_table, i) { .replaceWith(internal_table[i] .children("table") .children("tbody") - .clone()); + .clone(true)); } function field_magic(i, e, fields) { @@ -160,10 +166,10 @@ $(document) // create the internal table and add list.js to them var thead = $(this) .siblings("thead:first") - .clone(); + .clone(true); var tbody = $(this) - .clone(); + .clone(true); var tbody_rows = $(tbody) .find("tr") @@ -178,7 +184,7 @@ $(document) var parent = $(table) .parent() - .clone(); + .clone(true); $(parent) .children("table") @@ -204,12 +210,12 @@ $(document) } let newlist = new List(hook, pagination ? { - valueNames: fields, - pagination: pagination, - page: items_per_page - } : { - valueNames: fields - }); + valueNames: fields, + pagination: pagination, + page: items_per_page + } : { + valueNames: fields + }); // override search module with a patched version // see https://github.com/javve/list.js/issues/699 // TODO: check if this is still needed if list.js ever sees an update @@ -220,7 +226,7 @@ $(document) if (enable_search) { reset_search.on("click", function () { search_field.val(""); - $.each(list_instance, (i, e) => { + $.each(list_instance, (_, e) => { e.search(); }); }); @@ -229,7 +235,7 @@ $(document) if (event.key == "Escape") { reset_search.trigger("click"); } else { - $.each(list_instance, (i, e) => { + $.each(list_instance, (_, e) => { e.search($(this) .val()); }); @@ -242,15 +248,19 @@ $(document) .on("click", function () { var order = $(this) .hasClass("asc") ? "desc" : "asc"; - $.each(list_instance, (i, e) => { + $.each(list_instance, (_, e) => { e.sort($(this) - .attr("data-sort"), { order: order, sortFunction: text_sort }); + .attr("data-sort"), { + order: order, + sortFunction: text_sort + }); }); }); $.each(list_instance, (i, e) => { e.on("sortComplete", function () { replace_with_internal(table, internal_table, i); + $(table).find("[data-bs-original-title]").tooltip(); if (i == list_instance.length - 1) { $(table) .find("thead:first tr") @@ -266,6 +276,9 @@ $(document) }); } }); + e.on("searchComplete", function () { + replace_with_internal(table, internal_table, i); + }); }); $(table.addClass("tablesorter-done")); @@ -283,8 +296,11 @@ $(document) if (presort_col) { const order = presort_col.attr("data-default-sort"); if (order === "asc" || order === "desc") { - $.each(list_instance, (i, e) => { - e.sort(presort_col.attr("data-sort"), { order: order, sortFunction: text_sort }); + $.each(list_instance, (_, e) => { + e.sort(presort_col.attr("data-sort"), { + order: order, + sortFunction: text_sort + }); }); } } diff --git a/ietf/static/js/meeting-interim-request.js b/ietf/static/js/meeting-interim-request.js index e833cec1c8..b7f7e3d997 100644 --- a/ietf/static/js/meeting-interim-request.js +++ b/ietf/static/js/meeting-interim-request.js @@ -207,11 +207,12 @@ const interimRequest = (function() { toggleLocation: function () { if (this.checked) { - $(".location") + $(".location input, .location select") .prop('disabled', false); } else { - $(".location") - .prop('disabled', true); + $(".location input, .location select") + .prop('disabled', true) + .val(''); } }, diff --git a/ietf/static/js/theme.js b/ietf/static/js/theme.js index d244eec288..d10a472569 100644 --- a/ietf/static/js/theme.js +++ b/ietf/static/js/theme.js @@ -3,6 +3,7 @@ * Copyright 2011-2023 The Bootstrap Authors * Licensed under the Creative Commons Attribution 3.0 Unported License. * + * Based on the below, with some changes for the datatracker: * https://github.com/twbs/bootstrap/blob/main/site/static/docs/5.3/assets/js/color-modes.js */ @@ -45,9 +46,10 @@ // Commented-out lines are from the original bs5 js, which uses a more complicated pref dropdown. // Kept them here for easier future diffing. const themeSwitcherText = document.querySelector('#bd-theme-text') - // const activeThemeIcon = document.querySelector('.theme-icon-active use') + const activeThemeIcon = document.querySelector('.theme-icon-active') const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) - // const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href') + const iconPattern = new RegExp(/\bbi-[\w-]+\b/); + const iconOfActiveBtn = btnToActive.querySelector('i').className.match(iconPattern)[0] document.querySelectorAll('[data-bs-theme-value]').forEach(element => { element.classList.remove('active') @@ -56,10 +58,13 @@ btnToActive.classList.add('active') btnToActive.setAttribute('aria-pressed', 'true') - // activeThemeIcon.setAttribute('href', svgOfActiveBtn) - // const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` - // themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) - + if (activeThemeIcon) { + activeThemeIcon.className = activeThemeIcon.className.replace(iconPattern, iconOfActiveBtn) + } + if (themeSwitcherText) { + const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` + themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) + } if (focus) { themeSwitcher.focus() } diff --git a/ietf/static/js/upcoming.js b/ietf/static/js/upcoming.js index 0785d02cc7..9ab5821c04 100644 --- a/ietf/static/js/upcoming.js +++ b/ietf/static/js/upcoming.js @@ -34,7 +34,7 @@ function filter_calendar_events(filter_params, event_list) { } // format a moment in a tz -var moment_formats = { time: 'HH:mm', date: 'YYYY-MM-DD', datetime: 'YYYY-MM-DD HH:mm' }; +var moment_formats = { time: 'HH:mm', date: 'YYYY-MM-DD', datetime: 'YYYY-MM-DD HH:mm' , timezone: 'z'}; function format_moment(t_moment, tz, fmt_type) { return t_moment.tz(tz) @@ -43,6 +43,9 @@ function format_moment(t_moment, tz, fmt_type) { function make_display_events(event_data, tz) { var calendarEl = document.getElementById('calendar'); + if (!calendarEl) { + return; + } var glue = calendarEl.clientWidth > 720 ? ' ' : '\n'; return $.map(event_data, function (src_event) { var title; @@ -83,6 +86,9 @@ function update_calendar(tz, filter_params) { * filtered events. */ var calendarEl = document.getElementById('calendar'); + if (!calendarEl) { + return; + } event_calendar = new FullCalendar(calendarEl, { plugins: [dayGridPlugin, bootstrap5Plugin], initialView: 'dayGridMonth', @@ -136,7 +142,7 @@ function format_session_time(session_elt, tz) { .attr('data-start-utc')); var end = moment.utc($(session_elt) .attr('data-end-utc')); - return format_moment(start, tz, 'datetime') + '-' + format_moment(end, tz, 'time'); + return format_moment(start, tz, 'datetime') + '-' + format_moment(end, tz, 'time') + ' ' + format_moment(start, tz, 'timezone'); } function format_meeting_time(meeting_elt, tz) { diff --git a/ietf/static/js/upload-session-agenda.js b/ietf/static/js/upload-session-agenda.js new file mode 100644 index 0000000000..b63d460ed8 --- /dev/null +++ b/ietf/static/js/upload-session-agenda.js @@ -0,0 +1,28 @@ +$(document) + .ready(function () { + var form = $("form.my-3"); + + // review submission selection + form.find("[name=submission_method]") + .on("click change", function () { + var val = form.find("[name=submission_method]:checked") + .val(); + + var shouldBeVisible = { + upload: ['[name="file"]'], + enter: ['[name="content"]'] + }; + + for (var v in shouldBeVisible) { + for (var i in shouldBeVisible[v]) { + var selector = shouldBeVisible[v][i]; + var row = form.find(selector).parent(); + if ($.inArray(selector, shouldBeVisible[val]) != -1) + row.show(); + else + row.hide(); + } + } + }) + .trigger("change"); + }); \ No newline at end of file diff --git a/ietf/stats/backfill_data.py b/ietf/stats/backfill_data.py deleted file mode 100755 index 176ee3335b..0000000000 --- a/ietf/stats/backfill_data.py +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env python -# Copyright The IETF Trust 2017-2020, All Rights Reserved -# -*- coding: utf-8 -*- - - -import io -import sys -import os -import os.path -import argparse -import time - -from typing import Set, Optional # pyflakes:ignore - -basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) -sys.path = [ basedir ] + sys.path -os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" - -virtualenv_activation = os.path.join(basedir, "env", "bin", "activate_this.py") -if os.path.exists(virtualenv_activation): - exec(compile(io.open(virtualenv_activation, "rb").read(), virtualenv_activation, 'exec'), dict(__file__=virtualenv_activation)) - -import django -django.setup() - -from django.conf import settings - -import debug # pyflakes:ignore - -from ietf.doc.models import Document -from ietf.name.models import FormalLanguageName -from ietf.utils.draft import PlaintextDraft - -parser = argparse.ArgumentParser() -parser.add_argument("--document", help="specific document name") -parser.add_argument("--words", action="store_true", help="fill in word count") -parser.add_argument("--formlang", action="store_true", help="fill in formal languages") -parser.add_argument("--authors", action="store_true", help="fill in author info") -args = parser.parse_args() - -formal_language_dict = { l.pk: l for l in FormalLanguageName.objects.all() } - -docs_qs = Document.objects.filter(type="draft") - -if args.document: - docs_qs = docs_qs.filter(docalias__name=args.document) - -ts = time.strftime("%Y-%m-%d_%H:%M%z") -logfile = io.open('backfill-authorstats-%s.log'%ts, 'w') -print("Writing log to %s" % os.path.abspath(logfile.name)) - -def say(msg): - msg = msg.encode('utf8') - sys.stderr.write(msg) - sys.stderr.write('\n') - logfile.write(msg) - logfile.write('\n') - -def unicode(text): - if text is None: - return text - # order matters here: - for encoding in ['ascii', 'utf8', 'latin1', ]: - try: - utext = text.decode(encoding) -# if encoding == 'latin1': -# say("Warning: falling back to latin1 decoding for %s ..." % utext[:216]]) - return utext - except UnicodeDecodeError: - pass - -start = time.time() -say("Running query for documents to process ...") -for doc in docs_qs.prefetch_related("docalias", "formal_languages", "documentauthor_set", "documentauthor_set__person", "documentauthor_set__person__alias_set"): - canonical_name = doc.name - for n in doc.docalias.all(): - if n.name.startswith("rfc"): - canonical_name = n.name - - if canonical_name.startswith("rfc"): - path = os.path.join(settings.RFC_PATH, canonical_name + ".txt") - else: - path = os.path.join(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR, canonical_name + "-" + doc.rev + ".txt") - - if not os.path.exists(path): - say("Skipping %s, no txt file found at %s" % (doc.name, path)) - continue - - with io.open(path, 'rb') as f: - say("\nProcessing %s" % doc.name) - sys.stdout.flush() - d = PlaintextDraft(unicode(f.read()), path) - - updated = False - - updates = {} - - if args.words: - words = d.get_wordcount() - if words != doc.words: - updates["words"] = words - - if args.formlang: - langs = d.get_formal_languages() - - new_formal_languages = set(formal_language_dict[l] for l in langs) - old_formal_languages = set(doc.formal_languages.all()) - - if new_formal_languages != old_formal_languages: - for l in new_formal_languages - old_formal_languages: - doc.formal_languages.add(l) - updated = True - for l in old_formal_languages - new_formal_languages: - doc.formal_languages.remove(l) - updated = True - - if args.authors: - old_authors = doc.documentauthor_set.all() - old_authors_by_name = {} - old_authors_by_email = {} - for author in old_authors: - for alias in author.person.alias_set.all(): - old_authors_by_name[alias.name] = author - old_authors_by_name[author.person.plain_name()] = author - - if author.email_id: - old_authors_by_email[author.email_id] = author - - # the draft parser sometimes has a problem when - # affiliation isn't in the second line and it then thinks - # it's an extra author - skip those extra authors - seen = set() # type: Set[Optional[str]] - for full, _, _, _, _, email, country, company in d.get_author_list(): - assert full is None or isinstance(full, str) - assert email is None or isinstance(email, str) - assert country is None or isinstance(country, str) - assert isinstance(company, str) - #full, email, country, company = [ unicode(s) for s in [full, email, country, company, ] ] - if email in seen: - continue - seen.add(email) - - old_author = None - if email: - old_author = old_authors_by_email.get(email) - if not old_author: - old_author = old_authors_by_name.get(full) - - if not old_author: - say("UNKNOWN AUTHOR: %s, %s, %s, %s, %s" % (doc.name, full, email, country, company)) - continue - - if old_author.affiliation != company: - say("new affiliation: %s [ %s <%s> ] %s -> %s" % (canonical_name, full, email, old_author.affiliation, company)) - old_author.affiliation = company - old_author.save(update_fields=["affiliation"]) - updated = True - - if country is None: - country = "" - - if old_author.country != country: - say("new country: %s [ %s <%s> ] %s -> %s" % (canonical_name , full, email, old_author.country, country)) - old_author.country = country - old_author.save(update_fields=["country"]) - updated = True - - - if updates: - Document.objects.filter(pk=doc.pk).update(**updates) - updated = True - - if updated: - say("updated: %s" % canonical_name) - -stop = time.time() -dur = stop-start -sec = dur%60 -min = dur//60 -say("Processing time %d:%02d" % (min, sec)) - -print("\n\nWrote log to %s" % os.path.abspath(logfile.name)) -logfile.close() - diff --git a/ietf/stats/migrations/0002_fix_meeting_registration_reg_type.py b/ietf/stats/migrations/0002_fix_meeting_registration_reg_type.py new file mode 100644 index 0000000000..c1c516b290 --- /dev/null +++ b/ietf/stats/migrations/0002_fix_meeting_registration_reg_type.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2.6 on 2023-10-27 17:57 + +''' +MeetingRegistration reg_type and checkedin fields are not populated for meetings +prior to 108. For meetings 72-106, all records are for onsite checkedin participants. +For meeting 107 all records are for remote paticipants. Set accordingly. +''' + +from django.db import migrations + + +def forward(apps, schema_editor): + MeetingRegistration = apps.get_model("stats", "MeetingRegistration") + MeetingRegistration.objects.filter(meeting__number=107).update(reg_type='remote') + MeetingRegistration.objects.filter(meeting__number__lte=106, reg_type='').update(reg_type='onsite', checkedin=True) + + +def reverse(apps, schema_editor): + MeetingRegistration = apps.get_model("stats", "MeetingRegistration") + MeetingRegistration.objects.filter(meeting__number=107).update(reg_type='') + MeetingRegistration.objects.filter(meeting__number__lte=106, reg_type='onsite').update(reg_type='', checkedin=False) + + +class Migration(migrations.Migration): + dependencies = [ + ("stats", "0001_initial"), + ] + + operations = [ + migrations.RunPython(forward, reverse), + ] diff --git a/ietf/stats/models.py b/ietf/stats/models.py index 0871804b0e..6993343922 100644 --- a/ietf/stats/models.py +++ b/ietf/stats/models.py @@ -11,6 +11,10 @@ from ietf.person.models import Person from ietf.utils.models import ForeignKey +### NOTE WELL: These models are expected to be removed and the stats app reimplemented. +# A bare python file that should have been a management command was used to populate +# these models when the app was first installed - it has been removed from main, but +# can be seen at https://github.com/ietf-tools/datatracker/blob/f2b716fc052a0152c32b86b428ba6ebfdcdf5cd2/ietf/stats/backfill_data.py class AffiliationAlias(models.Model): """Records that alias should be treated as name for statistical diff --git a/ietf/stats/tests.py b/ietf/stats/tests.py index dae3527526..5f23b1b0a0 100644 --- a/ietf/stats/tests.py +++ b/ietf/stats/tests.py @@ -20,7 +20,7 @@ from ietf.submit.models import Submission from ietf.doc.factories import WgDraftFactory, WgRfcFactory -from ietf.doc.models import Document, DocAlias, State, RelatedDocument, NewRevisionDocEvent, DocumentAuthor +from ietf.doc.models import Document, State, RelatedDocument, NewRevisionDocEvent, DocumentAuthor from ietf.group.factories import RoleFactory from ietf.meeting.factories import MeetingFactory, AttendedFactory from ietf.person.factories import PersonFactory @@ -79,10 +79,9 @@ def test_document_stats(self): words=100 ) referencing_draft.set_state(State.objects.get(used=True, type="draft", slug="active")) - DocAlias.objects.create(name=referencing_draft.name).docs.add(referencing_draft) RelatedDocument.objects.create( source=referencing_draft, - target=draft.docalias.first(), + target=draft, relationship=DocRelationshipName.objects.get(slug="refinfo") ) NewRevisionDocEvent.objects.create( @@ -273,3 +272,31 @@ def test_get_meeting_registration_data(self, mock_get): self.assertEqual(query.count(), 1) self.assertEqual(query.filter(reg_type='onsite').count(), 1) self.assertEqual(query.filter(reg_type='hackathon').count(), 0) + + @patch('requests.get') + def test_get_meeting_registration_data_duplicates(self, mock_get): + '''Test that get_meeting_registration_data does not create duplicate + MeetingRegistration records + ''' + person = PersonFactory() + data = { + 'LastName': person.last_name() + ' ', + 'FirstName': person.first_name(), + 'Company': 'ABC', + 'Country': 'US', + 'Email': person.email().address, + 'RegType': 'onsite', + 'TicketType': 'week_pass', + 'CheckedIn': 'True', + } + data2 = data.copy() + data2['RegType'] = 'hackathon' + response = Response() + response.status_code = 200 + response._content = json.dumps([data, data2, data]).encode('utf8') + mock_get.return_value = response + meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016, 7, 14), number="96") + self.assertEqual(MeetingRegistration.objects.count(), 0) + get_meeting_registration_data(meeting) + query = MeetingRegistration.objects.all() + self.assertEqual(query.count(), 2) diff --git a/ietf/stats/utils.py b/ietf/stats/utils.py index ca1163e073..1f9c0e3c3a 100644 --- a/ietf/stats/utils.py +++ b/ietf/stats/utils.py @@ -270,11 +270,10 @@ def get_meeting_registration_data(meeting): object = meeting_registrations.pop((address, reg_type)) created = False else: - object = MeetingRegistration.objects.create( + object, created = MeetingRegistration.objects.get_or_create( meeting_id=meeting.pk, email=address, reg_type=reg_type) - created = True if (object.first_name != first_name[:200] or object.last_name != last_name[:200] or diff --git a/ietf/stats/views.py b/ietf/stats/views.py index 44fbfb7179..23e90ea23c 100644 --- a/ietf/stats/views.py +++ b/ietf/stats/views.py @@ -14,7 +14,7 @@ from django.conf import settings from django.contrib.auth.decorators import login_required from django.core.cache import cache -from django.db.models import Count, Q +from django.db.models import Count, Q, Subquery, OuterRef from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.urls import reverse as urlreverse @@ -34,7 +34,7 @@ from ietf.person.models import Person from ietf.name.models import ReviewResultName, CountryName, DocRelationshipName, ReviewAssignmentStateName from ietf.person.name import plain_name -from ietf.doc.models import DocAlias, Document, State, DocEvent +from ietf.doc.models import Document, RelatedDocument, State, DocEvent from ietf.meeting.models import Meeting from ietf.stats.models import MeetingRegistration, CountryAlias from ietf.stats.utils import get_aliased_affiliations, get_aliased_countries, compute_hirsch_index @@ -214,13 +214,13 @@ def build_document_stats_url(stats_type_override=Ellipsis, get_overrides=None): if any(stats_type == t[0] for t in possible_document_stats_types): # filter documents - docalias_filters = Q(docs__type="draft") + document_filters = Q(type__in=["draft","rfc"]) # TODO - review lots of "rfc is a draft" assumptions below - rfc_state = State.objects.get(type="draft", slug="rfc") + rfc_state = State.objects.get(type="rfc", slug="published") if document_type == "rfc": - docalias_filters &= Q(docs__states=rfc_state) + document_filters &= Q(states=rfc_state) elif document_type == "draft": - docalias_filters &= ~Q(docs__states=rfc_state) + document_filters &= ~Q(states=rfc_state) if from_time: # this is actually faster than joining in the database, @@ -229,11 +229,11 @@ def build_document_stats_url(stats_type_override=Ellipsis, get_overrides=None): type="draft", docevent__time__gte=from_time, docevent__type__in=["published_rfc", "new_revision"], - ).values_list("pk")) + ).values_list("pk",flat=True)) - docalias_filters &= Q(docs__in=docs_within_time_constraint) + document_filters &= Q(pk__in=docs_within_time_constraint) - docalias_qs = DocAlias.objects.filter(docalias_filters) + document_qs = Document.objects.filter(document_filters) if document_type == "rfc": doc_label = "RFC" @@ -242,28 +242,15 @@ def build_document_stats_url(stats_type_override=Ellipsis, get_overrides=None): else: doc_label = "document" - total_docs = docalias_qs.values_list("docs__name").distinct().count() - - def generate_canonical_names(values): - for doc_id, ts in itertools.groupby(values.order_by("docs__name"), lambda a: a[0]): - chosen = None - for t in ts: - if chosen is None: - chosen = t - else: - if t[1].startswith("rfc"): - chosen = t - elif t[1].startswith("draft") and not chosen[1].startswith("rfc"): - chosen = t - yield chosen + total_docs = document_qs.values_list("name").distinct().count() if stats_type == "authors": stats_title = "Number of authors for each {}".format(doc_label) bins = defaultdict(set) - for name, canonical_name, author_count in generate_canonical_names(docalias_qs.values_list("docs__name", "name").annotate(Count("docs__documentauthor"))): - bins[author_count or 0].add(canonical_name) + for name, author_count in document_qs.values_list("name").annotate(Count("documentauthor")).values_list("name","documentauthor__count"): + bins[author_count or 0].add(name) series_data = [] for author_count, names in sorted(bins.items(), key=lambda t: t[0]): @@ -278,8 +265,8 @@ def generate_canonical_names(values): bins = defaultdict(set) - for name, canonical_name, pages in generate_canonical_names(docalias_qs.values_list("docs__name", "name", "docs__pages")): - bins[pages or 0].add(canonical_name) + for name, pages in document_qs.values_list("name", "pages"): + bins[pages or 0].add(name) series_data = [] for pages, names in sorted(bins.items(), key=lambda t: t[0]): @@ -297,8 +284,8 @@ def generate_canonical_names(values): bins = defaultdict(set) - for name, canonical_name, words in generate_canonical_names(docalias_qs.values_list("docs__name", "name", "docs__words")): - bins[put_into_bin(words, bin_size)].add(canonical_name) + for name, words in document_qs.values_list("name", "words"): + bins[put_into_bin(words, bin_size)].add(name) series_data = [] for (value, words), names in sorted(bins.items(), key=lambda t: t[0][0]): @@ -322,20 +309,20 @@ def generate_canonical_names(values): submission_types[doc_name] = file_types doc_names_with_missing_types = {} - for doc_name, canonical_name, rev in generate_canonical_names(docalias_qs.values_list("docs__name", "name", "docs__rev")): + for doc_name, doc_type, rev in document_qs.values_list("name", "type_id", "rev"): types = submission_types.get(doc_name) if types: for dot_ext in types.split(","): - bins[dot_ext.lstrip(".").upper()].add(canonical_name) + bins[dot_ext.lstrip(".").upper()].add(doc_name) else: - if canonical_name.startswith("rfc"): - filename = canonical_name + if doc_type == "rfc": + filename = doc_name else: - filename = canonical_name + "-" + rev + filename = doc_name + "-" + rev - doc_names_with_missing_types[filename] = canonical_name + doc_names_with_missing_types[filename] = doc_name # look up the remaining documents on disk for filename in itertools.chain(os.listdir(settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR), os.listdir(settings.RFC_PATH)): @@ -348,10 +335,10 @@ def generate_canonical_names(values): if not any(ext==allowlisted_ext for allowlisted_ext in settings.DOCUMENT_FORMAT_ALLOWLIST): continue - canonical_name = doc_names_with_missing_types.get(basename) + name = doc_names_with_missing_types.get(basename) - if canonical_name: - bins[ext.upper()].add(canonical_name) + if name: + bins[ext.upper()].add(name) series_data = [] for fmt, names in sorted(bins.items(), key=lambda t: t[0]): @@ -367,8 +354,8 @@ def generate_canonical_names(values): bins = defaultdict(set) - for name, canonical_name, formal_language_name in generate_canonical_names(docalias_qs.values_list("docs__name", "name", "docs__formal_languages__name")): - bins[formal_language_name or ""].add(canonical_name) + for name, formal_language_name in document_qs.values_list("name", "formal_languages__name"): + bins[formal_language_name or ""].add(name) series_data = [] for formal_language, names in sorted(bins.items(), key=lambda t: t[0]): @@ -383,7 +370,7 @@ def generate_canonical_names(values): person_filters = Q(documentauthor__document__type="draft") # filter persons - rfc_state = State.objects.get(type="draft", slug="rfc") + rfc_state = State.objects.get(type="rfc", slug="published") if document_type == "rfc": person_filters &= Q(documentauthor__document__states=rfc_state) elif document_type == "draft": @@ -563,11 +550,11 @@ def generate_canonical_names(values): bins = defaultdict(set) cite_relationships = list(DocRelationshipName.objects.filter(slug__in=['refnorm', 'refinfo', 'refunk', 'refold'])) - person_filters &= Q(documentauthor__document__docalias__relateddocument__relationship__in=cite_relationships) + person_filters &= Q(documentauthor__document__relateddocument__relationship__in=cite_relationships) person_qs = Person.objects.filter(person_filters) - for name, citations in person_qs.values_list("name").annotate(Count("documentauthor__document__docalias__relateddocument")): + for name, citations in person_qs.values_list("name").annotate(Count("documentauthor__document__relateddocument")): bins[citations or 0].add(name) total_persons = count_bins(bins) @@ -587,11 +574,11 @@ def generate_canonical_names(values): bins = defaultdict(set) cite_relationships = list(DocRelationshipName.objects.filter(slug__in=['refnorm', 'refinfo', 'refunk', 'refold'])) - person_filters &= Q(documentauthor__document__docalias__relateddocument__relationship__in=cite_relationships) + person_filters &= Q(documentauthor__document__relateddocument__relationship__in=cite_relationships) person_qs = Person.objects.filter(person_filters) - values = person_qs.values_list("name", "documentauthor__document").annotate(Count("documentauthor__document__docalias__relateddocument")) + values = person_qs.values_list("name", "documentauthor__document").annotate(Count("documentauthor__document__relateddocument")) for name, ts in itertools.groupby(values.order_by("name"), key=lambda t: t[0]): h_index = compute_hirsch_index([citations for _, document, citations in ts]) bins[h_index or 0].add(name) @@ -612,7 +599,7 @@ def generate_canonical_names(values): person_filters = Q(documentauthor__document__type="draft") # filter persons - rfc_state = State.objects.get(type="draft", slug="rfc") + rfc_state = State.objects.get(type="rfc", slug="published") if document_type == "rfc": person_filters &= Q(documentauthor__document__states=rfc_state) elif document_type == "draft": @@ -620,15 +607,31 @@ def generate_canonical_names(values): doc_years = defaultdict(set) - docevent_qs = DocEvent.objects.filter( + draftevent_qs = DocEvent.objects.filter( doc__type="draft", - type__in=["published_rfc", "new_revision"], - ).values_list("doc", "time").order_by("doc") + type = "new_revision", + ).values_list("doc","time").order_by("doc") - for doc_id, time in docevent_qs.iterator(): + for doc_id, time in draftevent_qs.iterator(): # RPC_TZINFO is used to match the timezone handling in Document.pub_date() doc_years[doc_id].add(time.astimezone(RPC_TZINFO).year) + rfcevent_qs = ( + DocEvent.objects.filter(doc__type="rfc", type="published_rfc") + .annotate( + draft=Subquery( + RelatedDocument.objects.filter( + target=OuterRef("doc__pk"), relationship_id="became_rfc" + ).values_list("source", flat=True)[:1] + ) + ) + .values_list("draft", "time") + .order_by("draft") + ) + + for doc_id, time in rfcevent_qs.iterator(): + doc_years[doc_id].add(time.astimezone(RPC_TZINFO).year) + person_qs = Person.objects.filter(person_filters) if document_type == "rfc": diff --git a/ietf/submit/.gitignore b/ietf/submit/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/submit/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/submit/forms.py b/ietf/submit/forms.py index 3950cdc04d..f857ac9fd8 100644 --- a/ietf/submit/forms.py +++ b/ietf/submit/forms.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2011-2022, All Rights Reserved +# Copyright The IETF Trust 2011-2023, All Rights Reserved # -*- coding: utf-8 -*- @@ -28,8 +28,7 @@ from ietf.doc.models import Document from ietf.group.models import Group from ietf.ietfauth.utils import has_role -from ietf.doc.fields import SearchableDocAliasesField -from ietf.doc.models import DocAlias +from ietf.doc.fields import SearchableDocumentsField from ietf.ipr.mail import utc_from_string from ietf.meeting.models import Meeting from ietf.message.models import Message @@ -42,7 +41,7 @@ from ietf.utils.draft import PlaintextDraft from ietf.utils.text import normalize_text from ietf.utils.timezone import date_today -from ietf.utils.xmldraft import XMLDraft, XMLParseError +from ietf.utils.xmldraft import InvalidXMLError, XMLDraft, XMLParseError class SubmissionBaseUploadForm(forms.Form): @@ -168,6 +167,11 @@ def cleanup(): # called when context exited, even in case of exception try: xml_draft = XMLDraft(tfn) + except InvalidXMLError: + raise forms.ValidationError( + "The uploaded file is not valid XML. Please make sure you are uploading the correct file.", + code="invalid_xml_error", + ) except XMLParseError as e: msgs = format_messages('xml', e, e.parser_msgs()) raise forms.ValidationError(msgs, code="xml_parse_error") @@ -537,8 +541,7 @@ def cleanup(): # called when context exited, even in case of exception bytes = txt_file.read() txt_file.seek(0) try: - text = bytes.decode(self.file_info['txt'].charset) - # + text = bytes.decode(PlainParser.encoding) self.parsed_draft = PlaintextDraft(text, txt_file.name) if self.filename == None: self.filename = self.parsed_draft.filename @@ -649,7 +652,7 @@ def clean_txt(self): txt_file.seek(0) bytes = txt_file.read() try: - text = bytes.decode(self.file_info["txt"].charset) + text = bytes.decode(PlainParser.encoding) parsed_draft = PlaintextDraft(text, txt_file.name) self._extracted_filenames_and_revisions["txt"] = (parsed_draft.filename, parsed_draft.revision) except (UnicodeDecodeError, LookupError) as e: @@ -684,9 +687,9 @@ def clean(self): if self.cleaned_data['replaces']: names_replaced = [s.strip() for s in self.cleaned_data['replaces'].split(',')] self.cleaned_data['replaces'] = ','.join(names_replaced) - aliases_replaced = DocAlias.objects.filter(name__in=names_replaced) - if len(names_replaced) != len(aliases_replaced): - known_names = aliases_replaced.values_list('name', flat=True) + documents_replaced = Document.objects.filter(name__in=names_replaced) + if len(names_replaced) != len(documents_replaced): + known_names = documents_replaced.values_list('name', flat=True) unknown_names = [n for n in names_replaced if n not in known_names] self.add_error( 'replaces', @@ -694,27 +697,27 @@ def clean(self): 'Unknown Internet-Draft name(s): ' + ', '.join(unknown_names) ), ) - for alias in aliases_replaced: - if alias.document.name == self.filename: + for doc in documents_replaced: + if doc.name == self.filename: self.add_error( 'replaces', forms.ValidationError("An Internet-Draft cannot replace itself"), ) - elif alias.document.type_id != "draft": + elif doc.type_id != "draft": self.add_error( 'replaces', forms.ValidationError("An Internet-Draft can only replace another Internet-Draft"), ) - elif alias.document.get_state_slug() == "rfc": + elif doc.get_state_slug() == "rfc": self.add_error( 'replaces', - forms.ValidationError("An Internet-Draft cannot replace an RFC"), + forms.ValidationError("An Internet-Draft cannot replace another Internet-Draft that has become an RFC"), ) - elif alias.document.get_state_slug('draft-iesg') in ('approved', 'ann', 'rfcqueue'): + elif doc.get_state_slug('draft-iesg') in ('approved', 'ann', 'rfcqueue'): self.add_error( 'replaces', forms.ValidationError( - alias.name + " is approved by the IESG and cannot be replaced" + doc.name + " is approved by the IESG and cannot be replaced" ), ) return cleaned_data @@ -754,23 +757,35 @@ def cleaned_line(self): line = formataddr((line, email)) return line + def clean_name(self): + name = super(SubmitterForm, self).clean_name() + if name.startswith('=?'): + msg = f'"{name}" appears to be a MIME-encoded string.' + try: + import email.header + text, encoding = email.header.decode_header(name)[0] + decoded_name = text.decode(encoding) + msg += f' Did you mean "{decoded_name}"?' + except: + pass + raise forms.ValidationError(msg) + return name + class ReplacesForm(forms.Form): - replaces = SearchableDocAliasesField(required=False, help_text="Any Internet-Drafts that this document replaces (approval required for replacing an Internet-Draft you are not the author of)") + replaces = SearchableDocumentsField(required=False, help_text="Any Internet-Drafts that this document replaces (approval required for replacing an Internet-Draft you are not the author of)") def __init__(self, *args, **kwargs): self.name = kwargs.pop("name") super(ReplacesForm, self).__init__(*args, **kwargs) def clean_replaces(self): - for alias in self.cleaned_data['replaces']: - if alias.document.name == self.name: + for doc in self.cleaned_data['replaces']: + if doc.name == self.name: raise forms.ValidationError("An Internet-Draft cannot replace itself.") - if alias.document.type_id != "draft": + if doc.type_id != "draft": raise forms.ValidationError("An Internet-Draft can only replace another Internet-Draft") - if alias.document.get_state_slug() == "rfc": - raise forms.ValidationError("An Internet-Draft cannot replace an RFC") - if alias.document.get_state_slug('draft-iesg') in ('approved','ann','rfcqueue'): - raise forms.ValidationError(alias.name+" is approved by the IESG and cannot be replaced") + if doc.get_state_slug('draft-iesg') in ('approved','ann','rfcqueue'): + raise forms.ValidationError(doc.name+" is approved by the IESG and cannot be replaced") return self.cleaned_data['replaces'] class EditSubmissionForm(forms.ModelForm): diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 0f9a86cd22..51f7541e31 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -79,11 +79,18 @@ def existing_document(self): return Document.objects.filter(name=self.name).first() def latest_checks(self): - checks = [ self.checks.filter(checker=c).latest('time') for c in self.checks.values_list('checker', flat=True).distinct() ] - return checks + """Latest check of each type, excluding any that did not apply + + Ignores any checks where passed is None + """ + latest_for_each_checker = [ + self.checks.filter(checker=c).latest("time") + for c in self.checks.values_list("checker", flat=True).distinct() + ] + return [check for check in latest_for_each_checker if check.passed is not None] def has_yang(self): - return any ( [ c.checker=='yang validation' and c.passed is not None for c in self.latest_checks()] ) + return any(c.checker == "yang validation" for c in self.latest_checks()) @property def replaces_names(self): @@ -108,14 +115,14 @@ def revises_wg_draft(self): @property def active_wg_drafts_replaced(self): return Document.objects.filter( - docalias__name__in=self.replaces.split(','), + name__in=self.replaces.split(','), group__in=Group.objects.active_wgs() ) @property def closed_wg_drafts_replaced(self): return Document.objects.filter( - docalias__name__in=self.replaces.split(','), + name__in=self.replaces.split(','), group__in=Group.objects.closed_wgs() ) diff --git a/ietf/submit/parsers/.gitignore b/ietf/submit/parsers/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/submit/parsers/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/submit/parsers/base.py b/ietf/submit/parsers/base.py index 679798cc4e..d38ab1d7b8 100644 --- a/ietf/submit/parsers/base.py +++ b/ietf/submit/parsers/base.py @@ -1,20 +1,19 @@ -# Copyright The IETF Trust 2011-2020, All Rights Reserved +# Copyright The IETF Trust 2011-2023, All Rights Reserved # -*- coding: utf-8 -*- import re -import debug # pyflakes:ignore +import debug # pyflakes:ignore -from typing import List, Optional # pyflakes:ignore +from typing import List, Optional # pyflakes:ignore from django.conf import settings from django.template.defaultfilters import filesizeformat -from ietf.utils.mime import get_mime_type from ietf.utils.timezone import date_today -class MetaData(object): +class MetaData: rev = None name = None group = None @@ -25,7 +24,8 @@ class MetaData(object): document_date = None authors = None -class ParseInfo(object): + +class ParseInfo: """Collect errors from a parse""" def __init__(self): @@ -46,9 +46,9 @@ def add_warning(self, warning_type, warning_str): self.warnings[warning_type] = warn_list + [warning_str] -class FileParser(object): - ext = None # type: Optional[str] - mimetypes = [] # type: List[str] +class FileParser: + ext: Optional[str] = None + encoding = "utf8" def __init__(self, fd): self.fd = fd @@ -58,35 +58,49 @@ def __init__(self, fd): # no other file parsing is recommended def critical_parse(self): self.parse_invalid_chars_in_filename() - self.parse_max_size(); + self.parse_max_size() self.parse_filename_extension() - self.parse_file_type() + self.validate_encoding() self.parsed_info.metadata.submission_date = date_today() return self.parsed_info def parse_invalid_chars_in_filename(self): name = self.fd.name - regexp = re.compile(r'&|\|\/|;|\*|\s|\$') + regexp = re.compile(r"&|\\|/|;|\*|\s|\$") chars = regexp.findall(name) if chars: - self.parsed_info.add_error('Invalid characters were found in the name of the file which was just submitted: %s' % ', '.join(set(chars))) + self.parsed_info.add_error( + "Invalid characters were found in the name of the file which was just submitted: %s" + % ", ".join(set(chars)) + ) def parse_max_size(self): max_size = settings.IDSUBMIT_MAX_DRAFT_SIZE[self.ext] if self.fd.size > max_size: - self.parsed_info.add_error('File size is larger than the permitted maximum of %s' % filesizeformat(max_size)) + self.parsed_info.add_error( + "File size is larger than the permitted maximum of %s" + % filesizeformat(max_size) + ) self.parsed_info.metadata.file_size = self.fd.size def parse_filename_extension(self): - if not self.fd.name.lower().endswith('.'+self.ext): - self.parsed_info.add_error('Expected the %s file to have extension ".%s", found the name "%s"' % (self.ext.upper(), self.ext, self.fd.name)) - - def parse_file_type(self): - self.fd.file.seek(0) - content = self.fd.file.read(64*1024) - mimetype, charset = get_mime_type(content) - if not mimetype in self.mimetypes: - self.parsed_info.add_error('Expected an %s file of type "%s", found one of type "%s"' % (self.ext.upper(), '" or "'.join(self.mimetypes), mimetype)) - self.parsed_info.mimetype = mimetype - self.parsed_info.charset = charset - \ No newline at end of file + if not self.fd.name.lower().endswith("." + self.ext): + self.parsed_info.add_error( + 'Expected the %s file to have extension ".%s", found the name "%s"' + % (self.ext.upper(), self.ext, self.fd.name) + ) + + def validate_encoding(self): + self.fd.seek(0) + bytes = self.fd.read() + try: + bytes.decode(self.encoding) + except UnicodeDecodeError as err: + invalid_bytes = bytes[err.start : err.end] + self.parsed_info.add_error( + "Invalid {} byte(s) starting at byte {}: [{}]".format( + err.encoding, + err.start + 1, + ", ".join(f"0x{b:x}" for b in invalid_bytes) + ) + ) diff --git a/ietf/submit/parsers/plain_parser.py b/ietf/submit/parsers/plain_parser.py index a3338e35a3..091179d992 100644 --- a/ietf/submit/parsers/plain_parser.py +++ b/ietf/submit/parsers/plain_parser.py @@ -10,7 +10,6 @@ class PlainParser(FileParser): ext = 'txt' - mimetypes = ['text/plain', ] def __init__(self, fd): super(PlainParser, self).__init__(fd) @@ -19,54 +18,41 @@ def __init__(self, fd): # no other file parsing is recommended def critical_parse(self): super(PlainParser, self).critical_parse() - self.check_file_charset() self.parse_name() return self.parsed_info - def check_file_charset(self): - charset = self.parsed_info.charset - if not charset in ['us-ascii', 'utf-8',]: - self.parsed_info.add_error('A plain text ASCII document is required. ' - 'Found an unexpected encoding: "%s". ' - 'You probably have one or more non-ascii characters in your file.' % charset - ) - if self.fd.charset and charset != self.fd.charset: - self.parsed_info.add_error("Unexpected charset mismatch: upload: %s, libmagic: %s" % (self.fd.charset, charset)) - - def parse_name(self): self.fd.file.seek(0) draftre = re.compile(r'(draft-\S+)') revisionre = re.compile(r'.*-(\d+)$') limit = 80 - if self.parsed_info.charset in ['us-ascii', 'utf-8']: - while limit: - limit -= 1 - try: - line = self.fd.readline().decode(self.parsed_info.charset) - except UnicodeDecodeError: - return - match = draftre.search(line) - if not match: - continue - name = match.group(1) - name = re.sub(r'^[^\w]+', '', name) - name = re.sub(r'[^\w]+$', '', name) - name = re.sub(r'\.txt$', '', name) - extra_chars = re.sub(r'[0-9a-z\-]', '', name) - if extra_chars: - if len(extra_chars) == 1: - self.parsed_info.add_error(('The document name on the first page, "%s", contains a disallowed character with byte code: %s ' % (name, ord(extra_chars[0]))) + - '(see https://www.ietf.org/id-info/guidelines.html#naming for details).') - else: - self.parsed_info.add_error(('The document name on the first page, "%s", contains disallowed characters with byte codes: %s ' % (name, (', '.join([ str(ord(c)) for c in extra_chars] )))) + - '(see https://www.ietf.org/id-info/guidelines.html#naming for details).') - match_revision = revisionre.match(name) - if match_revision: - self.parsed_info.metadata.rev = match_revision.group(1) - else: - self.parsed_info.add_error('The name found on the first page of the document does not contain a revision: "%s"' % (name,)) - name = re.sub(r'-\d+$', '', name) - self.parsed_info.metadata.name = name + while limit: + limit -= 1 + try: + line = self.fd.readline().decode(self.encoding) + except UnicodeDecodeError: return + match = draftre.search(line) + if not match: + continue + name = match.group(1) + name = re.sub(r'^[^\w]+', '', name) + name = re.sub(r'[^\w]+$', '', name) + name = re.sub(r'\.txt$', '', name) + extra_chars = re.sub(r'[0-9a-z\-]', '', name) + if extra_chars: + if len(extra_chars) == 1: + self.parsed_info.add_error(('The document name on the first page, "%s", contains a disallowed character with byte code: %s ' % (name, ord(extra_chars[0]))) + + '(see https://www.ietf.org/id-info/guidelines.html#naming for details).') + else: + self.parsed_info.add_error(('The document name on the first page, "%s", contains disallowed characters with byte codes: %s ' % (name, (', '.join([ str(ord(c)) for c in extra_chars] )))) + + '(see https://www.ietf.org/id-info/guidelines.html#naming for details).') + match_revision = revisionre.match(name) + if match_revision: + self.parsed_info.metadata.rev = match_revision.group(1) + else: + self.parsed_info.add_error('The name found on the first page of the document does not contain a revision: "%s"' % (name,)) + name = re.sub(r'-\d+$', '', name) + self.parsed_info.metadata.name = name + return self.parsed_info.add_error('The first page of the document does not contain a legitimate name that starts with draft-*') diff --git a/ietf/submit/parsers/tests.py b/ietf/submit/parsers/tests.py new file mode 100644 index 0000000000..9ab529a2fe --- /dev/null +++ b/ietf/submit/parsers/tests.py @@ -0,0 +1,78 @@ +# Copyright The IETF Trust 2023, All Rights Reserved + + +from django.core.files.uploadedfile import SimpleUploadedFile +from django.test.utils import override_settings + +from ietf.utils.test_utils import TestCase + +from .base import FileParser + + +@override_settings(IDSUBMIT_MAX_DRAFT_SIZE={"txt": 100}) +class FileParserTests(TestCase): + class MyParser(FileParser): + """Test parser class (FileParser is not usable on its own)""" + + ext = "txt" + + def test_invalid_encoding(self): + fp = self.MyParser( + SimpleUploadedFile( + name="valid-name.txt", + content=b"This is not valid utf-8 -> \xfe", + content_type="text/plain", + ) + ) + parse_info = fp.critical_parse() + self.assertEqual(len(parse_info.errors), 1) + self.assertIn("Invalid utf-8 byte(s)", parse_info.errors[0]) + self.assertIn("0xfe", parse_info.errors[0]) + + def test_file_too_big(self): + fp = self.MyParser( + SimpleUploadedFile( + name="valid-name.txt", + content=b"1" + b"ten chars!" * 10, # exceeds max size of 100 + content_type="text/plain", + ) + ) + parse_info = fp.critical_parse() + self.assertEqual(len(parse_info.errors), 1) + self.assertIn("File size is larger", parse_info.errors[0]) + + def test_wrong_extension(self): + fp = self.MyParser( + SimpleUploadedFile( + name="invalid-ext.xml", + content=b"This is fine", + content_type="text/plain", + ) + ) + parse_info = fp.critical_parse() + self.assertEqual(len(parse_info.errors), 1) + self.assertIn("Expected the TXT file to have extension", parse_info.errors[0]) + + def test_invalid_char_in_filename(self): + # Can't test "/" in the filename because SimpleUploadedFile treats it as a path separator + for invalid_char in r"&\;*$ ": + uploaded_file = SimpleUploadedFile( + name="invalid" + invalid_char + "name.txt", + content=b"This is fine", + content_type="text/plain", + ) + fp = self.MyParser(uploaded_file) + parse_info = fp.critical_parse() + self.assertEqual( + len(parse_info.errors), 1, f"{invalid_char} should trigger 1 error" + ) + self.assertIn( + "Invalid characters were found", + parse_info.errors[0], + f"{invalid_char} is an invalid char", + ) + self.assertIn( + f": {invalid_char}", + parse_info.errors[0], + f"{invalid_char} is the invalid char", + ) diff --git a/ietf/submit/parsers/xml_parser.py b/ietf/submit/parsers/xml_parser.py index 674646e103..8068579926 100644 --- a/ietf/submit/parsers/xml_parser.py +++ b/ietf/submit/parsers/xml_parser.py @@ -3,7 +3,6 @@ class XMLParser(FileParser): ext = 'xml' - mimetypes = ['application/xml', 'text/xml', ] # If some error is found after this method invocation # no other file parsing is recommended diff --git a/ietf/submit/templatetags/.gitignore b/ietf/submit/templatetags/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/submit/templatetags/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index 81534aaadc..9871023e46 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2011-2022, All Rights Reserved +# Copyright The IETF Trust 2011-2023, All Rights Reserved # -*- coding: utf-8 -*- @@ -32,9 +32,9 @@ process_and_accept_uploaded_submission, SubmissionError, process_submission_text, process_submission_xml, process_uploaded_submission, process_and_validate_submission) -from ietf.doc.factories import (DocumentFactory, WgDraftFactory, IndividualDraftFactory, IndividualRfcFactory, +from ietf.doc.factories import (DocumentFactory, WgDraftFactory, IndividualDraftFactory, ReviewFactory, WgRfcFactory) -from ietf.doc.models import ( Document, DocAlias, DocEvent, State, +from ietf.doc.models import ( Document, DocEvent, State, BallotPositionDocEvent, DocumentAuthor, SubmissionDocEvent ) from ietf.doc.utils import create_ballot_if_not_open, can_edit_docextresources, update_action_holders from ietf.group.factories import GroupFactory, RoleFactory @@ -302,7 +302,7 @@ def supply_extra_metadata(self, name, status_url, submitter_name, submitter_emai submission = Submission.objects.get(name=name) self.assertEqual(submission.submitter, email.utils.formataddr((submitter_name, submitter_email))) self.assertEqual([] if submission.replaces == "" else submission.replaces.split(','), - [ d.name for d in DocAlias.objects.filter(pk__in=replaces) ]) + [ d.name for d in Document.objects.filter(pk__in=replaces) ]) self.assertCountEqual( [str(r) for r in submission.external_resources.all()], [str(r) for r in extresources] if extresources else [], @@ -355,11 +355,8 @@ def submit_new_wg(self, formats): ad=draft.ad, expires=timezone.now() + datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE), notify="aliens@example.mars", - note="", ) sug_replaced_draft.set_state(State.objects.get(used=True, type="draft", slug="active")) - sug_replaced_alias = DocAlias.objects.create(name=sug_replaced_draft.name) - sug_replaced_alias.docs.add(sug_replaced_draft) name = "draft-ietf-mars-testing-tests" rev = "00" @@ -369,9 +366,8 @@ def submit_new_wg(self, formats): # supply submitter info, then draft should be in and ready for approval mailbox_before = len(outbox) - replaced_alias = draft.docalias.first() r = self.supply_extra_metadata(name, status_url, author.ascii, author.email().address.lower(), - replaces=[str(replaced_alias.pk), str(sug_replaced_alias.pk)]) + replaces=[str(draft.pk), str(sug_replaced_draft.pk)]) self.assertEqual(r.status_code, 302) status_url = r["Location"] @@ -401,7 +397,7 @@ def submit_new_wg(self, formats): r = self.client.post(status_url, dict(action=action)) self.assertEqual(r.status_code, 302) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) new_revision = draft.latest_event(type="new_revision") self.assertEqual(draft.group.acronym, "mars") @@ -419,9 +415,9 @@ def submit_new_wg(self, formats): self.assertEqual(authors[0].person, author) self.assertEqual(set(draft.formal_languages.all()), set(FormalLanguageName.objects.filter(slug="json"))) self.assertEqual(draft.relations_that_doc("replaces").count(), 1) - self.assertTrue(draft.relations_that_doc("replaces").first().target, replaced_alias) + self.assertTrue(draft.relations_that_doc("replaces").first().target, draft) self.assertEqual(draft.relations_that_doc("possibly-replaces").count(), 1) - self.assertTrue(draft.relations_that_doc("possibly-replaces").first().target, sug_replaced_alias) + self.assertTrue(draft.relations_that_doc("possibly-replaces").first().target, sug_replaced_draft) self.assertEqual(len(outbox), mailbox_before + 5) self.assertIn(("I-D Action: %s" % name), outbox[-4]["Subject"]) self.assertIn(author.ascii, get_payload_text(outbox[-4])) @@ -434,7 +430,7 @@ def submit_new_wg(self, formats): # Check "Review of suggested possible replacements for..." mail self.assertIn("review", outbox[-1]["Subject"].lower()) self.assertIn(name, get_payload_text(outbox[-1])) - self.assertIn(sug_replaced_alias.name, get_payload_text(outbox[-1])) + self.assertIn(sug_replaced_draft.name, get_payload_text(outbox[-1])) self.assertIn("ames-chairs@", outbox[-1]["To"].lower()) self.assertIn("mars-chairs@", outbox[-1]["To"].lower()) # Check submission settings @@ -496,6 +492,25 @@ def test_submit_new_wg_as_author(self): self.assertEqual(r.status_code, 200) self.assertContains(r, 'The submission is pending approval by the group chairs.') + def test_submit_new_wg_as_author_bad_submitter(self): + # submit new -> supply submitter info -> approve + mars = GroupFactory(type_id='wg', acronym='mars') + draft = WgDraftFactory(group=mars) + setup_default_community_list_for_group(draft.group) + + name = "draft-ietf-mars-testing-tests" + rev = "00" + group = "mars" + + status_url, author = self.do_submission(name, rev, group) + username = author.user.email + + # supply submitter info with MIME-encoded name + self.client.login(username=username, password=username+'+password') # log in as the author + r = self.supply_extra_metadata(name, status_url, '=?utf-8?q?Peter_Christen_Asbj=C3=B8rnsen?=', author.email().address.lower(), replaces=[]) + self.assertEqual(r.status_code, 200) + self.assertContains(r, 'appears to be a MIME-encoded string') + def submit_new_concluded_wg_as_author(self, group_state_id='conclude'): """A new concluded WG submission by a logged-in author needs AD approval""" mars = GroupFactory(type_id='wg', acronym='mars', state_id=group_state_id) @@ -685,7 +700,7 @@ def _assert_authors_are_action_holders(draft, expect=True): self.assertTrue('New version approved' in edescs) self.assertTrue('Uploaded new revision' in edescs) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) self.assertEqual(draft.group.acronym, name.split("-")[2]) # @@ -912,7 +927,7 @@ def submit_new_individual(self, formats): r = self.client.post(confirmation_url, {'action':'confirm'}) self.assertEqual(r.status_code, 302) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) new_revision = draft.latest_event() self.assertEqual(new_revision.type, "new_revision") @@ -952,7 +967,7 @@ def submit_new_draft_no_org_or_address(self, formats): action = force_post_button.parents("form").find('input[type=hidden][name="action"]').val() r = self.client.post(status_url, dict(action=action)) - doc = Document.objects.get(docalias__name=name) + doc = Document.objects.get(name=name) self.assertEqual(doc.documentauthor_set.count(), 1) docauth = doc.documentauthor_set.first() self.assertEqual(docauth.person, author) @@ -1085,7 +1100,7 @@ def submit_new_individual_logged_in(self, formats): self.assertIn("New Version Notification", notification_email["Subject"]) self.assertIn(author.email().address.lower(), notification_email["To"]) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) self.assertEqual(draft.docextresource_set.count(), 0) new_revision = draft.latest_event() @@ -1133,7 +1148,7 @@ def test_submit_new_logged_in_with_extresources(self): self._assert_extresources_form_not_present(r) # Check that the draft itself got the resources - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertCountEqual( [str(r) for r in draft.docextresource_set.all()], [str(r) for r in resources], @@ -1142,7 +1157,7 @@ def test_submit_new_logged_in_with_extresources(self): self.verify_bibxml_ids_creation(draft) def test_submit_update_individual(self): - IndividualDraftFactory(name='draft-ietf-random-thing', states=[('draft','rfc')], other_aliases=['rfc9999',], pages=5) + IndividualDraftFactory(name='draft-ietf-random-thing', states=[('draft','active'),('draft-iesg','approved')], pages=5) ad=Person.objects.get(user__username='ad') # Group of None here does not reflect real individual submissions draft = IndividualDraftFactory(group=None, ad = ad, authors=[ad,], notify='aliens@example.mars', pages=5) @@ -1152,23 +1167,14 @@ def test_submit_update_individual(self): status_url, author = self.do_submission(name,rev) mailbox_before = len(outbox) - replaced_alias = draft.docalias.first() - r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=[str(replaced_alias.pk)]) + r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=[str(draft.pk)]) self.assertEqual(r.status_code, 200) self.assertContains(r, 'cannot replace itself') self._assert_extresources_in_table(r, []) self._assert_extresources_form(r, []) - replaced_alias = DocAlias.objects.get(name='draft-ietf-random-thing') - r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=[str(replaced_alias.pk)]) - self.assertEqual(r.status_code, 200) - self.assertContains(r, 'cannot replace an RFC') - self._assert_extresources_in_table(r, []) - self._assert_extresources_form(r, []) - - replaced_alias.document.set_state(State.objects.get(type='draft-iesg',slug='approved')) - replaced_alias.document.set_state(State.objects.get(type='draft',slug='active')) - r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=[str(replaced_alias.pk)]) + replaced = Document.objects.get(name='draft-ietf-random-thing') + r = self.supply_extra_metadata(name, status_url, "Submitter Name", "author@example.com", replaces=[str(replaced.pk)]) self.assertEqual(r.status_code, 200) self.assertContains(r, 'approved by the IESG and cannot') self._assert_extresources_in_table(r, []) @@ -1188,7 +1194,7 @@ def test_submit_update_individual(self): r = self.client.post(confirmation_url, {'action':'confirm'}) self.assertEqual(r.status_code, 302) self.assertEqual(len(outbox), mailbox_before+3) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count) self.assertEqual(draft.docextresource_set.count(), 0) @@ -1262,7 +1268,7 @@ def submit_new_individual_replacing_wg(self, logged_in=False, group_state_id='ac status_url, "Submitter Name", "submitter@example.com", - replaces=[str(replaced_draft.docalias.first().pk)], + replaces=[str(replaced_draft.pk)], ) submission = Submission.objects.get(name=name, rev=rev) @@ -1306,7 +1312,7 @@ def test_submit_cancel_confirmation(self): r = self.client.post(confirmation_url, {'action':'cancel'}) self.assertEqual(r.status_code, 302) self.assertEqual(len(outbox), mailbox_before) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, old_rev) def test_submit_new_wg_with_dash(self): @@ -1412,8 +1418,7 @@ def test_edit_submission_and_force_post(self): "edit-pages": "123", "submitter-name": "Some Random Test Person", "submitter-email": "random@example.com", - "replaces": [str(draft.docalias.first().pk)], - "edit-note": "no comments", + "replaces": [str(draft.pk)], "authors-0-name": "Person 1", "authors-0-email": "person1@example.com", "authors-1-name": "Person 2", @@ -1429,9 +1434,8 @@ def test_edit_submission_and_force_post(self): self.assertEqual(submission.document_date, document_date) self.assertEqual(submission.abstract, "some abstract") self.assertEqual(submission.pages, 123) - self.assertEqual(submission.note, "no comments") self.assertEqual(submission.submitter, "Some Random Test Person ") - self.assertEqual(submission.replaces, draft.docalias.first().name) + self.assertEqual(submission.replaces, draft.name) self.assertEqual(submission.state_id, "manual") authors = submission.authors @@ -1463,7 +1467,7 @@ def test_edit_submission_and_force_post(self): r = self.client.post(status_url, dict(action=action)) self.assertEqual(r.status_code, 302) - draft = Document.objects.get(docalias__name=name) + draft = Document.objects.get(name=name) self.assertEqual(draft.rev, rev) self.assertEqual(draft.docextresource_set.count(), 0) self.verify_bibxml_ids_creation(draft) @@ -1703,7 +1707,6 @@ def test_submit_bad_file_txt(self): r, q, m = self.submit_bad_file("some name", ["txt"]) self.assertIn('Invalid characters were found in the name', m) self.assertIn('Expected the TXT file to have extension ".txt"', m) - self.assertIn('Expected an TXT file of type "text/plain"', m) self.assertIn('document does not contain a legitimate name', m) def test_submit_bad_doc_name(self): @@ -1721,7 +1724,6 @@ def test_submit_bad_file_xml(self): r, q, m = self.submit_bad_file("some name", ["xml"]) self.assertIn('Invalid characters were found in the name', m) self.assertIn('Expected the XML file to have extension ".xml"', m) - self.assertIn('Expected an XML file of type "application/xml"', m) def test_submit_file_in_archive(self): name = "draft-authorname-testing-file-exists" @@ -3099,13 +3101,15 @@ def test_replaces_field(self): # can't replace RFC rfc = WgRfcFactory() + draft = WgDraftFactory(states=[("draft", "rfc")]) + draft.relateddocument_set.create(relationship_id="became_rfc", target=rfc) form = SubmissionAutoUploadForm( request_factory.get('/some/url'), - data={'user': auth.user.username, 'replaces': rfc.name}, + data={'user': auth.user.username, 'replaces': draft.name}, files=files_dict, ) self.assertFalse(form.is_valid()) - self.assertIn('An Internet-Draft cannot replace an RFC', form.errors['replaces']) + self.assertIn('An Internet-Draft cannot replace another Internet-Draft that has become an RFC', form.errors['replaces']) # can't replace draft approved by iesg existing_drafts[0].set_state(State.objects.get(type='draft-iesg', slug='approved')) @@ -3126,6 +3130,20 @@ def test_replaces_field(self): ) self.assertFalse(form.is_valid()) + def test_invalid_xml(self): + """Test error message for invalid XML""" + not_xml = SimpleUploadedFile( + name="not-xml.xml", + content=b"this is not xml at all", + content_type="application/xml", + ) + form = SubmissionBaseUploadForm(RequestFactory().post('/some/url'), files={"xml": not_xml}) + self.assertFalse(form.is_valid()) + self.assertFormError( + form, + "xml", + "The uploaded file is not valid XML. Please make sure you are uploading the correct file.", + ) class AsyncSubmissionTests(BaseSubmitTestCase): """Tests of async submission-related tasks""" @@ -3697,25 +3715,9 @@ def test_draft_refs_identification(self): class PostSubmissionTests(BaseSubmitTestCase): - @override_settings(RFC_FILE_TYPES=('txt', 'xml'), IDSUBMIT_FILE_TYPES=('pdf', 'md')) - def test_find_submission_filenames_rfc(self): - """Posting an RFC submission should use RFC_FILE_TYPES""" - rfc = IndividualRfcFactory() - path = Path(self.staging_dir) - for ext in ['txt', 'xml', 'pdf', 'md']: - (path / f'{rfc.name}-{rfc.rev}.{ext}').touch() - files = find_submission_filenames(rfc) - self.assertCountEqual( - files, - { - 'txt': f'{path}/{rfc.name}-{rfc.rev}.txt', - 'xml': f'{path}/{rfc.name}-{rfc.rev}.xml', - # should NOT find the pdf or md - } - ) @override_settings(RFC_FILE_TYPES=('txt', 'xml'), IDSUBMIT_FILE_TYPES=('pdf', 'md')) - def test_find_submission_filenames_draft(self): + def test_find_submission_filenames(self): """Posting an I-D submission should use IDSUBMIT_FILE_TYPES""" draft = WgDraftFactory() path = Path(self.staging_dir) @@ -3808,3 +3810,54 @@ def test_submit_case_conflited_name_fails(self): files["xml"], _ = submission_file("draft-something-hascapitalletters-00", "draft-something-hascapitalletters-00.xml", None, "test_submission.xml") r = self.post_to_upload_submission(url, files) self.assertContains(r,"Case-conflicting draft name found",status_code=200) + + +class SubmissionStatusTests(BaseSubmitTestCase): + """Tests of the submission_status view + + Many tests are interspersed in the monolithic tests above. We can aspire to break these + out more modularly, though. + """ + + def test_submission_checks(self): + for state_slug in ("uploaded", "cancel", "posted"): + submission = SubmissionFactory(state_id=state_slug) + url = urlreverse( + "ietf.submit.views.submission_status", + kwargs={"submission_id": submission.pk}, + ) + # No checks + r = self.client.get(url) + self.assertContains( + r, + "No submission checks were applied to your Internet-Draft.", + status_code=200, + ) + # Inapplicable check + submission.checks.create( + checker="yang validation", passed=None, message="Yang message" + ) + r = self.client.get(url) + self.assertContains( + r, + "No submission checks were applied to your Internet-Draft.", + status_code=200, + ) + # Passed check + submission.checks.create( + checker="idnits check", passed=True, message="idnits ok" + ) + r = self.client.get(url) + self.assertContains( + r, + "Your Internet-Draft has been verified to pass the submission checks.", + status_code=200, + ) + # Failed check + passed check + submission.checks.filter(checker="yang validation").update(passed=False) + r = self.client.get(url) + self.assertContains( + r, + "Your Internet-Draft failed at least one submission check.", + status_code=200, + ) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index ec5af8efe3..7253210f0e 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -11,6 +11,8 @@ import traceback import xml2rfc +from pathlib import Path +from shutil import move from typing import Optional, Union # pyflakes:ignore from unidecode import unidecode @@ -25,7 +27,7 @@ import debug # pyflakes:ignore -from ietf.doc.models import ( Document, State, DocAlias, DocEvent, SubmissionDocEvent, +from ietf.doc.models import ( Document, State, DocEvent, SubmissionDocEvent, DocumentAuthor, AddedMessageEvent ) from ietf.doc.models import NewRevisionDocEvent from ietf.doc.models import RelatedDocument, DocRelationshipName, DocExtResource @@ -287,7 +289,7 @@ def find_submission_filenames(draft): """ path = pathlib.Path(settings.IDSUBMIT_STAGING_PATH) stem = f'{draft.name}-{draft.rev}' - allowed_types = settings.RFC_FILE_TYPES if draft.get_state_slug() == 'rfc' else settings.IDSUBMIT_FILE_TYPES + allowed_types = settings.IDSUBMIT_FILE_TYPES candidates = {ext: path / f'{stem}.{ext}' for ext in allowed_types} return {ext: str(filename) for ext, filename in candidates.items() if filename.exists()} @@ -375,10 +377,6 @@ def post_submission(request, submission, approved_doc_desc, approved_subm_desc): events.append(e) log.log(f"{submission.name}: created doc events") - # update related objects - alias, __ = DocAlias.objects.get_or_create(name=submission.name) - alias.docs.add(draft) - draft.set_state(State.objects.get(used=True, type="draft", slug="active")) update_authors(draft, submission) @@ -504,7 +502,7 @@ def update_replaces_from_submission(request, submission, draft): if request.user.is_authenticated: is_chair_of = list(Group.objects.filter(role__person__user=request.user, role__name="chair")) - replaces = DocAlias.objects.filter(name__in=submission.replaces.split(",")).prefetch_related("docs", "docs__group") + replaces = Document.objects.filter(name__in=submission.replaces.split(",")).prefetch_related("group") existing_replaces = list(draft.related_that_doc("replaces")) existing_suggested = set(draft.related_that_doc("possibly-replaces")) @@ -516,14 +514,12 @@ def update_replaces_from_submission(request, submission, draft): if r in existing_replaces: continue - rdoc = r.document - - if rdoc == draft: + if r == draft: continue if (is_secretariat - or (draft.group in is_chair_of and (rdoc.group.type_id == "individ" or rdoc.group in is_chair_of)) - or (submitter_email and rdoc.documentauthor_set.filter(email__address__iexact=submitter_email).exists())): + or (draft.group in is_chair_of and (r.group.type_id == "individ" or r.group in is_chair_of)) + or (submitter_email and r.documentauthor_set.filter(email__address__iexact=submitter_email).exists())): approved.append(r) else: if r not in existing_suggested: @@ -639,24 +635,27 @@ def cancel_submission(submission): submission.save() remove_submission_files(submission) + def rename_submission_files(submission, prev_rev, new_rev): for ext in settings.IDSUBMIT_FILE_TYPES: - source = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.%s' % (submission.name, prev_rev, ext)) - dest = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.%s' % (submission.name, new_rev, ext)) - if os.path.exists(source): - os.rename(source, dest) + staging_path = Path(settings.IDSUBMIT_STAGING_PATH) + source = staging_path / f"{submission.name}-{prev_rev}.{ext}" + dest = staging_path / f"{submission.name}-{new_rev}.{ext}" + if source.exists(): + move(source, dest) + def move_files_to_repository(submission): for ext in settings.IDSUBMIT_FILE_TYPES: - source = os.path.join(settings.IDSUBMIT_STAGING_PATH, '%s-%s.%s' % (submission.name, submission.rev, ext)) - dest = os.path.join(settings.IDSUBMIT_REPOSITORY_PATH, '%s-%s.%s' % (submission.name, submission.rev, ext)) - if os.path.exists(source): - os.rename(source, dest) - else: - if os.path.exists(dest): - log.log("Intended to move '%s' to '%s', but found source missing while destination exists.") - elif ext in submission.file_types.split(','): - raise ValueError("Intended to move '%s' to '%s', but found source and destination missing.") + fname = f"{submission.name}-{submission.rev}.{ext}" + source = Path(settings.IDSUBMIT_STAGING_PATH) / fname + dest = Path(settings.IDSUBMIT_REPOSITORY_PATH) / fname + if source.exists(): + move(source, dest) + elif dest.exists(): + log.log("Intended to move '%s' to '%s', but found source missing while destination exists.") + elif ext in submission.file_types.split(','): + raise ValueError("Intended to move '%s' to '%s', but found source and destination missing.") def remove_staging_files(name, rev, exts=None): @@ -1002,7 +1001,7 @@ def accept_submission(submission: Submission, request: Optional[HttpRequest] = N docevent_from_submission(submission, desc="Uploaded new revision", who=requester if requester_is_author else None) - replaces = DocAlias.objects.filter(name__in=submission.replaces_names) + replaces = Document.objects.filter(name__in=submission.replaces_names) pretty_replaces = '(none)' if not replaces else ( ', '.join(prettify_std_name(r.name) for r in replaces) ) diff --git a/ietf/submit/views.py b/ietf/submit/views.py index 798fbf307f..b583a53fc4 100644 --- a/ietf/submit/views.py +++ b/ietf/submit/views.py @@ -22,7 +22,7 @@ import debug # pyflakes:ignore -from ietf.doc.models import Document, DocAlias, AddedMessageEvent +from ietf.doc.models import Document, AddedMessageEvent from ietf.doc.forms import ExtResourceForm from ietf.group.models import Group from ietf.group.utils import group_features_group_filter @@ -317,8 +317,13 @@ def submission_status(request, submission_id, access_token=None): if access_token and not key_matched: raise Http404 - errors = validate_submission(submission) - passes_checks = all([ c.passed!=False for c in submission.checks.all() ]) + if submission.state.slug == "cancel": + errors = {} + else: + errors = validate_submission(submission) + latest_checks = submission.latest_checks() + applied_any_checks = len(latest_checks) > 0 + passes_checks = applied_any_checks and all(c.passed for c in latest_checks) is_secretariat = has_role(request.user, "Secretariat") is_chair = submission.group and submission.group.has_role(request.user, "chair") @@ -353,7 +358,21 @@ def submission_status(request, submission_id, access_token=None): message = None if submission.state_id == "cancel": - message = ('error', 'This submission has been cancelled, modification is no longer possible.') + # would be nice to have a less heuristic mechansim for reporting async processing failure + async_processing_error = submission.submissionevent_set.filter( + desc__startswith="Submission rejected: A system error occurred" + ).exists() + if async_processing_error: + message = ( + "error", + "This submission has been cancelled due to a system error during processing. " + "Modification is no longer possible.", + ) + else: + message = ( + "error", + "This submission has been cancelled, modification is no longer possible.", + ) elif submission.state_id == "auth": message = ('success', 'The submission is pending email authentication. An email has been sent to: %s' % ", ".join(confirmation_list)) elif submission.state_id == "grp-appr": @@ -410,7 +429,7 @@ def submission_status(request, submission_id, access_token=None): ) submitter_form = SubmitterForm(initial=submission.submitter_parsed(), prefix="submitter") - replaces_form = ReplacesForm(name=submission.name,initial=DocAlias.objects.filter(name__in=submission.replaces.split(","))) + replaces_form = ReplacesForm(name=submission.name,initial=Document.objects.filter(name__in=submission.replaces.split(","))) extresources_form = ExtResourceForm( initial=dict(resources=[er['res'] for er in external_resources]), extresource_model=SubmissionExtResource, @@ -530,6 +549,7 @@ def submission_status(request, submission_id, access_token=None): 'selected': 'status', 'submission': submission, 'errors': errors, + 'applied_any_checks': applied_any_checks, 'passes_checks': passes_checks, 'submitter_form': submitter_form, 'replaces_form': replaces_form, @@ -626,7 +646,7 @@ def edit_submission(request, submission_id, access_token=None): else: edit_form = EditSubmissionForm(instance=submission, prefix="edit") submitter_form = SubmitterForm(initial=submission.submitter_parsed(), prefix="submitter") - replaces_form = ReplacesForm(name=submission.name,initial=DocAlias.objects.filter(name__in=submission.replaces.split(","))) + replaces_form = ReplacesForm(name=submission.name, initial=Document.objects.filter(name__in=submission.replaces.split(","))) author_forms = [ AuthorForm(initial=author, prefix="authors-%s" % i) for i, author in enumerate(submission.authors) ] diff --git a/ietf/sync/iana.py b/ietf/sync/iana.py index dc61f91596..9ce54a687b 100644 --- a/ietf/sync/iana.py +++ b/ietf/sync/iana.py @@ -45,7 +45,7 @@ def update_rfc_log_from_protocol_page(rfc_names, rfc_must_published_later_than): updated = [] - docs = Document.objects.filter(docalias__name__in=rfc_names).exclude( + docs = Document.objects.filter(name__in=rfc_names).exclude( docevent__type="rfc_in_iana_registry").filter( # only take those that were published after cutoff since we # have a big bunch of old RFCs that we unfortunately don't have data for @@ -189,7 +189,7 @@ def update_history_with_changes(changes, send_email=True): state_type=state_type, state=state) if not e: try: - doc = Document.objects.get(docalias__name=docname) + doc = Document.objects.get(name=docname) except Document.DoesNotExist: warnings.append("Document %s not found" % docname) continue diff --git a/ietf/sync/rfceditor.py b/ietf/sync/rfceditor.py index 784e7a2f08..a2f85f478e 100644 --- a/ietf/sync/rfceditor.py +++ b/ietf/sync/rfceditor.py @@ -7,20 +7,23 @@ import re import requests +from typing import Iterator, Optional, Union from urllib.parse import urlencode from xml.dom import pulldom, Node from django.conf import settings +from django.db.models import Subquery, OuterRef, F, Q from django.utils import timezone from django.utils.encoding import smart_bytes, force_str import debug # pyflakes:ignore -from ietf.doc.models import ( Document, DocAlias, State, StateType, DocEvent, DocRelationshipName, - DocTagName, DocTypeName, RelatedDocument ) +from ietf.doc.models import ( Document, State, StateType, DocEvent, DocRelationshipName, + DocTagName, RelatedDocument, RelatedDocHistory ) from ietf.doc.expire import move_draft_files_to_archive from ietf.doc.utils import add_state_change_event, prettify_std_name, update_action_holders from ietf.group.models import Group +from ietf.ipr.models import IprDocRel from ietf.name.models import StdLevelName, StreamName from ietf.person.models import Person from ietf.utils.log import log @@ -155,7 +158,7 @@ def update_drafts_from_queue(drafts): names = [t[0] for t in drafts] drafts_in_db = dict((d.name, d) - for d in Document.objects.filter(type="draft", docalias__name__in=names)) + for d in Document.objects.filter(type="draft", name__in=names)) changed = set() @@ -228,7 +231,7 @@ def update_drafts_from_queue(drafts): # remove tags and states for those not in the queue anymore - for d in Document.objects.exclude(docalias__name__in=names).filter(states__type="draft-rfceditor").distinct(): + for d in Document.objects.exclude(name__in=names).filter(states__type="draft-rfceditor").distinct(): d.tags.remove(*list(tag_mapping.values())) d.unset_state("draft-rfceditor") # we do not add a history entry here - most likely we already @@ -326,23 +329,28 @@ def extract_doc_list(parentNode, tagName): log("node: %s" % node) raise for d in data: - k = "RFC%04d" % d[0] + k = "RFC%d" % d[0] if k in also_list: d[9].extend(also_list[k]) return data -def update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=None): +def update_docs_from_rfc_index( + index_data, errata_data, skip_older_than_date=None +) -> Iterator[tuple[int, list[str], Document, bool]]: """Given parsed data from the RFC Editor index, update the documents in the database - Yields a list of change descriptions for each document, if any. + Returns an iterator that yields (rfc_number, change_list, doc, rfc_published) for the + RFC document and, if applicable, the I-D that it came from. The skip_older_than_date is a bare date, not a datetime. """ - - errata = {} + # Create dict mapping doc-id to list of errata records that apply to it + errata: dict[str, list[dict]] = {} for item in errata_data: - name = item['doc-id'] + name = item["doc-id"] + if name.upper().startswith("RFC"): + name = f"RFC{int(name[3:])}" # removes leading 0s on the rfc number if not name in errata: errata[name] = [] errata[name].append(item) @@ -357,7 +365,7 @@ def update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=Non "Best Current Practice": StdLevelName.objects.get(slug="bcp"), "Historic": StdLevelName.objects.get(slug="hist"), "Unknown": StdLevelName.objects.get(slug="unkn"), - } + } stream_mapping = { "IETF": StreamName.objects.get(slug="ietf"), @@ -367,15 +375,35 @@ def update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=Non "Legacy": StreamName.objects.get(slug="legacy"), } - tag_has_errata = DocTagName.objects.get(slug='errata') - tag_has_verified_errata = DocTagName.objects.get(slug='verified-errata') + tag_has_errata = DocTagName.objects.get(slug="errata") + tag_has_verified_errata = DocTagName.objects.get(slug="verified-errata") relationship_obsoletes = DocRelationshipName.objects.get(slug="obs") relationship_updates = DocRelationshipName.objects.get(slug="updates") + rfc_published_state = State.objects.get(type_id="rfc", slug="published") system = Person.objects.get(name="(System)") - for rfc_number, title, authors, rfc_published_date, current_status, updates, updated_by, obsoletes, obsoleted_by, also, draft, has_errata, stream, wg, file_formats, pages, abstract in index_data: - + first_sync_creating_subseries = not Document.objects.filter(type_id__in=["bcp","std","fyi"]).exists() + + for ( + rfc_number, + title, + authors, + rfc_published_date, + current_status, + updates, + updated_by, + obsoletes, + obsoleted_by, + also, + draft_name, + has_errata, + stream, + wg, + file_formats, + pages, + abstract, + ) in index_data: if skip_older_than_date and rfc_published_date < skip_older_than_date: # speed up the process by skipping old entries continue @@ -383,64 +411,180 @@ def update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=Non # we assume two things can happen: we get a new RFC, or an # attribute has been updated at the RFC Editor (RFC Editor # attributes take precedence over our local attributes) - events = [] - changes = [] + rfc_events = [] + rfc_changes = [] rfc_published = False - # make sure we got the document and alias - doc = None - name = "rfc%s" % rfc_number - a = DocAlias.objects.filter(name=name) - if a: - doc = a[0].document - else: + # Find the draft, if any + draft = None + if draft_name: + try: + draft = Document.objects.get(name=draft_name, type_id="draft") + except Document.DoesNotExist: + pass + # Logging below warning turns out to be unhelpful - there are many references + # to such things in the index: + # * all april-1 RFCs have an internal name that looks like a draft name, but there + # was never such a draft. More of these will exist in the future + # * Several documents were created with out-of-band input to the RFC-editor, for a + # variety of reasons. + # + # What this exposes is that the rfc-index needs to stop talking about these things. + # If there is no draft to point to, don't point to one, even if there was an RPC + # internal name in use (and in the RPC database). This will be a requirement on the + # reimplementation of the creation of the rfc-index. + # + # log(f"Warning: RFC index for {rfc_number} referred to unknown draft {draft_name}") + + # Find or create the RFC document + creation_args: dict[str, Optional[Union[str, int]]] = {"name": f"rfc{rfc_number}"} + if draft: + creation_args.update( + { + "title": draft.title, + "stream": draft.stream, + "group": draft.group, + "abstract": draft.abstract, + "pages": draft.pages, + "words": draft.words, + "std_level": draft.std_level, + "ad": draft.ad, + "external_url": draft.external_url, + "uploaded_filename": draft.uploaded_filename, + "note": draft.note, + } + ) + doc, created_rfc = Document.objects.get_or_create( + rfc_number=rfc_number, type_id="rfc", defaults=creation_args + ) + if created_rfc: + rfc_changes.append(f"created document {prettify_std_name(doc.name)}") + doc.set_state(rfc_published_state) if draft: - try: - doc = Document.objects.get(name=draft) - except Document.DoesNotExist: - pass + doc.formal_languages.set(draft.formal_languages.all()) - if not doc: - changes.append("created document %s" % prettify_std_name(name)) - doc = Document.objects.create(name=name, type=DocTypeName.objects.get(slug="draft")) + if draft: + draft_events = [] + draft_changes = [] - # add alias - alias, __ = DocAlias.objects.get_or_create(name=name) - alias.docs.add(doc) - changes.append("created alias %s" % prettify_std_name(name)) + # Ensure the draft is in the "rfc" state and move its files to the archive + # if necessary. + if draft.get_state_slug() != "rfc": + draft.set_state( + State.objects.get(used=True, type="draft", slug="rfc") + ) + move_draft_files_to_archive(draft, draft.rev) + draft_changes.append(f"changed state to {draft.get_state()}") + + # Ensure the draft and rfc are linked with a "became_rfc" relationship + r, created_relateddoc = RelatedDocument.objects.get_or_create( + source=draft, target=doc, relationship_id="became_rfc" + ) + if created_relateddoc: + change = "created {rel_name} relationship between {pretty_draft_name} and {pretty_rfc_name}".format( + rel_name=r.relationship.name.lower(), + pretty_draft_name=prettify_std_name(draft_name), + pretty_rfc_name=prettify_std_name(doc.name), + ) + draft_changes.append(change) + rfc_changes.append(change) + + # Always set the "draft-iesg" state. This state should be set for all drafts, so + # log a warning if it is not set. What should happen here is that ietf stream + # RFCs come in as "rfcqueue" and are set to "pub" when they appear in the RFC index. + # Other stream documents should normally be "idexists" and be left that way. The + # code here *actually* leaves "draft-iesg" state alone if it is "idexists" or "pub", + # and changes any other state to "pub". If unset, it changes it to "idexists". + # This reflects historical behavior and should probably be updated, but a migration + # of existing drafts (and validation of the change) is needed before we change the + # handling. + prev_iesg_state = draft.get_state("draft-iesg") + if prev_iesg_state is None: + log(f'Warning while processing {doc.name}: {draft.name} has no "draft-iesg" state') + new_iesg_state = State.objects.get(type_id="draft-iesg", slug="idexists") + elif prev_iesg_state.slug not in ("pub", "idexists"): + if prev_iesg_state.slug != "rfcqueue": + log( + 'Warning while processing {}: {} is in "draft-iesg" state {} (expected "rfcqueue")'.format( + doc.name, draft.name, prev_iesg_state.slug + ) + ) + new_iesg_state = State.objects.get(type_id="draft-iesg", slug="pub") + else: + new_iesg_state = prev_iesg_state + + if new_iesg_state != prev_iesg_state: + draft.set_state(new_iesg_state) + draft_changes.append(f"changed {new_iesg_state.type.label} to {new_iesg_state}") + e = update_action_holders(draft, prev_iesg_state, new_iesg_state) + if e: + draft_events.append(e) + + # If the draft and RFC streams agree, move draft to "pub" stream state. If not, complain. + if draft.stream != doc.stream: + log("Warning while processing {}: draft {} stream is {} but RFC stream is {}".format( + doc.name, draft.name, draft.stream, doc.stream + )) + elif draft.stream.slug in ["iab", "irtf", "ise"]: + stream_slug = f"draft-stream-{draft.stream.slug}" + prev_state = draft.get_state(stream_slug) + if prev_state is not None and prev_state.slug != "pub": + new_state = State.objects.select_related("type").get(used=True, type__slug=stream_slug, slug="pub") + draft.set_state(new_state) + draft_changes.append( + f"changed {new_state.type.label} to {new_state}" + ) + e = update_action_holders(draft, prev_state, new_state) + if e: + draft_events.append(e) + if draft_changes: + draft_events.append( + DocEvent.objects.create( + doc=draft, + rev=doc.rev, + by=system, + type="sync_from_rfc_editor", + desc=f"Received changes through RFC Editor sync ({', '.join(draft_changes)})", + ) + ) + draft.save_with_history(draft_events) + yield rfc_number, draft_changes, draft, False # yield changes to the draft # check attributes + verbed = "set" if created_rfc else "changed" if title != doc.title: doc.title = title - changes.append("changed title to '%s'" % doc.title) + rfc_changes.append(f"{verbed} title to '{doc.title}'") if abstract and abstract != doc.abstract: doc.abstract = abstract - changes.append("changed abstract to '%s'" % doc.abstract) + rfc_changes.append(f"{verbed} abstract to '{doc.abstract}'") if pages and int(pages) != doc.pages: doc.pages = int(pages) - changes.append("changed pages to %s" % doc.pages) + rfc_changes.append(f"{verbed} pages to {doc.pages}") if std_level_mapping[current_status] != doc.std_level: doc.std_level = std_level_mapping[current_status] - changes.append("changed standardization level to %s" % doc.std_level) - - if doc.get_state_slug() != "rfc": - doc.set_state(State.objects.get(used=True, type="draft", slug="rfc")) - move_draft_files_to_archive(doc, doc.rev) - changes.append("changed state to %s" % doc.get_state()) + rfc_changes.append(f"{verbed} standardization level to {doc.std_level}") if doc.stream != stream_mapping[stream]: doc.stream = stream_mapping[stream] - changes.append("changed stream to %s" % doc.stream) + rfc_changes.append(f"{verbed} stream to {doc.stream}") - if not doc.group: # if we have no group assigned, check if RFC Editor has a suggestion + if doc.get_state() != rfc_published_state: + doc.set_state(rfc_published_state) + rfc_changes.append(f"{verbed} {rfc_published_state.type.label} to {rfc_published_state}") + + # if we have no group assigned, check if RFC Editor has a suggestion + if not doc.group: if wg: doc.group = Group.objects.get(acronym=wg) - changes.append("set group to %s" % doc.group) + rfc_changes.append(f"set group to {doc.group}") else: - doc.group = Group.objects.get(type="individ") # fallback for newly created doc + doc.group = Group.objects.get( + type="individ" + ) # fallback for newly created doc if not doc.latest_event(type="published_rfc"): e = DocEvent(doc=doc, rev=doc.rev, type="published_rfc") @@ -467,90 +611,181 @@ def update_docs_from_rfc_index(index_data, errata_data, skip_older_than_date=Non e.by = system e.desc = "RFC published" e.save() - events.append(e) + rfc_events.append(e) - changes.append("added RFC published event at %s" % e.time.strftime("%Y-%m-%d")) + rfc_changes.append( + f"added RFC published event at {e.time.strftime('%Y-%m-%d')}" + ) rfc_published = True - for t in ("draft-iesg", "draft-stream-iab", "draft-stream-irtf", "draft-stream-ise"): - prev_state = doc.get_state(t) - if prev_state is not None: - if prev_state.slug not in ("pub", "idexists"): - new_state = State.objects.select_related("type").get(used=True, type=t, slug="pub") - doc.set_state(new_state) - changes.append("changed %s to %s" % (new_state.type.label, new_state)) - e = update_action_holders(doc, prev_state, new_state) - if e: - events.append(e) - elif t == 'draft-iesg': - doc.set_state(State.objects.get(type_id='draft-iesg', slug='idexists')) - def parse_relation_list(l): res = [] for x in l: - if x[:3] in ("NIC", "IEN", "STD", "RTR"): - # try translating this to RFCs that we can handle - # sensibly; otherwise we'll have to ignore them - l = DocAlias.objects.filter(name__startswith="rfc", docs__docalias__name=x.lower()) - else: - l = DocAlias.objects.filter(name=x.lower()) - - for a in l: + for a in Document.objects.filter(name=x.lower(), type_id="rfc"): if a not in res: res.append(a) return res for x in parse_relation_list(obsoletes): - if not RelatedDocument.objects.filter(source=doc, target=x, relationship=relationship_obsoletes): - r = RelatedDocument.objects.create(source=doc, target=x, relationship=relationship_obsoletes) - changes.append("created %s relation between %s and %s" % (r.relationship.name.lower(), prettify_std_name(r.source.name), prettify_std_name(r.target.name))) + if not RelatedDocument.objects.filter( + source=doc, target=x, relationship=relationship_obsoletes + ): + r = RelatedDocument.objects.create( + source=doc, target=x, relationship=relationship_obsoletes + ) + rfc_changes.append( + "created {rel_name} relation between {src_name} and {tgt_name}".format( + rel_name=r.relationship.name.lower(), + src_name=prettify_std_name(r.source.name), + tgt_name=prettify_std_name(r.target.name), + ) + ) for x in parse_relation_list(updates): - if not RelatedDocument.objects.filter(source=doc, target=x, relationship=relationship_updates): - r = RelatedDocument.objects.create(source=doc, target=x, relationship=relationship_updates) - changes.append("created %s relation between %s and %s" % (r.relationship.name.lower(), prettify_std_name(r.source.name), prettify_std_name(r.target.name))) + if not RelatedDocument.objects.filter( + source=doc, target=x, relationship=relationship_updates + ): + r = RelatedDocument.objects.create( + source=doc, target=x, relationship=relationship_updates + ) + rfc_changes.append( + "created {rel_name} relation between {src_name} and {tgt_name}".format( + rel_name=r.relationship.name.lower(), + src_name=prettify_std_name(r.source.name), + tgt_name=prettify_std_name(r.target.name), + ) + ) if also: + # recondition also to have proper subseries document names: + conditioned_also = [] for a in also: a = a.lower() - if not DocAlias.objects.filter(name=a): - DocAlias.objects.create(name=a).docs.add(doc) - changes.append("created alias %s" % prettify_std_name(a)) + subseries_slug = a[:3] + if subseries_slug not in ["bcp", "std", "fyi"]: + log(f"Unexpected 'also' relationship of {a} encountered for {doc}") + next + maybe_number = a[3:].strip() + if not maybe_number.isdigit(): + log(f"Unexpected 'also' subseries element identifier {a} encountered for {doc}") + next + else: + subseries_number = int(maybe_number) + conditioned_also.append(f"{subseries_slug}{subseries_number}") # Note the lack of leading zeros + also = conditioned_also - doc_errata = errata.get('RFC%04d'%rfc_number, []) - all_rejected = doc_errata and all( er['errata_status_code']=='Rejected' for er in doc_errata ) + for a in also: + subseries_doc_name = a + subseries_slug=a[:3] + # Leaving most things to the default intentionally + # Of note, title and stream are left to the defaults of "" and none. + subseries_doc, created = Document.objects.get_or_create(type_id=subseries_slug, name=subseries_doc_name) + if created: + if first_sync_creating_subseries: + subseries_doc.docevent_set.create(type=f"{subseries_slug}_history_marker", by=system, desc=f"No history of this {subseries_slug.upper()} document is currently available in the datatracker before this point") + subseries_doc.docevent_set.create(type=f"{subseries_slug}_doc_created", by=system, desc=f"Imported {subseries_doc_name} into the datatracker via sync to the rfc-index") + else: + subseries_doc.docevent_set.create(type=f"{subseries_slug}_doc_created", by=system, desc=f"Created {subseries_doc_name} via sync to the rfc-index") + _, relationship_created = subseries_doc.relateddocument_set.get_or_create(relationship_id="contains", target=doc) + if relationship_created: + if first_sync_creating_subseries: + subseries_doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Imported membership of {doc.name} in {subseries_doc.name} via sync to the rfc-index") + rfc_events.append(doc.docevent_set.create(type=f"{subseries_slug}_history_marker", by=system, desc=f"No history of {subseries_doc.name.upper()} is currently available in the datatracker before this point")) + rfc_events.append(doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Imported membership of {doc.name} in {subseries_doc.name} via sync to the rfc-index")) + else: + subseries_doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Added {doc.name} to {subseries_doc.name}") + rfc_events.append(doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Added {doc.name} to {subseries_doc.name}")) + + for subdoc in doc.related_that("contains"): + if subdoc.name not in also: + assert(not first_sync_creating_subseries) + subseries_doc.relateddocument_set.filter(target=subdoc).delete() + rfc_events.append(doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Removed {doc.name} from {subseries_doc.name}")) + subseries_doc.docevent_set.create(type="sync_from_rfc_editor", by=system, desc=f"Removed {doc.name} from {subseries_doc.name}") + + doc_errata = errata.get(f"RFC{rfc_number}", []) + all_rejected = doc_errata and all( + er["errata_status_code"] == "Rejected" for er in doc_errata + ) if has_errata and not all_rejected: if not doc.tags.filter(pk=tag_has_errata.pk).exists(): doc.tags.add(tag_has_errata) - changes.append("added Errata tag") - has_verified_errata = any([ er['errata_status_code']=='Verified' for er in doc_errata ]) - if has_verified_errata and not doc.tags.filter(pk=tag_has_verified_errata.pk).exists(): + rfc_changes.append("added Errata tag") + has_verified_errata = any( + [er["errata_status_code"] == "Verified" for er in doc_errata] + ) + if ( + has_verified_errata + and not doc.tags.filter(pk=tag_has_verified_errata.pk).exists() + ): doc.tags.add(tag_has_verified_errata) - changes.append("added Verified Errata tag") + rfc_changes.append("added Verified Errata tag") else: if doc.tags.filter(pk=tag_has_errata.pk): doc.tags.remove(tag_has_errata) if all_rejected: - changes.append("removed Errata tag (all errata rejected)") + rfc_changes.append("removed Errata tag (all errata rejected)") else: - changes.append("removed Errata tag") + rfc_changes.append("removed Errata tag") if doc.tags.filter(pk=tag_has_verified_errata.pk): doc.tags.remove(tag_has_verified_errata) - changes.append("removed Verified Errata tag") - - if changes: - events.append(DocEvent.objects.create( - doc=doc, - rev=doc.rev, - by=system, - type="sync_from_rfc_editor", - desc="Received changes through RFC Editor sync (%s)" % ", ".join(changes), - )) - - doc.save_with_history(events) - - if changes: - yield changes, doc, rfc_published + rfc_changes.append("removed Verified Errata tag") + + if rfc_changes: + rfc_events.append( + DocEvent.objects.create( + doc=doc, + rev=doc.rev, + by=system, + type="sync_from_rfc_editor", + desc=f"Received changes through RFC Editor sync ({', '.join(rfc_changes)})", + ) + ) + doc.save_with_history(rfc_events) + yield rfc_number, rfc_changes, doc, rfc_published # yield changes to the RFC + + if first_sync_creating_subseries: + # First - create the known subseries documents that have ghosted. + # The RFC editor (as of 31 Oct 2023) claims these subseries docs do not exist. + # The datatracker, on the other hand, will say that the series doc currently contains no RFCs. + for name in ["fyi17", "std1", "bcp12", "bcp113", "bcp66"]: + # Leaving most things to the default intentionally + # Of note, title and stream are left to the defaults of "" and none. + subseries_doc, created = Document.objects.get_or_create(type_id=name[:3], name=name) + if not created: + log(f"Warning: {name} unexpectedly already exists") + else: + subseries_slug = name[:3] + subseries_doc.docevent_set.create(type=f"{subseries_slug}_history_marker", by=system, desc=f"No history of this {subseries_slug.upper()} document is currently available in the datatracker before this point") + + + RelatedDocument.objects.filter( + Q(originaltargetaliasname__startswith="bcp") | + Q(originaltargetaliasname__startswith="std") | + Q(originaltargetaliasname__startswith="fyi") + ).annotate( + subseries_target=Subquery( + Document.objects.filter(name=OuterRef("originaltargetaliasname")).values_list("pk",flat=True)[:1] + ) + ).update(target=F("subseries_target")) + RelatedDocHistory.objects.filter( + Q(originaltargetaliasname__startswith="bcp") | + Q(originaltargetaliasname__startswith="std") | + Q(originaltargetaliasname__startswith="fyi") + ).annotate( + subseries_target=Subquery( + Document.objects.filter(name=OuterRef("originaltargetaliasname")).values_list("pk",flat=True)[:1] + ) + ).update(target=F("subseries_target")) + IprDocRel.objects.filter( + Q(originaldocumentaliasname__startswith="bcp") | + Q(originaldocumentaliasname__startswith="std") | + Q(originaldocumentaliasname__startswith="fyi") + ).annotate( + subseries_target=Subquery( + Document.objects.filter(name=OuterRef("originaldocumentaliasname")).values_list("pk",flat=True)[:1] + ) + ).update(document=F("subseries_target")) def post_approved_draft(url, name): diff --git a/ietf/sync/tests.py b/ietf/sync/tests.py index f245145d2b..6ac8f4afb0 100644 --- a/ietf/sync/tests.py +++ b/ietf/sync/tests.py @@ -6,6 +6,7 @@ import io import json import datetime +import mock import quopri from django.conf import settings @@ -14,8 +15,8 @@ import debug # pyflakes:ignore -from ietf.doc.factories import WgDraftFactory -from ietf.doc.models import Document, DocAlias, DocEvent, DeletedEvent, DocTagName, RelatedDocument, State, StateDocEvent +from ietf.doc.factories import WgDraftFactory, RfcFactory +from ietf.doc.models import Document, DocEvent, DeletedEvent, DocTagName, RelatedDocument, State, StateDocEvent from ietf.doc.utils import add_state_change_event from ietf.group.factories import GroupFactory from ietf.person.models import Person @@ -29,19 +30,20 @@ class IANASyncTests(TestCase): def test_protocol_page_sync(self): draft = WgDraftFactory() - DocAlias.objects.create(name="rfc1234").docs.add(draft) - DocEvent.objects.create(doc=draft, rev=draft.rev, type="published_rfc", by=Person.objects.get(name="(System)")) + rfc = RfcFactory(rfc_number=1234) + draft.relateddocument_set.create(relationship_id="became_rfc", target = rfc) + DocEvent.objects.create(doc=rfc, rev="", type="published_rfc", by=Person.objects.get(name="(System)")) rfc_names = iana.parse_protocol_page('RFC 1234') self.assertEqual(len(rfc_names), 1) self.assertEqual(rfc_names[0], "rfc1234") iana.update_rfc_log_from_protocol_page(rfc_names, timezone.now() - datetime.timedelta(days=1)) - self.assertEqual(DocEvent.objects.filter(doc=draft, type="rfc_in_iana_registry").count(), 1) + self.assertEqual(DocEvent.objects.filter(doc=rfc, type="rfc_in_iana_registry").count(), 1) # make sure it doesn't create duplicates iana.update_rfc_log_from_protocol_page(rfc_names, timezone.now() - datetime.timedelta(days=1)) - self.assertEqual(DocEvent.objects.filter(doc=draft, type="rfc_in_iana_registry").count(), 1) + self.assertEqual(DocEvent.objects.filter(doc=rfc, type="rfc_in_iana_registry").count(), 1) def test_changes_sync(self): draft = WgDraftFactory(ad=Person.objects.get(user__username='ad')) @@ -226,18 +228,16 @@ def write_draft_file(self, name, size): def test_rfc_index(self): area = GroupFactory(type_id='area') - doc = WgDraftFactory( + draft_doc = WgDraftFactory( group__parent=area, - states=[('draft-iesg','rfcqueue'),('draft-stream-ise','rfc-edit')], + states=[('draft-iesg','rfcqueue')], ad=Person.objects.get(user__username='ad'), + external_url="http://my-external-url.example.com", + note="this is a note", ) - # it's a bit strange to have draft-stream-ise set when draft-iesg is set - # too, but for testing purposes ... - doc.action_holders.add(doc.ad) # not normally set, but add to be sure it's cleared + draft_doc.action_holders.add(draft_doc.ad) # not normally set, but add to be sure it's cleared - updated_doc = Document.objects.create(name="draft-ietf-something") - DocAlias.objects.create(name=updated_doc.name).docs.add(updated_doc) - DocAlias.objects.create(name="rfc123").docs.add(updated_doc) + RfcFactory(rfc_number=123) today = date_today() @@ -260,7 +260,7 @@ def test_rfc_index(self): - STD0001 + STD0002 Test RFC1234 @@ -300,14 +300,14 @@ def test_rfc_index(self): ''' % dict(year=today.strftime("%Y"), month=today.strftime("%B"), - name=doc.name, - rev=doc.rev, - area=doc.group.parent.acronym, - group=doc.group.acronym) + name=draft_doc.name, + rev=draft_doc.rev, + area=draft_doc.group.parent.acronym, + group=draft_doc.group.acronym) errata = [{ "errata_id":1, - "doc-id":"RFC123", + "doc-id":"RFC123", # n.b. this is not the same RFC as in the above index XML! "errata_status_code":"Verified", "errata_type_code":"Editorial", "section": "4.1", @@ -323,7 +323,6 @@ def test_rfc_index(self): data = rfceditor.parse_index(io.StringIO(t)) self.assertEqual(len(data), 1) - rfc_number, title, authors, rfc_published_date, current_status, updates, updated_by, obsoletes, obsoleted_by, also, draft, has_errata, stream, wg, file_formats, pages, abstract = data[0] # currently, we only check what we actually use @@ -333,45 +332,115 @@ def test_rfc_index(self): self.assertEqual(rfc_published_date.month, today.month) self.assertEqual(current_status, "Proposed Standard") self.assertEqual(updates, ["RFC123"]) - self.assertEqual(set(also), set(["BCP1", "FYI1", "STD1"])) - self.assertEqual(draft, doc.name) - self.assertEqual(wg, doc.group.acronym) + self.assertEqual(set(also), set(["BCP1", "FYI1", "STD2"])) + self.assertEqual(draft, draft_doc.name) + self.assertEqual(wg, draft_doc.group.acronym) self.assertEqual(has_errata, True) self.assertEqual(stream, "IETF") self.assertEqual(pages, "42") self.assertEqual(abstract, "This is some interesting text.") - draft_filename = "%s-%s.txt" % (doc.name, doc.rev) + draft_filename = "%s-%s.txt" % (draft_doc.name, draft_doc.rev) self.write_draft_file(draft_filename, 5000) - changes = [] - for cs, d, rfc_published in rfceditor.update_docs_from_rfc_index(data, errata, today - datetime.timedelta(days=30)): - changes.append(cs) - - doc = Document.objects.get(name=doc.name) + event_count_before = draft_doc.docevent_set.count() + draft_title_before = draft_doc.title + draft_abstract_before = draft_doc.abstract + draft_pages_before = draft_doc.pages - events = doc.docevent_set.all() - self.assertEqual(events[0].type, "sync_from_rfc_editor") - self.assertEqual(events[1].type, "changed_action_holders") - self.assertEqual(events[2].type, "published_rfc") - self.assertEqual(events[2].time.astimezone(RPC_TZINFO).date(), today) - self.assertTrue("errata" in doc.tags.all().values_list("slug", flat=True)) - self.assertTrue(DocAlias.objects.filter(name="rfc1234", docs=doc)) - self.assertTrue(DocAlias.objects.filter(name="bcp1", docs=doc)) - self.assertTrue(DocAlias.objects.filter(name="fyi1", docs=doc)) - self.assertTrue(DocAlias.objects.filter(name="std1", docs=doc)) - self.assertTrue(RelatedDocument.objects.filter(source=doc, target__name="rfc123", relationship="updates")) - self.assertEqual(doc.title, "A Testing RFC") - self.assertEqual(doc.abstract, "This is some interesting text.") - self.assertEqual(doc.get_state_slug(), "rfc") - self.assertEqual(doc.get_state_slug("draft-iesg"), "pub") - self.assertCountEqual(doc.action_holders.all(), []) - self.assertEqual(doc.get_state_slug("draft-stream-ise"), "pub") - self.assertEqual(doc.std_level_id, "ps") - self.assertEqual(doc.pages, 42) + changes = [] + with mock.patch("ietf.sync.rfceditor.log") as mock_log: + for rfc_number, _, d, rfc_published in rfceditor.update_docs_from_rfc_index(data, errata, today - datetime.timedelta(days=30)): + changes.append({"doc_pk": d.pk, "rfc_published": rfc_published}) # we ignore the actual change list + self.assertEqual(rfc_number, 1234) + if rfc_published: + self.assertEqual(d.type_id, "rfc") + self.assertEqual(d.rfc_number, rfc_number) + else: + self.assertEqual(d.type_id, "draft") + self.assertIsNone(d.rfc_number) + + self.assertFalse(mock_log.called, "No log messages expected") + + draft_doc = Document.objects.get(name=draft_doc.name) + draft_events = draft_doc.docevent_set.all() + self.assertEqual(len(draft_events) - event_count_before, 2) + self.assertEqual(draft_events[0].type, "sync_from_rfc_editor") + self.assertEqual(draft_events[1].type, "changed_action_holders") + self.assertEqual(draft_doc.get_state_slug(), "rfc") + self.assertEqual(draft_doc.get_state_slug("draft-iesg"), "pub") + self.assertCountEqual(draft_doc.action_holders.all(), []) + self.assertEqual(draft_doc.title, draft_title_before) + self.assertEqual(draft_doc.abstract, draft_abstract_before) + self.assertEqual(draft_doc.pages, draft_pages_before) self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, draft_filename))) self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, draft_filename))) + rfc_doc = Document.objects.filter(rfc_number=1234, type_id="rfc").first() + self.assertIsNotNone(rfc_doc, "RFC document should have been created") + rfc_events = rfc_doc.docevent_set.all() + self.assertEqual(len(rfc_events), 8) + expected_events = [ + ["sync_from_rfc_editor", ""], # Not looking for exact desc match here - see detailed tests below + ["sync_from_rfc_editor", "Imported membership of rfc1234 in std2 via sync to the rfc-index"], + ["std_history_marker", "No history of STD2 is currently available in the datatracker before this point"], + ["sync_from_rfc_editor", "Imported membership of rfc1234 in fyi1 via sync to the rfc-index"], + ["fyi_history_marker", "No history of FYI1 is currently available in the datatracker before this point"], + ["sync_from_rfc_editor", "Imported membership of rfc1234 in bcp1 via sync to the rfc-index"], + ["bcp_history_marker", "No history of BCP1 is currently available in the datatracker before this point"], + ["published_rfc", "RFC published"] + ] + for index, [event_type, desc] in enumerate(expected_events): + self.assertEqual(rfc_events[index].type, event_type) + if index == 0: + self.assertIn("Received changes through RFC Editor sync (created document RFC 1234,", rfc_events[0].desc) + self.assertIn(f"created became rfc relationship between {rfc_doc.came_from_draft().name} and RFC 1234", rfc_events[0].desc) + self.assertIn("set title to 'A Testing RFC'", rfc_events[0].desc) + self.assertIn("set abstract to 'This is some interesting text.'", rfc_events[0].desc) + self.assertIn("set pages to 42", rfc_events[0].desc) + self.assertIn("set standardization level to Proposed Standard", rfc_events[0].desc) + self.assertIn(f"added RFC published event at {rfc_events[0].time.astimezone(RPC_TZINFO):%Y-%m-%d}", rfc_events[0].desc) + self.assertIn("created updates relation between RFC 1234 and RFC 123", rfc_events[0].desc) + self.assertIn("added Errata tag", rfc_events[0].desc) + else: + self.assertEqual(rfc_events[index].desc, desc) + self.assertEqual(rfc_events[7].time.astimezone(RPC_TZINFO).date(), today) + for subseries_name in ["bcp1", "fyi1", "std2"]: + sub = Document.objects.filter(type_id=subseries_name[:3],name=subseries_name).first() + self.assertIsNotNone(sub, f"{subseries_name} not created") + self.assertTrue(rfc_doc in sub.contains()) + self.assertTrue(sub in rfc_doc.part_of()) + self.assertEqual(rfc_doc.get_state_slug(), "published") + # Should have an "errata" tag because there is an errata-url in the index XML, but no "verified-errata" tag + # because there is no verified item in the errata JSON with doc-id matching the RFC document. + tag_slugs = rfc_doc.tags.values_list("slug", flat=True) + self.assertTrue("errata" in tag_slugs) + self.assertFalse("verified-errata" in tag_slugs) + # TODO: adjust these when we have subseries document types + # self.assertTrue(DocAlias.objects.filter(name="rfc1234", docs=rfc_doc)) + # self.assertTrue(DocAlias.objects.filter(name="bcp1", docs=rfc_doc)) + # self.assertTrue(DocAlias.objects.filter(name="fyi1", docs=rfc_doc)) + # self.assertTrue(DocAlias.objects.filter(name="std1", docs=rfc_doc)) + self.assertTrue(RelatedDocument.objects.filter(source=rfc_doc, target__name="rfc123", relationship="updates").exists()) + self.assertTrue(RelatedDocument.objects.filter(source=draft_doc, target=rfc_doc, relationship="became_rfc").exists()) + self.assertEqual(rfc_doc.title, "A Testing RFC") + self.assertEqual(rfc_doc.abstract, "This is some interesting text.") + self.assertEqual(rfc_doc.std_level_id, "ps") + self.assertEqual(rfc_doc.pages, 42) + self.assertEqual(rfc_doc.stream, draft_doc.stream) + self.assertEqual(rfc_doc.group, draft_doc.group) + self.assertEqual(rfc_doc.words, draft_doc.words) + self.assertEqual(rfc_doc.ad, draft_doc.ad) + self.assertEqual(rfc_doc.external_url, draft_doc.external_url) + self.assertEqual(rfc_doc.note, draft_doc.note) + + # check that we got the expected changes + self.assertEqual(len(changes), 2) + self.assertEqual(changes[0]["doc_pk"], draft_doc.pk) + self.assertEqual(changes[0]["rfc_published"], False) + self.assertEqual(changes[1]["doc_pk"], rfc_doc.pk) + self.assertEqual(changes[1]["rfc_published"], True) + # make sure we can apply it again with no changes changed = list(rfceditor.update_docs_from_rfc_index(data, errata, today - datetime.timedelta(days=30))) self.assertEqual(len(changed), 0) @@ -602,4 +671,4 @@ def test_rfceditor_undo(self): e = DeletedEvent.objects.all().order_by("-time", "-id")[0] e.content_type.model_class().objects.create(**json.loads(e.json)) - self.assertTrue(StateDocEvent.objects.filter(desc="First", doc=draft)) \ No newline at end of file + self.assertTrue(StateDocEvent.objects.filter(desc="First", doc=draft)) diff --git a/ietf/templates/.gitignore b/ietf/templates/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/base.html b/ietf/templates/base.html index 9e07bad00d..ccecd8eb1c 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -1,4 +1,4 @@ -{# Copyright The IETF Trust 2015-2022, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} {% load analytical %} {% load ietf_filters static %} @@ -31,11 +31,11 @@ {% analytical_head_bottom %} - {% analytical_body_top %} Skip to main content -
- Report a bug @@ -60,7 +60,7 @@ {% if not user.is_authenticated %} + href="{% url 'ietf.ietfauth.views.login' %}?next={{ request.get_full_path|removeprefix:'/accounts/logout'|removeprefix:'/accounts/login/?next='|urlencode }}"> Sign in {% endif %} @@ -68,7 +68,7 @@ diff --git a/ietf/templates/base/menu.html b/ietf/templates/base/menu.html index 2f88aadca8..714c98b57d 100644 --- a/ietf/templates/base/menu.html +++ b/ietf/templates/base/menu.html @@ -1,7 +1,7 @@ {# Copyright The IETF Trust 2015-2022, All Rights Reserved #} {% load origin %} {% origin %} -{% load ietf_filters managed_groups wg_menu active_groups_menu group_filters cache %} +{% load ietf_filters managed_groups wg_menu active_groups_menu group_filters cache meetings_filters %} {% if flavor != 'top' %} {% include "base/menu_user.html" %} {% endif %} @@ -22,7 +22,7 @@ {% if flavor == 'top' %}{% endif %} {% wg_menu flavor %}
  • - Other @@ -31,19 +31,19 @@ {% if flavor == 'top' %}
  • {% endif %}
  • New work
  • - Chartering groups
  • - BOFs
  • - BOF Requests @@ -51,13 +51,13 @@ {% if flavor == 'top' %}
  • {% endif %}
  • Other groups
  • - Concluded groups
  • - Non-WG lists @@ -81,32 +81,32 @@
  • {% endif %}
  • - Search
  • - Recent I-Ds
  • - I-D submission
  • - IESG dashboard
  • {% if user and user.is_authenticated %}
  • - My tracked docs @@ -114,7 +114,7 @@ {% if user|has_role:"Area Director,Secretariat" %} {% if flavor == 'top' %}
  • {% endif %}
  • - RFC status changes @@ -122,7 +122,7 @@ {% endif %} {% if flavor == 'top' %}
  • {% endif %}
  • - IRSG ballot status @@ -131,27 +131,19 @@ {% if flavor == 'top' %}
  • {% endif %}
  • Manage
  • - Approve an I-D
  • {% for g in user|docman_groups %}
  • - {{ g.acronym }} {{ g.type.slug }} docs
  • {% endfor %} - {% for g in user|matman_groups %} -
  • - - {{ g.acronym }} {{ g.type.slug }} meetings - -
  • - {% endfor %} {% endif %} {% if user|has_role:"Review Team Secretary" %} {% if flavor == 'top' %} @@ -163,7 +155,7 @@ {% for g in user|managed_review_groups %}
  • - {{ g.acronym }} reviews @@ -180,7 +172,7 @@
  • {% for nomcom in nomcoms %}
  • - {{ nomcom|capfirst }} @@ -196,29 +188,50 @@ RFC streams
  • - IAB
  • - IRTF
  • - ISE
  • - Editorial
  • + {% if flavor == 'top' %} +
  • +
  • + {% endif %} +
  • + Subseries +
  • +
  • + + STD + + + BCP + + + FYI + +
  • {% if flavor == 'top' %} @@ -240,47 +253,67 @@ {% endif %}
  • - Agenda
  • - Materials
  • - Floor plan
  • - Registration
  • - Important dates
  • - Request a session
  • + {% if user|can_request_interim %} +
  • + + Request an interim meeting + +
  • + {% endif %}
  • - Session requests
  • + {% if user|matman_groups %} + {% if flavor == 'top' %}
  • {% endif %} +
  • Manage
  • + {% for g in user|matman_groups %} +
  • + + {{ g.acronym }} {{ g.type.slug }} meetings + +
  • + {% endfor %} + {% endif %} {% if flavor == 'top' %} {% if flavor == 'top' %}
  • @@ -291,7 +324,7 @@
  • {% endif %}
  • - Upcoming meetings @@ -306,13 +339,13 @@
  • {% endif %}
  • - Past meetings
  • - Meeting proceedings @@ -338,56 +371,56 @@
  • {% endif %}
  • - IPR disclosures
  • - Liaison statements
  • - IESG agenda
  • - NomComs
  • - Downref registry
  • - Statistics
  • - - Tutorials - -
  • -
  • - API Help
  • - Release notes @@ -418,7 +445,7 @@
  • {% endif %}
  • - @@ -431,4 +458,4 @@ {% endif %} {% if flavor == 'top' %} {% include "base/menu_user.html" %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/ietf/templates/base/menu_user.html b/ietf/templates/base/menu_user.html index 9e6bbde56a..8245ece71c 100644 --- a/ietf/templates/base/menu_user.html +++ b/ietf/templates/base/menu_user.html @@ -1,4 +1,4 @@ -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} {% load origin %} {% origin %} {% load ietf_filters %} @@ -23,7 +23,7 @@ {% url 'django.contrib.auth.views.logout' as logout_url %} {% if request.get_full_path == logout_url %}
  • - Sign in @@ -34,14 +34,14 @@
  • {% csrf_token %} -
  • - Account info @@ -49,35 +49,35 @@
  • {% if user and user.person %}
  • - Public profile page
  • {% endif %}
  • - Preferences
  • - API keys
  • - Change password
  • - Change username @@ -85,21 +85,21 @@
  • {% else %}
  • - + href="{% url 'ietf.ietfauth.views.login' %}?next={{ request.get_full_path|removeprefix:'/accounts/login/?next='|urlencode }}"> Sign in
  • - Password reset
  • - Preferences @@ -109,7 +109,7 @@ {% endif %} {% if not request.user.is_authenticated %}
  • - New account @@ -117,7 +117,7 @@ {% endif %} {% if user|has_role:"Reviewer" %}
  • - My reviews @@ -127,31 +127,31 @@ {% if flavor == "top" %}
  • {% endif %}
  • AD dashboard
  • - My docs
  • - Next telechat
  • - Discusses
  • - Milestone review
  • - Last Call docs @@ -163,31 +163,31 @@ IETF secretariat
  • - Telechat dates
  • - Management items
  • - Milestones
  • - Sync discrepancies
  • - Account allowlist @@ -202,7 +202,7 @@ IANA
  • - Sync discrepancies @@ -217,7 +217,7 @@ RFC Editor
  • - Sync discrepancies diff --git a/ietf/templates/base/menu_wg.html b/ietf/templates/base/menu_wg.html index 3ab7ca399b..09fef8c7b0 100644 --- a/ietf/templates/base/menu_wg.html +++ b/ietf/templates/base/menu_wg.html @@ -3,7 +3,7 @@ {% origin %} {% for p in parents %}
  • - {{ p.short_name }} diff --git a/ietf/templates/community/untrack_document.html b/ietf/templates/community/untrack_document.html index 985dcad89b..fe94081a79 100644 --- a/ietf/templates/community/untrack_document.html +++ b/ietf/templates/community/untrack_document.html @@ -1,17 +1,14 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} +{% extends "base.html" %} {% load origin %} {% origin %} -{% load django_bootstrap5 %} {% block title %}Remove tracking of document {{ name }}{% endblock %} -{% bootstrap_messages %} -
    - {% csrf_token %} -

    - Remove {{ name }} from the list? -

    - -
    +{% block content %} +
    + {% csrf_token %} +

    + Remove {{ name }} from the list? +

    + +
    +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/ad_count.html b/ietf/templates/doc/ad_count.html deleted file mode 100644 index f69b0cc838..0000000000 --- a/ietf/templates/doc/ad_count.html +++ /dev/null @@ -1,33 +0,0 @@ -{# Copyright The IETF Trust 2015, All Rights Reserved #} -{% load ietf_filters %} - -{% if prev or count %} - {{ count }} - {% if user|has_role:"Area Director,Secretariat" %} - {{ d.name }}
  • - {% endfor %} - - {% endif %}" - {% endif %} - {% with label.2 as up_is_good %} - {% if prev < count %} - class="bi bi-arrow-up-right-circle{% if count %}-fill{% endif %} {{ up_is_good|yesno:'text-success,text-danger,text-body-secondary' }}" - {% elif prev > count %} - class="bi bi-arrow-down-right-circle{% if count %}-fill{% endif %} {{ up_is_good|yesno:'text-danger,text-success,text-body-secondary' }}" - {% else %} - class="bi bi-arrow-right-circle text-body-secondary" - {% endif %} - > - {% endwith %} - {% endif %} -{% endif %} \ No newline at end of file diff --git a/ietf/templates/doc/ad_list.html b/ietf/templates/doc/ad_list.html index 189754e8ac..cfc8830e50 100644 --- a/ietf/templates/doc/ad_list.html +++ b/ietf/templates/doc/ad_list.html @@ -3,42 +3,58 @@ {% load origin static %} {% load ietf_filters %} {% block pagehead %} - + + {% endblock %} -{% block title %}Area directors{% endblock %} +{% block morecss %} + table .border-bottom { border-bottom-color: var(--highcharts-neutral-color-80) !important; } + .highcharts-container .highcharts-axis-labels { font-size: .7rem; } + .highcharts-container .highcharts-graph { stroke-width: 2.5; } + .highcharts-container .highcharts-color-0 { + fill: var(--bs-primary); + stroke: var(--bs-primary); + } + .highcharts-container .highcharts-data-label text { + font-size: 1rem; + font-weight: inherit; + } +{% endblock %} +{% block title %}IESG Dashboard{% endblock %} {% block content %} {% origin %} -

    Area Director Workload

    +

    IESG Dashboard

    {% if user|has_role:"Area Director,Secretariat" %}
    - {{ delta.days }}-day trend indicators + {{ delta }}-day trend graphs are only shown to logged-in Area Directors.
    {% endif %} - {% for group in workload %} -

    {{ group.group_type }} State Counts

    - + {% for dt in metadata %} +

    {{ dt.type.1 }} State Counts

    +
    - {% for g, desc, up_is_good in group.group_names %} - {% endfor %} - {% for ad, ad_data in group.counts %} + {% for ad in dt.ads %} - {% for label, count, prev, docs_delta in ad_data %} - {% endfor %} @@ -47,9 +63,9 @@

    {{ group.group_type }} Stat

    - {% for label, count, prev in group.sums %} - {% endfor %} @@ -69,4 +85,114 @@

    {{ group.group_type }} Stat }); }); + + {{ data|json_script:"data" }} + {% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/add_comment.html b/ietf/templates/doc/add_comment.html index 01e12418d8..211cb380db 100644 --- a/ietf/templates/doc/add_comment.html +++ b/ietf/templates/doc/add_comment.html @@ -2,13 +2,14 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load django_bootstrap5 %} -{% block title %}Add comment for {{ doc }}{% endblock %} +{% block title %}Add comment for +{% if review_req %} {{ review_req }} {% else %} {{ doc }} {% endif %} {% endblock %} {% block content %} {% origin %}

    Add comment
    - {{ doc }} + {% if review_req %} {{ review_req }} {% else %} {{ doc }} {% endif %}

    {% csrf_token %} @@ -17,7 +18,12 @@

    The comment will be added to the history trail.

    {% bootstrap_button button_type="submit" content="Submit" %} + {% if review_req %} + Back + {% else %} Back + {% endif %} {% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/ballot/approvaltext.html b/ietf/templates/doc/ballot/approvaltext.html index cc47c17156..3cb632b8f8 100644 --- a/ietf/templates/doc/ballot/approvaltext.html +++ b/ietf/templates/doc/ballot/approvaltext.html @@ -29,7 +29,7 @@

    href="{% url 'ietf.doc.views_ballot.approve_ballot' name=doc.name %}">Approve ballot {% endif %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/approve_ballot.html b/ietf/templates/doc/ballot/approve_ballot.html index ff8ab08946..30dd05fa43 100644 --- a/ietf/templates/doc/ballot/approve_ballot.html +++ b/ietf/templates/doc/ballot/approve_ballot.html @@ -21,7 +21,7 @@

    {% endif %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/approve_downrefs.html b/ietf/templates/doc/ballot/approve_downrefs.html index 6dea10a335..ad528c67bf 100644 --- a/ietf/templates/doc/ballot/approve_downrefs.html +++ b/ietf/templates/doc/ballot/approve_downrefs.html @@ -12,16 +12,16 @@

    The ballot for - {{ doc }} + {{ doc }} was just approved.

    {% if not downrefs_to_rfc %}

    No downward references for - {{ doc }} + {{ doc }}

    Back + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back {% else %}

    Add downward references to RFCs to the DOWNREF registry, if they were identified in the IETF Last Call and approved by the Sponsoring Area Director. @@ -41,7 +41,7 @@

    {% csrf_token %} {% bootstrap_form approve_downrefs_form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Add no DOWNREF entries diff --git a/ietf/templates/doc/ballot/ballot_issued.html b/ietf/templates/doc/ballot/ballot_issued.html index baf428ee6b..dfa03896e9 100644 --- a/ietf/templates/doc/ballot/ballot_issued.html +++ b/ietf/templates/doc/ballot/ballot_issued.html @@ -11,7 +11,7 @@

    Ballot for - {{ doc }} + {{ doc }} has been sent out.

    {% if doc.telechat_date %} @@ -24,5 +24,5 @@

    {% endif %} Back + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back {% endblock %} diff --git a/ietf/templates/doc/ballot/clear_ballot.html b/ietf/templates/doc/ballot/clear_ballot.html index 1d5bc46005..09e7dfef1b 100644 --- a/ietf/templates/doc/ballot/clear_ballot.html +++ b/ietf/templates/doc/ballot/clear_ballot.html @@ -14,14 +14,14 @@

    {% csrf_token %}

    Clear the ballot for - {{ doc }}? + {{ doc }}?
    This will clear all ballot positions and discuss entries.

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/defer_ballot.html b/ietf/templates/doc/ballot/defer_ballot.html index 43fdc82a5f..ae7099e9e1 100644 --- a/ietf/templates/doc/ballot/defer_ballot.html +++ b/ietf/templates/doc/ballot/defer_ballot.html @@ -14,14 +14,14 @@

    {% csrf_token %}

    Defer the ballot for - {{ doc }}? + {{ doc }}?
    The ballot will then be put on the IESG agenda of {{ telechat_date }}.

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/edit_position.html b/ietf/templates/doc/ballot/edit_position.html index bf119236f5..293c186112 100644 --- a/ietf/templates/doc/ballot/edit_position.html +++ b/ietf/templates/doc/ballot/edit_position.html @@ -54,7 +54,7 @@

    {% endif %} {% endif %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/lastcalltext.html b/ietf/templates/doc/ballot/lastcalltext.html index c1d7bd70d8..fe2b884c2b 100644 --- a/ietf/templates/doc/ballot/lastcalltext.html +++ b/ietf/templates/doc/ballot/lastcalltext.html @@ -39,7 +39,7 @@

    href="{% url 'ietf.doc.views_ballot.make_last_call' name=doc.name %}">Issue last call {% endif %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/rfceditornote.html b/ietf/templates/doc/ballot/rfceditornote.html index b4cc9dadca..8a6d57379d 100644 --- a/ietf/templates/doc/ballot/rfceditornote.html +++ b/ietf/templates/doc/ballot/rfceditornote.html @@ -31,7 +31,7 @@

    Clear + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/send_ballot_comment.html b/ietf/templates/doc/ballot/send_ballot_comment.html index ffd2d41191..1c5f521859 100644 --- a/ietf/templates/doc/ballot/send_ballot_comment.html +++ b/ietf/templates/doc/ballot/send_ballot_comment.html @@ -37,7 +37,7 @@

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/undefer_ballot.html b/ietf/templates/doc/ballot/undefer_ballot.html index da74326a2f..4e86698160 100644 --- a/ietf/templates/doc/ballot/undefer_ballot.html +++ b/ietf/templates/doc/ballot/undefer_ballot.html @@ -19,7 +19,7 @@

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/ballot/writeupnotes.html b/ietf/templates/doc/ballot/writeupnotes.html index dbbd04dc20..925387d28d 100644 --- a/ietf/templates/doc/ballot/writeupnotes.html +++ b/ietf/templates/doc/ballot/writeupnotes.html @@ -14,7 +14,7 @@

    {% csrf_token %} {% bootstrap_form ballot_writeup_form %}
    - Technical summary, Working Group summary, document quality, personnel, IRTF note, IESG note, IANA note. This text will be appended to all announcements and messages to the IRTF or RFC Editor. + Technical summary, Working Group summary, document quality, personnel, IANA note. This text will be appended to all announcements and messages to the IRTF or RFC Editor. {% if ballot_issue_danger %}

    This document has not completed IETF Last Call. Please do not issue the ballot early without good reason. @@ -32,8 +32,8 @@

    Save & {% if ballot_issued %}re-{% endif %}issue ballot + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/bofreq/change_editors.html b/ietf/templates/doc/bofreq/change_editors.html index 98c4ddb3a0..0c30cdecb4 100644 --- a/ietf/templates/doc/bofreq/change_editors.html +++ b/ietf/templates/doc/bofreq/change_editors.html @@ -16,7 +16,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/bofreq/change_responsible.html b/ietf/templates/doc/bofreq/change_responsible.html index aabb0048e4..8c51c6e1f4 100644 --- a/ietf/templates/doc/bofreq/change_responsible.html +++ b/ietf/templates/doc/bofreq/change_responsible.html @@ -16,7 +16,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/change_ad.html b/ietf/templates/doc/change_ad.html index 24e8089510..9cc7437574 100644 --- a/ietf/templates/doc/change_ad.html +++ b/ietf/templates/doc/change_ad.html @@ -15,7 +15,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/change_title.html b/ietf/templates/doc/change_title.html index 25026be351..14d7956cfe 100644 --- a/ietf/templates/doc/change_title.html +++ b/ietf/templates/doc/change_title.html @@ -15,7 +15,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/charter/action_announcement_text.html b/ietf/templates/doc/charter/action_announcement_text.html index 88a1b61412..e087b175b4 100644 --- a/ietf/templates/doc/charter/action_announcement_text.html +++ b/ietf/templates/doc/charter/action_announcement_text.html @@ -21,7 +21,7 @@

    {% if user|has_role:"Secretariat" %} + href="{% url 'ietf.doc.views_charter.approve' name=charter.name %}"> Charter approval page {% endif %} diff --git a/ietf/templates/doc/charter/action_text.txt b/ietf/templates/doc/charter/action_text.txt index fbe9ed3fe1..9a1e715222 100644 --- a/ietf/templates/doc/charter/action_text.txt +++ b/ietf/templates/doc/charter/action_text.txt @@ -1,4 +1,4 @@ -{% load ietf_filters %}{% autoescape off %}From: The IESG +{% load ietf_filters %}{% autoescape off %}From: {% if group.type_id == "rg" %}The IRTF {% else %}The IESG {% endif %} To: {{ to }}{% if cc %} Cc: {{ cc }} {% endif %} Subject: {{ group.type.name }} Action: {{ action_type }} {{ group.name }} ({{ group.acronym }}) diff --git a/ietf/templates/doc/charter/approve.html b/ietf/templates/doc/charter/approve.html index f109da6872..2a8654482e 100644 --- a/ietf/templates/doc/charter/approve.html +++ b/ietf/templates/doc/charter/approve.html @@ -2,16 +2,16 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load django_bootstrap5 %} -{% block title %}Approve {{ charter.canonical_name }}{% endblock %} +{% block title %}Approve {{ charter.name }}{% endblock %} {% block content %} {% origin %} -

    Approve {{ charter.canonical_name }}-{{ charter.rev }}

    +

    Approve {{ charter.name }}-{{ charter.rev }}

    {% csrf_token %}
    {{ announcement }}
    + href="{% url "ietf.doc.views_charter.action_announcement_text" name=charter.name %}?next=approve"> Edit/regenerate announcement {% csrf_token %} {% bootstrap_form ballot_writeup_form %} -
    Working group summary, personnel, IAB note, IESG note, IANA note.
    +
    Working group summary, personnel, IANA note.

    {% csrf_token %} {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=charter.name %}"> Back diff --git a/ietf/templates/doc/conflict_review/approval_text.txt b/ietf/templates/doc/conflict_review/approval_text.txt index 8e211e21ce..a52ac11a71 100644 --- a/ietf/templates/doc/conflict_review/approval_text.txt +++ b/ietf/templates/doc/conflict_review/approval_text.txt @@ -1,9 +1,9 @@ {% load ietf_filters %}{% load mail_filters %}{% autoescape off %}From: The IESG To: {{ to }} Cc: {{ cc }} -Subject: Results of IETF-conflict review for {{conflictdoc.canonical_name}}-{{conflictdoc.rev}} +Subject: Results of IETF-conflict review for {{conflictdoc.name}}-{{conflictdoc.rev}} -{% filter wordwrap:78 %}The IESG has completed a review of {{conflictdoc.canonical_name}}-{{conflictdoc.rev}} consistent with RFC5742. +{% filter wordwrap:78 %}The IESG has completed a review of {{conflictdoc.name}}-{{conflictdoc.rev}} consistent with RFC5742. {% if review.get_state_slug == 'appr-reqnopub-pend' %} The IESG recommends that '{{ conflictdoc.title }}' {{ conflictdoc.file_tag|safe }} NOT be published as {{ conflictdoc|std_level_prompt_with_article }}. diff --git a/ietf/templates/doc/conflict_review/approve.html b/ietf/templates/doc/conflict_review/approve.html index 5283587f07..ccbac9c4cb 100644 --- a/ietf/templates/doc/conflict_review/approve.html +++ b/ietf/templates/doc/conflict_review/approve.html @@ -2,10 +2,10 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load django_bootstrap5 %} -{% block title %}Approve {{ review.canonical_name }}{% endblock %} +{% block title %}Approve {{ review.name }}{% endblock %} {% block content %} {% origin %} -

    Approve {{ review.canonical_name }}

    +

    Approve {{ review.name }}

    {% csrf_token %} {% bootstrap_form form %} diff --git a/ietf/templates/doc/conflict_review/start.html b/ietf/templates/doc/conflict_review/start.html index 9b96ec6179..d8abc2b811 100644 --- a/ietf/templates/doc/conflict_review/start.html +++ b/ietf/templates/doc/conflict_review/start.html @@ -3,13 +3,13 @@ {% load origin %} {% load django_bootstrap5 %} {% load ietf_filters %} -{% block title %}Begin IETF conflict review for {{ doc_to_review.canonical_name }}-{{ doc_to_review.rev }}{% endblock %} +{% block title %}Begin IETF conflict review for {{ doc_to_review.name }}-{{ doc_to_review.rev }}{% endblock %} {% block content %} {% origin %}

    Begin IETF conflict review
    - {{ doc_to_review.canonical_name }}-{{ doc_to_review.rev }} + {{ doc_to_review.name }}-{{ doc_to_review.rev }}

    {% if user|has_role:"Secretariat" %}

    diff --git a/ietf/templates/doc/conflict_review/submit.html b/ietf/templates/doc/conflict_review/submit.html index 586de93560..8259c6b12f 100644 --- a/ietf/templates/doc/conflict_review/submit.html +++ b/ietf/templates/doc/conflict_review/submit.html @@ -2,16 +2,16 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load django_bootstrap5 %} -{% block title %}Edit conflict review for {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}{% endblock %} +{% block title %}Edit conflict review for {{ conflictdoc.name }}-{{ conflictdoc.rev }}{% endblock %} {% block content %} {% origin %}

    Edit conflict review
    - {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }} + {{ conflictdoc.name }}-{{ conflictdoc.rev }}

    - The text will be submitted as {{ review.canonical_name }}-{{ next_rev }} + The text will be submitted as {{ review.name }}-{{ next_rev }}

    {% csrf_token %} @@ -27,7 +27,7 @@

    Reset to template text + href="{% url "ietf.doc.views_doc.document_main" name=review.name %}"> Back diff --git a/ietf/templates/doc/document_bibtex.bib b/ietf/templates/doc/document_bibtex.bib index 5dda4649eb..5e52ec3c58 100644 --- a/ietf/templates/doc/document_bibtex.bib +++ b/ietf/templates/doc/document_bibtex.bib @@ -3,7 +3,7 @@ {% load ietf_filters %} {% load textfilters %} -{% if doc.get_state_slug == "rfc" %} +{% if doc.type_id == "rfc" %} {% if doc.stream|slugify == "legacy" %} % Datatracker information for RFCs on the Legacy Stream is unfortunately often % incorrect. Please correct the bibtex below based on the information in the @@ -16,7 +16,7 @@ @misc{ publisher = {RFC Editor}, doi = {% templatetag openbrace %}{{ doi }}{% templatetag closebrace %}, url = {% templatetag openbrace %}{{ doc.rfc_number|rfceditor_info_url }}{% templatetag closebrace %},{% else %} -{% if published %}%% You should probably cite rfc{{ latest_revision.doc.rfc_number }} instead of this I-D.{% else %}{% if replaced_by %}%% You should probably cite {{replaced_by|join:" or "}} instead of this I-D.{% else %} +{% if published_as %}%% You should probably cite rfc{{ published_as.rfc_number }} instead of this I-D.{% else %}{% if replaced_by %}%% You should probably cite {{replaced_by|join:" or "}} instead of this I-D.{% else %} {% if doc.rev != latest_revision.rev %}%% You should probably cite {{latest_revision.doc.name}}-{{latest_revision.rev}} instead of this revision.{%endif%}{% endif %}{% endif %} @techreport{% templatetag openbrace %}{{doc.name|slice:"6:"}}-{{doc.rev}}, number = {% templatetag openbrace %}{{doc.name}}-{{doc.rev}}{% templatetag closebrace %}, @@ -25,11 +25,11 @@ @techreport{ publisher = {% templatetag openbrace %}Internet Engineering Task Force{% templatetag closebrace %}, note = {% templatetag openbrace %}Work in Progress{% templatetag closebrace %}, url = {% templatetag openbrace %}{{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=doc.name rev=doc.rev %}{% templatetag closebrace %},{% endif %} - author = {% templatetag openbrace %}{% for author in doc.documentauthor_set.all %}{{ author.person.name|texescape}}{% if not forloop.last %} and {% endif %}{% endfor %}{% templatetag closebrace %}, + author = {% templatetag openbrace %}{% for author in doc.documentauthor_set.all %}{{ author.person.name|texescape}}{% if not forloop.last %} and {% endif %}{% endfor %}{% templatetag closebrace %}, title = {% templatetag openbrace %}{% templatetag openbrace %}{{doc.title|texescape}}{% templatetag closebrace %}{% templatetag closebrace %}, pagetotal = {{ doc.pages }}, year = {{ doc.pub_date.year }}, - month = {{ doc.pub_date|date:"b" }},{% if not doc.rfc_number or doc.pub_date.day == 1 and doc.pub_date.month == 4 %} + month = {{ doc.pub_date|date:"b" }},{% if not doc.type_id == "rfc" or doc.pub_date.day == 1 and doc.pub_date.month == 4 %} day = {{ doc.pub_date.day }},{% endif %} abstract = {% templatetag openbrace %}{{ doc.abstract|clean_whitespace|texescape }}{% templatetag closebrace %}, {% templatetag closebrace %} diff --git a/ietf/templates/doc/document_charter.html b/ietf/templates/doc/document_charter.html index 08584849d8..7564e1d213 100644 --- a/ietf/templates/doc/document_charter.html +++ b/ietf/templates/doc/document_charter.html @@ -227,10 +227,10 @@ {% if doc.rev != "" %}
    - {{ doc.canonical_name }}-{{ doc.rev }} + {{ doc.name }}-{{ doc.rev }}
    -
    {{ content|maybewordwrap|urlize_ietf_docs|linkify }}
    + {{ content }}
    {% endif %} diff --git a/ietf/templates/doc/document_conflict_review.html b/ietf/templates/doc/document_conflict_review.html index f70f5925f6..8a2361832b 100644 --- a/ietf/templates/doc/document_conflict_review.html +++ b/ietf/templates/doc/document_conflict_review.html @@ -27,8 +27,8 @@

    diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index 9caf5b8f5e..ccfb23f06a 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -13,11 +13,11 @@ title="Document changes" href="/feed/document-changes/{{ name }}/"> + content="{{ doc.title }} {% if doc.type_id == 'rfc' and not snapshot %}(RFC {{ rfc_number }}{% if published %}, {{ doc.pub_date|date:'F Y' }}{% endif %}{% if obsoleted_by %}; obsoleted by {% for rel in obsoleted_by %}{{ rel.source.name|prettystdname}}{% if not forloop.last%}, {% endif %}{% endfor %}{% endif %}){% endif %}"> {% endblock %} {% block morecss %}.inline { display: inline; }{% endblock %} {% block title %} - {% if doc.get_state_slug == "rfc" and not snapshot %} + {% if doc.type_id == "rfc" and not snapshot %} RFC {{ rfc_number }} - {{ doc.title }} {% else %} {{ name }}-{{ doc.rev }} - {{ doc.title }} @@ -31,7 +31,7 @@ {% if doc.rev != latest_rev %}
    The information below is for an old version of the document.
    {% else %} - {% if doc.get_state_slug == "rfc" and snapshot %} + {% if doc.became_rfc %}
    The information below is for an old version of the document that is already published as an RFC.
    @@ -173,11 +173,11 @@ {% endif %} - {% if doc.stream_id == 'ietf' or doc.stream_id == 'ise' or doc.stream_id == 'irtf' or doc.stream_id == 'editorial' %} + {% if doc.stream_id == 'ietf' or doc.stream_id == 'ise' or doc.stream_id == 'irtf' or doc.stream_id == 'editorial' or doc.stream_id == 'iab' %} - {% if iesg_state.slug != 'idexists' %} - {% if doc.note or can_edit %} - - - - - - - {% endif %} + {% if iesg_state.slug != 'idexists' and doc.note %} + + + + + + {% endif %} @@ -650,14 +637,14 @@ {% endif %} References @@ -684,7 +671,7 @@ {% if user.is_authenticated %} - Untrack - @@ -727,14 +714,14 @@ {% endif %} {% if user.person.review_teams %} - Remove review wishes - @@ -764,10 +751,10 @@ {% endfor %} {% endif %} - {% if doc.get_state_slug == "active" or doc.get_state_slug == "rfc" %} + {% if doc.get_state_slug == "active" or doc.type_id == "rfc" or doc.became_rfc %} - + + {% endfor %} diff --git a/ietf/templates/doc/document_format_buttons.html b/ietf/templates/doc/document_format_buttons.html index 2c79c92646..043b9a797e 100644 --- a/ietf/templates/doc/document_format_buttons.html +++ b/ietf/templates/doc/document_format_buttons.html @@ -4,11 +4,11 @@ {% if label != skip_format %} - + {% endblock %} {% block content %} {% origin %} @@ -21,6 +21,27 @@

    Revision differences

    {% include "doc/document_history_form.html" with doc=doc diff_revisions=diff_revisions action=rfcdiff_base_url snapshot=snapshot only %} {% endif %}

    Document history

    + {% if doc.came_from_draft %} +
    + {% endif %} + {% if doc.became_rfc %} + + {% endif %} + {% if can_add_comment %}
    - + {% if doc.type_id not in "rfc,bcp,std,fyi" %}{% endif %} @@ -45,7 +66,7 @@

    Document history

    - + {% if doc.type_id not in "rfc,bcp,std,fyi" %}{% endif %} diff --git a/ietf/templates/doc/document_history_form.html b/ietf/templates/doc/document_history_form.html index 30e0d28000..646da0038b 100644 --- a/ietf/templates/doc/document_history_form.html +++ b/ietf/templates/doc/document_history_form.html @@ -11,7 +11,6 @@
    {% endif %} -{% with prev_rev=doc.rev|add:"-1"|stringformat:"02d" %}
    {% endif %} - {% if replaces or not document_html and can_edit_stream_info %} - - - - - - - {% endif %} - {% if replaced_by %} - - - - - - - {% endif %} - {% if can_view_possibly_replaces %} - {% if possibly_replaces %} + {% if doc.type_id != "rfc" %} + {% if replaces or not document_html and can_edit_stream_info %} - + {% endif %} - {% if possibly_replaced_by %} + {% if replaced_by %} {% endif %} + {% if can_view_possibly_replaces %} + {% if possibly_replaces %} + + + + + + + {% endif %} + {% if possibly_replaced_by %} + + + + + + + {% endif %} + {% endif %} {% endif %} @@ -231,8 +232,8 @@ {% endif %} - - {% if doc.get_state_slug != "rfc" and not snapshot %} + {% if doc.type_id != "rfc" and not snapshot %} {% endif %} {% endfor %} - {% if review_assignments or can_request_review %} - - - - - + + + + - - {% endif %} - {% if conflict_reviews %} - - - - - - - {% endif %} + + + {% endif %} + {% if conflict_reviews %} + + + + + + + {% endif %} + {% endif %} {% endif %} {% with doc.docextresource_set.all as resources %} {% if resources or doc.group and doc.group.list_archive or can_edit_stream_info or can_edit_individual %} diff --git a/ietf/templates/doc/document_material.html b/ietf/templates/doc/document_material.html index 189c635ceb..7537082df9 100644 --- a/ietf/templates/doc/document_material.html +++ b/ietf/templates/doc/document_material.html @@ -2,7 +2,7 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load static %} -{% load ietf_filters textfilters %} +{% load ietf_filters textfilters tz %} {% block title %}{{ doc.title|default:"Untitled" }}{% endblock %} {% block content %} {% origin %} @@ -19,7 +19,7 @@ {% if doc.meeting_related %}Meeting{% endif %} {{ doc.type.name }} - + + {% if doc.meeting_related %} + + + + + + {% endif %} {% for ref in refs %} - {% with ref.source.canonical_name as name %} + {% with ref.source.name as src_name %} diff --git a/ietf/templates/doc/document_status_change.html b/ietf/templates/doc/document_status_change.html index bfb52a49f4..fdb9bab4cd 100644 --- a/ietf/templates/doc/document_status_change.html +++ b/ietf/templates/doc/document_status_change.html @@ -52,7 +52,7 @@ diff --git a/ietf/templates/doc/document_subseries.html b/ietf/templates/doc/document_subseries.html new file mode 100644 index 0000000000..f0273c9093 --- /dev/null +++ b/ietf/templates/doc/document_subseries.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2023, All Rights Reserved #} +{% load origin %} +{% load static %} +{% load ietf_filters %} +{% block title %}{{ doc.name|prettystdname }}{% endblock %} +{% block content %} + {% origin %} + {{ top|safe }} +

    {{ doc.name|prettystdname }} {% if doc.contains %}consists of:{% else %}currently contains no RFCs{% endif %}

    + {% for rfc in doc.contains|dictsort:"rfc_number" %} +

    RFC {{rfc.name|slice:"3:"}} : {{rfc.title}}

    + {% endfor %} + +{% endblock %} diff --git a/ietf/templates/doc/document_subseries_top.html b/ietf/templates/doc/document_subseries_top.html new file mode 100644 index 0000000000..742ea51372 --- /dev/null +++ b/ietf/templates/doc/document_subseries_top.html @@ -0,0 +1,17 @@ +{# Copyright The IETF Trust 2015, All Rights Reserved #} +{% load origin %} +{% origin %} +{% load ietf_filters %} +

    + {{ doc.name|prettystdname }} +

    + diff --git a/ietf/templates/doc/document_top.html b/ietf/templates/doc/document_top.html index 29af73d9d8..8a6923ee73 100644 --- a/ietf/templates/doc/document_top.html +++ b/ietf/templates/doc/document_top.html @@ -5,7 +5,9 @@

    {{ doc.title|default:"(Untitled)" }}
    - {{ name }} + {{ name }}{% if doc.part_of %} + {% for sub in doc.part_of %}{% if sub.contains|length_is:"1" %} also known as {% else %} part of {% endif %}{{sub.name|slice:":3"|upper}} {{sub.name|slice:"3:"}}{% if not forloop.last %}, {%endif%}{% endfor %} + {% endif %}

    - + diff --git a/ietf/templates/doc/edit_action_holders.html b/ietf/templates/doc/edit_action_holders.html index 38b0de37fd..88c764fe5e 100644 --- a/ietf/templates/doc/edit_action_holders.html +++ b/ietf/templates/doc/edit_action_holders.html @@ -40,7 +40,7 @@

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/edit_authors.html b/ietf/templates/doc/edit_authors.html index 597380ef2e..a0b8eb4cc7 100644 --- a/ietf/templates/doc/edit_authors.html +++ b/ietf/templates/doc/edit_authors.html @@ -48,7 +48,7 @@

    + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/edit_field.html b/ietf/templates/doc/edit_field.html index e0a83d7aad..10a1464581 100644 --- a/ietf/templates/doc/edit_field.html +++ b/ietf/templates/doc/edit_field.html @@ -2,13 +2,13 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% load django_bootstrap5 %} -{% block title %}{{ title }} {{ doc.canonical_name }}{% endblock %} +{% block title %}{{ title }} {{ doc.name }}{% endblock %} {% block content %} {% origin %}

    {{ title }}
    - {{ doc.canonical_name }} + {{ doc.name }}

    {{ info|safe }} @@ -18,7 +18,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/edit_notify.html b/ietf/templates/doc/edit_notify.html index 6869b69a83..9eaede521b 100644 --- a/ietf/templates/doc/edit_notify.html +++ b/ietf/templates/doc/edit_notify.html @@ -22,7 +22,7 @@

    name="regenerate_addresses"> Regenerate address list + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/idnits2-state.txt b/ietf/templates/doc/idnits2-state.txt index 7706549797..55fc78927a 100644 --- a/ietf/templates/doc/idnits2-state.txt +++ b/ietf/templates/doc/idnits2-state.txt @@ -1,7 +1,7 @@ {% load ietf_filters %}{% filter linebreaks_lf %}{% comment %} -{% endcomment %}Doc-tag: {{doc.name}};datatracker{% if doc.rfcnum %} -Doc-rfcnum: {{doc.rfcnum}}{% endif %} +{% endcomment %}Doc-tag: {{doc.name}};datatracker{% if doc.type_id == "rfc" %} +Doc-rfcnum: {{doc.rfc_number}}{% endif %} Doc-created: {{doc.created|date:"Y-m-d"}};datatracker{% if doc.deststatus %} Doc-deststatus: {{doc.deststatus}};datatracker{% endif %} Doc-rev: {{doc.rev}};datatracker -{% endfilter %} \ No newline at end of file +{% endfilter %} diff --git a/ietf/templates/doc/index_subseries.html b/ietf/templates/doc/index_subseries.html new file mode 100644 index 0000000000..3180a4535d --- /dev/null +++ b/ietf/templates/doc/index_subseries.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2023, All Rights Reserved #} +{% load origin %} +{% load static ietf_filters %} +{% block title %}{{type.name}}s{% endblock %} +{% block content %} + {% origin %} +

    {{type.name}}s

    + {% for doc in docs %} +
    + +
    + {% for rfc in doc.contains|dictsort:"rfc_number" %} +

    {{rfc.name|prettystdname}} : {{rfc.title}}

    + {% empty %} +

    {{doc.name|prettystdname}} currently contains no RFCs + {% endfor %} +

    +
    + {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/doc/mail/ballot_writeup.txt b/ietf/templates/doc/mail/ballot_writeup.txt index 7c7209cf6d..74871e5a86 100644 --- a/ietf/templates/doc/mail/ballot_writeup.txt +++ b/ietf/templates/doc/mail/ballot_writeup.txt @@ -33,13 +33,6 @@ Personnel Who is the Document Shepherd for this document? Who is the Responsible Area Director? {% endif %} -{% if doc.stream.slug == "irtf" %}IRTF Note - - (Insert IRTF Note here or remove section) -{% elif doc.stream.slug == "ietf" %}IESG Note - - (Insert IESG Note here or remove section) -{% endif %} IANA Note {% if iana %} {% filter wordwrap:"76"|indent:2 %}{{ iana }}{% endfilter %} diff --git a/ietf/templates/doc/mail/last_call_announcement.txt b/ietf/templates/doc/mail/last_call_announcement.txt index 79abcc1488..8f15a8e2a6 100644 --- a/ietf/templates/doc/mail/last_call_announcement.txt +++ b/ietf/templates/doc/mail/last_call_announcement.txt @@ -33,7 +33,7 @@ No IPR declarations have been submitted directly on this I-D. {% if downrefs %} The document contains these normative downward references. See RFC 3967 for additional information: -{% for ref in downrefs %} {{ref.target.document.canonical_name}}: {{ref.target.document.title}} ({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}}) +{% for ref in downrefs %} {{ref.target.name}}: {{ref.target.title}} ({{ref.target.std_level}} - {{ref.target.stream.desc}}) {% endfor %}{%endif%} {% endautoescape %} diff --git a/ietf/templates/doc/opengraph.html b/ietf/templates/doc/opengraph.html index f4527966a9..4fe39b6209 100644 --- a/ietf/templates/doc/opengraph.html +++ b/ietf/templates/doc/opengraph.html @@ -3,7 +3,7 @@ {% load static %} {% load ietf_filters %} {% origin %} - + diff --git a/ietf/templates/doc/remind_action_holders.html b/ietf/templates/doc/remind_action_holders.html index 05a98b2273..0e7ce9d5ce 100644 --- a/ietf/templates/doc/remind_action_holders.html +++ b/ietf/templates/doc/remind_action_holders.html @@ -27,7 +27,7 @@

    name="submit" value="Send reminder">Send + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/review/assign_reviewer.html b/ietf/templates/doc/review/assign_reviewer.html index 61b92b0de2..a5c7c6622f 100644 --- a/ietf/templates/doc/review/assign_reviewer.html +++ b/ietf/templates/doc/review/assign_reviewer.html @@ -15,7 +15,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_review.review_request" name=doc.name request_id=review_req.pk %}"> Back diff --git a/ietf/templates/doc/review/close_request.html b/ietf/templates/doc/review/close_request.html index 2216756258..4e0f435911 100644 --- a/ietf/templates/doc/review/close_request.html +++ b/ietf/templates/doc/review/close_request.html @@ -18,7 +18,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_review.review_request" name=doc.name request_id=review_req.pk %}"> Back diff --git a/ietf/templates/doc/review/complete_review.html b/ietf/templates/doc/review/complete_review.html index 40f8913ac7..370e311c72 100644 --- a/ietf/templates/doc/review/complete_review.html +++ b/ietf/templates/doc/review/complete_review.html @@ -66,9 +66,7 @@

    If you enter the review below, the review will be sent - to {{ review_to|join:", "|linkify }} - {% if review_cc %}, with a CC to {{ review_cc|join:", "|linkify }}{% endif %} - . + to {% for addr in to %}{{ addr|linkify }}{% if not forloop.last %}, {% endif %}{% endfor %}{% if review_cc %}, with a CC to {% for addr in cc %}{{ addr|linkify }}{% if not forloop.last %}, {% endif %}{% endfor %}{% endif %}.

    {% elif assignment %}

    @@ -88,7 +86,7 @@

    {% if assignment %} + href="{% url "ietf.doc.views_review.review_request" name=doc.name request_id=assignment.review_request.pk %}"> Back {% else %} diff --git a/ietf/templates/doc/review/edit_request_comment.html b/ietf/templates/doc/review/edit_request_comment.html index 420e4f038d..50afa19acb 100644 --- a/ietf/templates/doc/review/edit_request_comment.html +++ b/ietf/templates/doc/review/edit_request_comment.html @@ -14,7 +14,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_review.review_request" name=review_req.doc.name request_id=review_req.pk %}"> Back diff --git a/ietf/templates/doc/review/edit_request_deadline.html b/ietf/templates/doc/review/edit_request_deadline.html index 0f8f32550d..7706f96396 100644 --- a/ietf/templates/doc/review/edit_request_deadline.html +++ b/ietf/templates/doc/review/edit_request_deadline.html @@ -17,7 +17,7 @@

    {% bootstrap_form form %} + href="{% url "ietf.doc.views_review.review_request" name=review_req.doc.name request_id=review_req.pk %}"> Back diff --git a/ietf/templates/doc/review/mark_reviewer_assignment_no_response.html b/ietf/templates/doc/review/mark_reviewer_assignment_no_response.html index be123f5a7c..4bc4254785 100644 --- a/ietf/templates/doc/review/mark_reviewer_assignment_no_response.html +++ b/ietf/templates/doc/review/mark_reviewer_assignment_no_response.html @@ -19,7 +19,7 @@

    name="action" value="noresponse">Mark assignment as no-response + href="{% url "ietf.doc.views_review.review_request" name=assignment.review_request.doc.name request_id=assignment.review_request.pk %}"> Back diff --git a/ietf/templates/doc/review/reject_reviewer_assignment.html b/ietf/templates/doc/review/reject_reviewer_assignment.html index 73e1afe2cd..7fbde360cd 100644 --- a/ietf/templates/doc/review/reject_reviewer_assignment.html +++ b/ietf/templates/doc/review/reject_reviewer_assignment.html @@ -10,7 +10,7 @@

    {{ review_req.doc.name }}

    {% include "doc/review/request_info.html" %} - {% if not review_request_past_deadline %} + {% if allow_reject_request %}

    Do you want to reject this assignment?

    @@ -18,7 +18,7 @@

    {% csrf_token %} {% bootstrap_form form %} + href="{% url "ietf.doc.views_review.review_request" name=doc.name request_id=review_req.pk %}"> Back diff --git a/ietf/templates/doc/review/request_info.html b/ietf/templates/doc/review/request_info.html index 31578f0100..ee46916b43 100644 --- a/ietf/templates/doc/review/request_info.html +++ b/ietf/templates/doc/review/request_info.html @@ -177,6 +177,8 @@
    {% if assignment.state_id == "assigned" %} Assignment not accepted yet + {% elif assignment.state_id == "rejected" %} + Assignment rejected {% else %} Assignment accepted {% endif %} @@ -225,7 +227,21 @@ {% endif %} - {% if assignment.state_id != "withdrawn" and assignment.state_id != "no-response" and assignment.state_id != "rejected" %} + {% if doc == assignment.review %} +

    + + + + + {% endif %} + {% if assignment.state_id != "withdrawn" and assignment.state_id != "no-response" and assignment.state_id != "rejected" and doc != assignment.review%} @@ -337,4 +353,4 @@ Assign reviewer -{% endif %} \ No newline at end of file +{% endif %} diff --git a/ietf/templates/doc/review/request_review.html b/ietf/templates/doc/review/request_review.html index d7980b1a56..b765871d65 100644 --- a/ietf/templates/doc/review/request_review.html +++ b/ietf/templates/doc/review/request_review.html @@ -44,7 +44,7 @@

    {% bootstrap_field form.comment layout="horizontal" %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/review/review_request.html b/ietf/templates/doc/review/review_request.html index ccf3c18361..85335aab6e 100644 --- a/ietf/templates/doc/review/review_request.html +++ b/ietf/templates/doc/review/review_request.html @@ -21,6 +21,15 @@

    {% endif %}

    History

    + {% if can_add_comment %} + + {% endif %}
    @@ -30,6 +39,7 @@

    History

    + {% for h in history %} {% if h.history_change_reason %} @@ -39,6 +49,7 @@

    History

    {% endif %} {% endfor %} +
    Description
    {% endblock %} diff --git a/ietf/templates/doc/review/submit_unsolicited_review.html b/ietf/templates/doc/review/submit_unsolicited_review.html index 615694f3e0..5db7e9cd62 100644 --- a/ietf/templates/doc/review/submit_unsolicited_review.html +++ b/ietf/templates/doc/review/submit_unsolicited_review.html @@ -18,7 +18,7 @@

    {% bootstrap_form form layout="horizontal" %} + href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}"> Back diff --git a/ietf/templates/doc/review/withdraw_reviewer_assignment.html b/ietf/templates/doc/review/withdraw_reviewer_assignment.html index db598532f2..aed48ba78b 100644 --- a/ietf/templates/doc/review/withdraw_reviewer_assignment.html +++ b/ietf/templates/doc/review/withdraw_reviewer_assignment.html @@ -16,7 +16,7 @@

    {% csrf_token %} + href="{% url "ietf.doc.views_review.review_request" name=assignment.review_request.doc.name request_id=assignment.review_request.pk %}"> Back diff --git a/ietf/templates/doc/review_assignment_summary.html b/ietf/templates/doc/review_assignment_summary.html index af748a4e91..6bb42ea074 100644 --- a/ietf/templates/doc/review_assignment_summary.html +++ b/ietf/templates/doc/review_assignment_summary.html @@ -20,7 +20,7 @@ {{ review_assignment.review_request.team.acronym|upper }} {{ review_assignment.review_request.type.name }} Review due {{ review_assignment.review_request.deadline|date:"Y-m-d" }} - + Incomplete {% endif %} diff --git a/ietf/templates/doc/review_request_summary.html b/ietf/templates/doc/review_request_summary.html index efeb4a030e..af4f2d5f7b 100644 --- a/ietf/templates/doc/review_request_summary.html +++ b/ietf/templates/doc/review_request_summary.html @@ -3,7 +3,7 @@ href="{% url 'ietf.doc.views_review.review_request' review_request.doc.name review_request.pk %}"> {{ review_request.team.acronym|upper }} {{ review_request.type.name }} Review due {{ review_request.deadline|date:"Y-m-d" }} - + Requested - + \ No newline at end of file diff --git a/ietf/templates/doc/revisions_list.html b/ietf/templates/doc/revisions_list.html index cde628ddae..761d4cd04b 100644 --- a/ietf/templates/doc/revisions_list.html +++ b/ietf/templates/doc/revisions_list.html @@ -6,31 +6,46 @@

    {{ trigger }} - {{ to|join:', '|unescape|linkify }} - {{ cc|join:', '|unescape|linkify }} + + {% for addr in to %} + {{ addr|linkify }}{% if not forloop.last %}, {% endif %} + {% endfor %} + + + {% for addr in cc %} + {{ addr|linkify }}{% if not forloop.last %}, {% endif %} + {% endfor %} + {% endfor %} diff --git a/ietf/templates/group/group_about.html b/ietf/templates/group/group_about.html index 27ebab35cc..cbc2e11536 100644 --- a/ietf/templates/group/group_about.html +++ b/ietf/templates/group/group_about.html @@ -14,6 +14,7 @@ {% endblock %} {% block pagehead %} + {% endblock %} {% block group_content %} {% origin %} diff --git a/ietf/templates/group/group_entry_with_charter.txt b/ietf/templates/group/group_entry_with_charter.txt index cfce907fbc..50a40a9afd 100644 --- a/ietf/templates/group/group_entry_with_charter.txt +++ b/ietf/templates/group/group_entry_with_charter.txt @@ -37,12 +37,12 @@ Goals and Milestones: {% for milestone in group.milestones %} {% if milestone.resolved %}{{ milestone.resolved }} {% else %}{{ milestone.due|date:"M Y" }}{% endif %} - {{ milestone.desc }} {% endfor %} Internet-Drafts: -{% for alias in group.drafts %} - {{ alias.document.title }} [{{ alias.name }}-{{ alias.document.rev }}] ({{ alias.document.pages }} pages) +{% for document in group.drafts %} - {{ document.title }} [{{ document.name }}-{{ document.rev }}] ({{ document.pages }} pages) {% endfor %} {% if group.rfcs %}Requests for Comments: -{% for alias in group.rfcs %} {{ alias.name.upper }}: {{ alias.document.title}} ({{ alias.document.pages }} pages){% for r in alias.rel %} - * {{ r.action }} {{ r.target.name|upper }}{% endfor %}{% for r in alias.invrel %} - * {% if r.relationsship == "obs" %}{{ r.inverse_action|upper }}{% else %}{{ r.action }}{% endif %} {{ r.source.canonical_name|upper }}{% endfor %} +{% for document in group.rfcs %} {{ document.name.upper }}: {{ document.title}} ({{ document.pages }} pages){% for r in document.rel %} + * {{ r.action }} {{ r.target.name|upper }}{% endfor %}{% for r in document.invrel %} + * {% if r.relationsship == "obs" %}{{ r.inverse_action|upper }}{% else %}{{ r.action }}{% endif %} {{ r.source.name|upper }}{% endfor %} {% endfor %} {% else %}No Requests for Comments{% endif %} {% endautoescape %} diff --git a/ietf/templates/group/meetings-row.html b/ietf/templates/group/meetings-row.html index 487c8f7e1b..65ba435baa 100644 --- a/ietf/templates/group/meetings-row.html +++ b/ietf/templates/group/meetings-row.html @@ -1,7 +1,6 @@ {% load origin tz %} {% origin %} {% for s in sessions %} - {% timezone s.meeting.time_zone %} {% if s.meeting.type.slug == 'ietf' %} @@ -12,9 +11,16 @@ {% if s.current_status == "sched" %} - {{ s.time|date:"Y-m-d" }} + {% with timeslot=s.official_timeslotassignment.timeslot %} + + {% endwith %} {% else %} - {{ s.current_status_name }} +
    {{ s.current_status_name }}
    + {% if s.current_status == "canceled" %} + {% with timeslot=s.official_timeslotassignment.timeslot %} + + {% endwith %} + {% endif %} {% endif %} {% if show_request and s.meeting.type_id == 'ietf' %} {% if can_edit %} @@ -28,13 +34,9 @@ {% if s.name %}{{ s.name }}{% endif %} - - {% if s.current_status == "sched" %}{{ s.time|date:"D" }}{% endif %} - {% if show_ical and s.current_status == "sched" %} {% if s.meeting.type_id == 'ietf' %} - {{ s.time|date:"H:i" }} - {% endtimezone %} {% endfor %} \ No newline at end of file diff --git a/ietf/templates/group/meetings.html b/ietf/templates/group/meetings.html index eddf374de6..19f39d6d99 100644 --- a/ietf/templates/group/meetings.html +++ b/ietf/templates/group/meetings.html @@ -1,6 +1,5 @@ {% extends "group/group_base.html" %} -{# Copyright The IETF Trust 2015-2022, All Rights Reserved #} -{% load origin %} +{% load origin static %} {% block title %} Meetings {% if group %}for {{ group.acronym }}{% endif %} @@ -19,15 +18,15 @@ {% endblock %} {% block group_content %} {% origin %} + {% include "meeting/tz-display.html" with meeting_timezone=None id_suffix="" minimal=False only %} {% if in_progress %} -

    Meetings in progress

    +

    Meetings in progress

    {% with sessions=in_progress show_request=True show_ical=True can_edit_materials=can_edit %} - - - + + @@ -39,7 +38,7 @@

    Meetings in progress

    {% endwith %} {% endif %} {% if future %} -

    +

    Future Meetings

    MeetingDateMeetingDate Materials
    - - - + + @@ -66,13 +64,12 @@

    MeetingDateMeetingDate Materials
    {% endif %} {% if past or recent %} -

    Past Meetings (within the last four years)

    +

    Past Meetings (within the last four years)

    - - - + + @@ -100,13 +97,12 @@

    Past Meetings (within the last four years)

    older_sessions value, this block will need to be adjusted. {% endcomment %} {% if far_past %} -

    Meetings more than four years ago

    +

    Meetings more than four years ago

    MeetingDateMeetingDate Materials
    - - - + + @@ -135,6 +131,10 @@

    Meetings more than four years ago

    MeetingDateMeetingDate Materials
    {% if not s.canceled %} + + Agenda + Minutes @@ -156,3 +156,16 @@

    Meetings more than four years ago

    {% endif %} {% endif %} {% endblock %} +{% block js %} + + + + + +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/group/milestones.html b/ietf/templates/group/milestones.html index 2aac1fed91..1f259743fe 100644 --- a/ietf/templates/group/milestones.html +++ b/ietf/templates/group/milestones.html @@ -7,7 +7,7 @@ {% if heading %}

    {% if milestoneset.grouper %} - {{ milestoneset.grouper }} milestones + {{ milestoneset.grouper|title }} milestones {% else %} {% if group.state_id == "proposed" %} Proposed milestones @@ -20,15 +20,15 @@

    - - - + + @@ -36,7 +36,7 @@

    - + @@ -79,7 +79,7 @@

    Unassigned and open re

    - + @@ -147,7 +147,7 @@

    Closed review requests and assignme

    - + @@ -211,7 +211,7 @@

    Closed review requests and assignme

    - + diff --git a/ietf/templates/group/reviewer_overview.html b/ietf/templates/group/reviewer_overview.html index b4b1b6e3d7..75bd15f1d3 100644 --- a/ietf/templates/group/reviewer_overview.html +++ b/ietf/templates/group/reviewer_overview.html @@ -98,7 +98,7 @@

    Reviewers

    {{ deadline|date|split:"-"|join:"-" }}
    - {{ state.name }} + {{ state.name|badgeify }}
    {% if assignment_to_closure_days != None %} diff --git a/ietf/templates/help/states.html b/ietf/templates/help/states.html index a43bc3a9f5..ccc052647c 100644 --- a/ietf/templates/help/states.html +++ b/ietf/templates/help/states.html @@ -1,7 +1,6 @@ {% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin static ietf_filters textfilters %} -%} {% block pagehead %} {% endblock %} diff --git a/ietf/templates/idindex/.gitignore b/ietf/templates/idindex/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/idindex/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/iesg/.gitignore b/ietf/templates/iesg/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/iesg/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/iesg/agenda_conflict_doc.html b/ietf/templates/iesg/agenda_conflict_doc.html index ceb84199cf..316dd8e2cc 100644 --- a/ietf/templates/iesg/agenda_conflict_doc.html +++ b/ietf/templates/iesg/agenda_conflict_doc.html @@ -1,7 +1,7 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin %} {% origin %} -{% load ietf_filters ballot_icon person_filters %} +{% load ietf_filters ballot_icon person_filters textfilters %}
    {% ballot_icon doc %}
    @@ -11,7 +11,7 @@
    @@ -27,7 +27,7 @@ {% if conflictdoc.note %}
    Note
    -
    {{ conflictdoc.note|linebreaksbr }}
    +
    {{ conflictdoc.note|urlize_ietf_docs|linkify|linebreaksbr }}
    {% endif %}
    diff --git a/ietf/templates/iesg/agenda_conflict_doc.txt b/ietf/templates/iesg/agenda_conflict_doc.txt index 4ff2e3b00c..e4fbcc32b3 100644 --- a/ietf/templates/iesg/agenda_conflict_doc.txt +++ b/ietf/templates/iesg/agenda_conflict_doc.txt @@ -1,8 +1,7 @@ {% load ietf_filters %}{% with doc.conflictdoc as conflictdoc %} - o {{ doc.canonical_name }}-{{ doc.rev }} + o {{ doc.name }}-{{ doc.rev }} {% filter wordwrap:"68"|indent|indent %}{{ doc.title }}{% endfilter %} - {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }} + {{ conflictdoc.name }}-{{ conflictdoc.rev }} {% filter wordwrap:"66"|indent:"4" %}{{ conflictdoc.title }} ({{ conflictdoc.stream }}: {{ conflictdoc.intended_std_level }}){% endfilter %} -{% if conflictdoc.note %}{# note: note is not escaped #} {% filter wordwrap:"64"|indent:"6" %}Note: {{ conflictdoc.note|striptags }}{% endfilter %} -{% endif %} Token: {{ doc.ad }} + Token: {{ doc.ad }} {% with doc.active_defer_event as defer %}{% if defer %} Was deferred by {{defer.by}} on {{defer.time|date:"Y-m-d"}}{% endif %}{% endwith %}{% endwith %} diff --git a/ietf/templates/iesg/agenda_doc.html b/ietf/templates/iesg/agenda_doc.html index 16b223186c..ae78d96d60 100644 --- a/ietf/templates/iesg/agenda_doc.html +++ b/ietf/templates/iesg/agenda_doc.html @@ -19,9 +19,9 @@ {% with doc.rfc_number as rfc_number %} {% endwith %} - {{ doc.canonical_name }} + {{ doc.name }} {% if doc.has_rfc_editor_note %} - + (Has RFC Editor Note) {% endif %} diff --git a/ietf/templates/iesg/agenda_doc.txt b/ietf/templates/iesg/agenda_doc.txt index 247d456a5a..015af32409 100644 --- a/ietf/templates/iesg/agenda_doc.txt +++ b/ietf/templates/iesg/agenda_doc.txt @@ -1,8 +1,7 @@ {% load ietf_filters %}{% with doc.rfc_number as rfc_number %} - o {{doc.canonical_name}}{% if not rfc_number %}-{{doc.rev}}{% endif %}{% endwith %}{%if doc.has_rfc_editor_note %} (Has RFC Editor Note){% endif %}{% if doc.stream %} - {{ doc.stream }} stream{% endif %} + o {{doc.name}}{% if not rfc_number %}-{{doc.rev}}{% endif %}{% endwith %}{%if doc.has_rfc_editor_note %} (Has RFC Editor Note){% endif %}{% if doc.stream %} - {{ doc.stream }} stream{% endif %} {% filter wordwrap:"68"|indent|indent %}{{ doc.title }} ({{ doc.intended_std_level }}){% endfilter %} -{% if doc.note %}{# note: note is not escaped #} {% filter wordwrap:"68"|indent|indent %}Note: {{ doc.note|striptags }}{% endfilter %} -{% endif %} Token: {{ doc.ad }}{% if doc.iana_review_state %} + Token: {{ doc.ad }}{% if doc.iana_review_state %} IANA Review: {{ doc.iana_review_state }}{% endif %}{% if doc.consensus %} Consensus: {{ doc.consensus }}{% endif %}{% if doc.lastcall_expires %} Last call expires: {{ doc.lastcall_expires|date:"Y-m-d" }}{% endif %}{% if doc.review_assignments %} diff --git a/ietf/templates/iesg/moderator_doc.html b/ietf/templates/iesg/moderator_doc.html index fb48b75be1..1a06ffa1d4 100644 --- a/ietf/templates/iesg/moderator_doc.html +++ b/ietf/templates/iesg/moderator_doc.html @@ -93,7 +93,7 @@

    If APPROVED with caveats - The Secretariat will send a working group submission, Protocol Action Announcement that includes the - [RFC Editor Note, IESG Note, etc.] to be drafted by [Name that + [RFC Editor Note, etc.] to be drafted by [Name that AD].

    {% endif %} @@ -103,7 +103,7 @@

    If APPROVED with caveats - The Secretariat will send an individual submission, Protocol Action Announcement that includes - the [RFC Editor Note, IESG Note, etc.] to be drafted by [Name that + the [RFC Editor Note, etc.] to be drafted by [Name that AD].

    {% endif %} @@ -113,7 +113,7 @@

    If APPROVED with caveats - The Secretariat will send the associated status change Protocol Action Announcements that includes the - [RFC Editor Note, IESG Note, etc.] to be drafted by [Name that + [RFC Editor Note, etc.] to be drafted by [Name that AD].

    {% endif %} @@ -123,7 +123,7 @@

    If APPROVED with caveats - The Secretariat will send a working group submission Document Action announcement that includes the [RFC - Ed. Note, IESG, note, etc.] from [Name that AD].

    + Ed. Note, etc.] from [Name that AD].

    {% endif %} {% if num|startswith:"3.2.1" or num|startswith:"3.2.2" %} @@ -132,7 +132,7 @@

    If APPROVED with caveats - The Secretariat will send an individual submission Document Action announcement that includes the - [RFC Ed. Note, IESG, note, etc.] from [Name that AD].

    + [RFC Ed. Note, etc.] from [Name that AD].

    {% endif %} {% if num|startswith:"3.3.1" or num|startswith:"3.3.2" %} @@ -141,13 +141,12 @@

    If APPROVED with caveats - The Secretariat will send the associated status change Document Action announcements that includes the [RFC - Ed. Note, IESG, note, etc.] from [Name that AD].

    + Ed. Note, etc.] from [Name that AD].

    {% endif %} {% if num|startswith:"3.4.1" or num|startswith:"3.4.2" %}

    If APPROVED - The Secretariat will send a standard no problem - message to the RFC Editor. [Name of AD] will you supply the text for - the IESG Note?

    + message to the RFC Editor.

    If APPROVED with caveats - The Secretariat will send a standard no problem message to the RFC Editor that includes the note drafted @@ -165,13 +164,13 @@ {% if downrefs %}

    If APPROVED - The Secretariat will add to the downref registry:
    {% for ref in downrefs %} - + Add {{ref.target.document.canonical_name}} - ({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}}) + + Add {{ref.target.name}} + ({{ref.target.std_level}} - {{ref.target.stream.desc}}) to downref registry.
    - {% if not ref.target.document.std_level %} + {% if not ref.target.std_level %} +++ Warning: The standards level has not been set yet!!!
    {% endif %} - {% if not ref.target.document.stream %} + {% if not ref.target.stream %} +++ Warning: document stream has not been set yet!!!
    {% endif %} {% endfor %}

    diff --git a/ietf/templates/iesg/moderator_package.html b/ietf/templates/iesg/moderator_package.html index 7b7fc9c449..6698486e00 100644 --- a/ietf/templates/iesg/moderator_package.html +++ b/ietf/templates/iesg/moderator_package.html @@ -96,9 +96,7 @@

    Are there narrative minutes to approve for today?

    - {% filter linebreaks_crlf %} -
    {{ section.text }}
    - {% endfilter %} + Draft minutes {% endif %} {% if num == "1.4" %} {% filter linebreaks_crlf %} diff --git a/ietf/templates/ipr/.gitignore b/ietf/templates/ipr/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/ipr/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/ipr/details_view.html b/ietf/templates/ipr/details_view.html index aa695aeee7..9ba63114ae 100644 --- a/ietf/templates/ipr/details_view.html +++ b/ietf/templates/ipr/details_view.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2015, 2017. All Rights Reserved. #} +{# Copyright The IETF Trust 2015-2023. All Rights Reserved. #} {% load origin %} {% load ietf_filters ipr_filters textfilters %} {% block title %}IPR Details - {{ ipr.title }}{% endblock %} @@ -103,6 +103,8 @@

    Updates

    IPR Disclosure ID #{{ item.source.id }}, {% if item.source.state.slug == "removed" %} "{{ item.source.title }}" (which was removed at the request of the submitter) + {% elif item.source.state.slug == "removed_objfalse" %} + "{{ item.source.title }}" (which was removed as objectively false) {% else %} "{{ item.source.title }}" {% endif %} @@ -122,6 +124,8 @@

    Updates

    IPR Disclosure ID #{{ item.target.id }}, {% if item.target.state.slug == "removed" %} "{{ item.target.title }}" (which was removed at the request of the submitter) + {% elif item.source.state.slug == "removed_objfalse" %} + "{{ item.source.title }}" (which was removed as objectively false) {% elif item.target.state.slug == "rejected" %} "{{ item.target.title }}" (which was rejected) {% elif item.target.state.slug == "parked" %} @@ -379,7 +383,8 @@

    {{ iprdocrel.doc_type }}:
    - {{ iprdocrel.formatted_name|urlize_ietf_docs }} ("{{ iprdocrel.document.document.title }}") + {{ iprdocrel.formatted_name|urlize_ietf_docs }} + {% if iprdocrel.document.title %}("{{ iprdocrel.document.title }}"){% endif %}
    {% if iprdocrel.revisions %}
    @@ -388,6 +393,13 @@

    {{ iprdocrel.revisions }}
    + {% elif iprdocrel.doc_type == "Internet-Draft" %} +
    + Notice: +
    +
    + {{ iprdocrel|no_revisions_message }} +
    {% endif %} {% if iprdocrel.sections %}
    @@ -418,7 +430,8 @@

    {{ iprdocrel.doc_type }}:

    - {{ iprdocrel.formatted_name|urlize_ietf_docs }} ("{{ iprdocrel.document.document.title }}") + {{ iprdocrel.formatted_name|urlize_ietf_docs }} + {% if iprdocrel.document.title %}("{{ iprdocrel.document.title }}"){% endif %}
    {% if iprdocrel.revisions %}
    @@ -427,6 +440,13 @@

    {{ iprdocrel.revisions }}
    + {% elif iprdocrel.doc_type == "Internet-Draft" %} +
    + Notice: +
    +
    + {{ iprdocrel|no_revisions_message }} +
    {% endif %} {% if iprdocrel.sections %}
    diff --git a/ietf/templates/ipr/removed.html b/ietf/templates/ipr/removed.html index 775819df62..96bf6ab899 100644 --- a/ietf/templates/ipr/removed.html +++ b/ietf/templates/ipr/removed.html @@ -1,11 +1,15 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} {% load origin %} {% block title %}{{ ipr.title }}{% endblock %} {% block content %} {% origin %}

    {{ ipr.title }}

    - This IPR disclosure was removed at the submitter's request. + {% if ipr.state.slug == "removed" %} + This IPR disclosure was removed at the submitter's request. + {% elif ipr.state.slug == "removed_objfalse" %} + This IPR disclosure was removed as objectively false. + {% endif %}

    {% endblock %} \ No newline at end of file diff --git a/ietf/templates/ipr/search_doc_list.html b/ietf/templates/ipr/search_doc_list.html index f67f1e4725..e67f67fecd 100644 --- a/ietf/templates/ipr/search_doc_list.html +++ b/ietf/templates/ipr/search_doc_list.html @@ -13,9 +13,9 @@

    Please select one of following I-Ds:

    diff --git a/ietf/templates/ipr/search_doc_result.html b/ietf/templates/ipr/search_doc_result.html index ff16524739..dc7d8b95b5 100644 --- a/ietf/templates/ipr/search_doc_result.html +++ b/ietf/templates/ipr/search_doc_result.html @@ -28,7 +28,7 @@

    - @@ -57,8 +57,8 @@ {% for doc in docs %} - @@ -70,7 +70,7 @@ - diff --git a/ietf/templates/ipr/search_doctitle_result.html b/ietf/templates/ipr/search_doctitle_result.html index 7adbc9e9d5..57fa17e912 100644 --- a/ietf/templates/ipr/search_doctitle_result.html +++ b/ietf/templates/ipr/search_doctitle_result.html @@ -24,20 +24,20 @@ - {% for alias in docs %} + {% for doc in docs %} - - {% if alias.document.ipr %} - {% for ipr in alias.document.ipr %} + {% if doc.ipr %} + {% for ipr in doc.ipr %} @@ -58,7 +58,7 @@ - + {% endif %} diff --git a/ietf/templates/ipr/search_result.html b/ietf/templates/ipr/search_result.html index 450ede9513..449a6f7f8b 100644 --- a/ietf/templates/ipr/search_result.html +++ b/ietf/templates/ipr/search_result.html @@ -43,7 +43,7 @@

    {% endifchanged %} {% endif %}

    - + - {% for alias in docs %} + {% for doc in docs %} - + - {% if alias.document.ipr %} - {% for ipr in alias.document.ipr %} + {% if doc.ipr %} + {% for ipr in doc.ipr %} @@ -57,7 +57,7 @@ {% endif %} diff --git a/ietf/templates/liaisons/.gitignore b/ietf/templates/liaisons/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/liaisons/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/mailinglists/.gitignore b/ietf/templates/mailinglists/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/mailinglists/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/meeting/.gitignore b/ietf/templates/meeting/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/meeting/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/meeting/activity_report.html b/ietf/templates/meeting/activity_report.html index 1552bb4682..0de8b88c65 100644 --- a/ietf/templates/meeting/activity_report.html +++ b/ietf/templates/meeting/activity_report.html @@ -45,7 +45,7 @@

    {{ rfcs.count }} RFCs published this period

    {% for rfc in rfcs %}
    + {% if group.uses_milestone_dates %} Date {% else %} Order {% endif %} MilestoneAssociated documentsMilestoneAssociated documents
    {% if milestone.resolved %} - {{ milestone.resolved }} + {{ milestone.resolved|title }} {% else %} {% if group.uses_milestone_dates %} {{ milestone.due|date:"M Y" }} diff --git a/ietf/templates/group/review_requests.html b/ietf/templates/group/review_requests.html index 5aea5b3902..61b93de2b6 100644 --- a/ietf/templates/group/review_requests.html +++ b/ietf/templates/group/review_requests.html @@ -29,7 +29,7 @@

    Unassigned and open re

    Unassigned review requests
    Open review requests
    Closed review requests
    Closed review assignments
    {{ ipr.time|date:"Y-m-d" }} {{ ipr.id }}{{ ipr.title }}{% if ipr.state_id == 'removed' %}Removed{% endif %} + {{ ipr.title }}{% if ipr.state_id == 'removed' or ipr.state_id == 'removed_objfalse' %}Removed{% endif %} {% if ipr.updates %}
    (Updates ID#: {% for upd in ipr.updates %}{{upd.target_id}}{% if not forloop.last %}, {% endif %}{% endfor %}){% endif %}
    - Results for {{ doc.name|prettystdname|urlize_ietf_docs }} ("{{ doc.document.title }}"){% if not forloop.first %}{% if doc.related %}, which was {{ doc.relation|lower }} {{ doc.related.source|prettystdname|urlize_ietf_docs }} ("{{ doc.related.source.title }}"){% endif %}{% endif %} + + Results for {{ doc.name|prettystdname|urlize_ietf_docs }} ("{{ doc.title }}"){% if not forloop.first %}{% if doc.related %}, which was {{ doc.relation|lower }} {{ doc.related.source|prettystdname|urlize_ietf_docs }} ("{{ doc.related.source.title }}"){% endif %}{% endif %}
    {{ ipr.disclosure.time|date:"Y-m-d" }} {{ ipr.disclosure.id }}{{ ipr.disclosure.title }}{% if ipr.disclosure.state_id == 'removed' %} (Removed) {% endif %} + {{ ipr.disclosure.title }}{% if ipr.disclosure.state_id == 'removed' or ipr.disclosure.state_id == 'removed_objfalse' %} (Removed) {% endif %} {% if ipr.disclosure.updates %}
    (Updates ID#: {% for upd in ipr.disclosure.updates %}{{upd.target_id}}{% if not forloop.last %}, {% endif %}{% endfor %}){% endif %}
    Statement
    - IPR that is related to {{ alias.name|prettystdname:""|urlize_ietf_docs }} ("{{ alias.document.title }}") - {% if alias.related %} - that was {{ alias.relation|lower }} {{ alias.related.source.name|prettystdname:""|urlize_ietf_docs }} ("{{ alias.related.source.title }}") + + IPR that is related to {{ doc.name|prettystdname:""|urlize_ietf_docs }} ("{{ doc.title }}") + {% if doc.related %} + that was {{ doc.relation|lower }} {{ doc.related.source.name|prettystdname:""|urlize_ietf_docs }} ("{{ doc.related.source.title }}") {% endif %}
    {{ ipr.disclosure.time|date:"Y-m-d" }} {{ ipr.disclosure.id }}
    No IPR disclosures related to {{ alias.name|prettystdname|urlize_ietf_docs }} have been submitted.No IPR disclosures related to {{ doc.name|prettystdname|urlize_ietf_docs }} have been submitted.
    {% block intro_prefix %}IPR that was submitted by "{{ q }}" and{% endblock %} {% block related %} @@ -54,7 +54,7 @@

    is related to {% for item in iprdocrels %} {% if forloop.last and forloop.counter > 1 %}and{% endif %} - {{ item.formatted_name|urlize_ietf_docs }} ("{{ item.document.document.title }}"){% if not forloop.last and forloop.counter > 1 %},{% endif %} + {{ item.formatted_name|urlize_ietf_docs }}{% if item.document.title %} ("{{ item.document.title }}"){% endif %}{% if not forloop.last and forloop.counter > 1 %},{% endif %} {% endfor %} {% endif %} {% endwith %} diff --git a/ietf/templates/ipr/search_wg_result.html b/ietf/templates/ipr/search_wg_result.html index 6912e88138..1561e05ba3 100644 --- a/ietf/templates/ipr/search_wg_result.html +++ b/ietf/templates/ipr/search_wg_result.html @@ -20,22 +20,22 @@

    Statement
    - IPR related to {{ alias.name|prettystdname|urlize_ietf_docs }} ("{{ alias.document.title }}") - {% if alias.related %} - that was {{ alias.relation|lower }} {{ alias.related.source|prettystdname|urlize_ietf_docs }} ("{{ alias.related.source.title|escape }}") + IPR related to {{ doc.name|prettystdname|urlize_ietf_docs }} ("{{ doc.title }}") + {% if doc.related %} + that was {{ doc.relation|lower }} {{ doc.related.source|prettystdname|urlize_ietf_docs }} ("{{ doc.related.source.title|escape }}") {% endif %} - {% if alias.product_of_this_wg %}, a product of the {{ q }} WG{% endif %} + {% if doc.product_of_this_wg %}, a product of the {{ q }} WG{% endif %} :
    {{ ipr.disclosure.time|date:"Y-m-d" }} {{ ipr.disclosure.id }} - No IPR disclosures related to {{ alias.name|prettystdname|urlize_ietf_docs }} have been submitted. + No IPR disclosures related to {{ doc.name|prettystdname|urlize_ietf_docs }} have been submitted.
    - {{ rfc.doc.canonical_name|prettystdname }} + {{ rfc.doc.name|prettystdname }} {{ rfc.doc.intended_std_level.name }} diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index a4eab654bf..f3228aa5ad 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -89,6 +89,12 @@ right: 0; z-index: 1000000000; } + +.theme-dark #app-loading-footer .btn-light { + background-color: rgba(255,255,255,.1) !important; + border-color: rgba(255,255,255,.05) !important; + color: #FFF !important; +} {% endblock %} {% block content %} {% origin %} diff --git a/ietf/templates/meeting/group_materials.html b/ietf/templates/meeting/group_materials.html index 52e77d83af..aea20827db 100644 --- a/ietf/templates/meeting/group_materials.html +++ b/ietf/templates/meeting/group_materials.html @@ -76,8 +76,8 @@ {% endif %} - - {{ draft.material.canonical_name }} + + {{ draft.material.name }}
    {% empty %} diff --git a/ietf/templates/meeting/group_proceedings.html b/ietf/templates/meeting/group_proceedings.html index 92fe04675a..618c28164c 100644 --- a/ietf/templates/meeting/group_proceedings.html +++ b/ietf/templates/meeting/group_proceedings.html @@ -77,8 +77,8 @@

    {{ entry.group }}

    {# drafts #}
    {% for draft in entry.drafts %} - - {{ draft.material.canonical_name }} + + {{ draft.material.name }}
    {% empty %} diff --git a/ietf/templates/meeting/important-dates.html b/ietf/templates/meeting/important-dates.html index 1d786ebc88..1d41b4a7f0 100644 --- a/ietf/templates/meeting/important-dates.html +++ b/ietf/templates/meeting/important-dates.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {# Copyright The IETF Trust 2017, All Rights Reserved #} {% load origin %} -{% load ietf_filters static textfilters ietf_filters %} +{% load ietf_filters static textfilters htmlfilters %} {% block pagehead %} {% endblock %} @@ -45,30 +45,7 @@

    {% endif %}

    - {{ d.name.desc|urlize_ietf_docs|linkify }}{% if d.name.desc|slice:"-1:" != "." %}.{% endif %} - {% if first and d.name.slug == 'openreg' or first and d.name.slug == 'earlybird' %} - Register here. - {% endif %} - {% if d.name.slug == 'opensched' %} - To request a Working Group session, use the - IETF Meeting Session Request Tool. - If you are working on a BOF request, it is highly recommended - to tell the IESG now by sending an email to - iesg@ietf.org - to get advance help with the request. - {% endif %} - {% if d.name.slug == 'cutoffwgreq' %} - To request a Working Group session, use the - IETF Meeting Session Request Tool. - {% endif %} - {% if d.name.slug == 'cutoffbofreq' %} - To request a BOF, please see instructions on - Requesting a BOF. - {% endif %} - {% if d.name.slug == 'idcutoff' %} - Upload using the - I-D Submission Tool. - {% endif %} + {{ d.name.desc|urlize_ietf_docs|markdown|linkify }}{% if d.name.desc|slice:"-1:" != "." %}.{% endif %} {% if d.name.slug == 'draftwgagenda' or d.name.slug == 'revwgagenda' or d.name.slug == 'procsub' or d.name.slug == 'revslug' %} Upload using the Meeting Materials Management Tool. diff --git a/ietf/templates/meeting/interim_request.html b/ietf/templates/meeting/interim_request.html index 977eaad3ff..995a612b5a 100644 --- a/ietf/templates/meeting/interim_request.html +++ b/ietf/templates/meeting/interim_request.html @@ -24,8 +24,8 @@

    Interim Meeting Request

    {% endif %} {% bootstrap_field form.meeting_type layout='horizontal' %} - {% bootstrap_field form.city layout='horizontal' %} - {% bootstrap_field form.country layout='horizontal' %} + {% bootstrap_field form.city layout='horizontal' wrapper_class='location mb-3' %} + {% bootstrap_field form.country layout='horizontal' wrapper_class='location mb-3' %} {% bootstrap_field form.time_zone layout='horizontal' %} {{ formset.management_form }} {% if formset.non_form_errors %}
    {{ formset.non_form_errors }}
    {% endif %} diff --git a/ietf/templates/meeting/interim_send_announcement.html b/ietf/templates/meeting/interim_send_announcement.html index fa05c72346..d54229200a 100644 --- a/ietf/templates/meeting/interim_send_announcement.html +++ b/ietf/templates/meeting/interim_send_announcement.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{# Copyright The IETF Trust 2015, All Rights Reserved #} +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} {% load origin %} {% load static django_bootstrap5 widget_tweaks %} {% block title %}Announce Interim Meeting{% endblock %} @@ -11,26 +11,7 @@

    Announce Interim Meeting

    {% csrf_token %} -
    - -
    {% render_field form.to class="form-control" readonly="readonly" %}
    -
    -
    - -
    {% render_field form.cc class="form-control" %}
    -
    -
    - -
    {% render_field form.frm class="form-control" readonly="readonly" %}
    -
    -
    - -
    {% render_field form.subject class="form-control" readonly="readonly" %}
    -
    -
    - -
    {% render_field form.body class="form-control" %}
    -
    + {% bootstrap_form form layout="horizontal" %} diff --git a/ietf/templates/meeting/proceedings_attendees.html b/ietf/templates/meeting/proceedings_attendees.html index a3a10e61d4..6c51a4546e 100644 --- a/ietf/templates/meeting/proceedings_attendees.html +++ b/ietf/templates/meeting/proceedings_attendees.html @@ -14,7 +14,33 @@

    Attendee list of IETF {{ meeting.number }} meeting

    - {{ template|safe }} + + {% if template %} + {{template|safe}} + {% else %} + + + + + + + + + + + + {% for reg in meeting_registrations %} + + + + + + + + {% endfor %} + +
    Last NameFirst NameOrganizationCountryRegistration Type
    {{ reg.last_name }}{{ reg.first_name }}{{ reg.affiliation }}{{ reg.country_code }}{{ reg.reg_type }}
    + {% endif %} {% endblock %} {% block js %} diff --git a/ietf/templates/meeting/proceedings_attendees_table.html b/ietf/templates/meeting/proceedings_attendees_table.html deleted file mode 100644 index 9ac1fda2ac..0000000000 --- a/ietf/templates/meeting/proceedings_attendees_table.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - {% for attendee in attendees %} - - - - - - - {% endfor %} - -
    Last nameFirst nameOrganizationCountry
    {{ attendee.LastName }}{{ attendee.FirstName }}{{ attendee.Company }}{{ attendee.Country }}
    \ No newline at end of file diff --git a/ietf/templates/meeting/session_details.html b/ietf/templates/meeting/session_details.html index 7648f0b355..571715b4b4 100644 --- a/ietf/templates/meeting/session_details.html +++ b/ietf/templates/meeting/session_details.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} {% load origin ietf_filters static %} -{% block title %}{{ meeting }} : {{ acronym }}{% endblock %} +{% block title %}{{ meeting }} : {{ group.acronym }}{% endblock %} {% block morecss %} .drag-handle { cursor: move; @@ -12,13 +12,13 @@

    {{ meeting }}
    - {{ acronym }} + {{ group.acronym }}: {{ group.name }}

    {% if meeting.start_datetime >= thisweek %} + title="icalendar entry for {{ group.acronym }}@{{ meeting.number }}" + aria-label="icalendar entry for {{ group.acronym }}@{{ meeting.number }}" + href="{% url 'ietf.meeting.views.agenda_ical' num=meeting.number acronym=group.acronym %}"> {% endif %} @@ -57,6 +57,17 @@

    {% endif %} {% endblock %} {% block js %} + + + + + {% if can_manage_materials %} {% endblock %} \ No newline at end of file diff --git a/ietf/templates/minimal.html b/ietf/templates/minimal.html new file mode 100644 index 0000000000..87f661f501 --- /dev/null +++ b/ietf/templates/minimal.html @@ -0,0 +1,21 @@ +{# Copyright The IETF Trust 2015-2023, All Rights Reserved #} + +{% load static %} +{% load origin %} +{% origin %} + + + + + {{ title }} + + + + + {# load this in the head, to prevent flickering #} + + + + {{ content }} + + \ No newline at end of file diff --git a/ietf/templates/nomcom/announcements.html b/ietf/templates/nomcom/announcements.html index aa67fbb68e..771f2b4fb0 100644 --- a/ietf/templates/nomcom/announcements.html +++ b/ietf/templates/nomcom/announcements.html @@ -15,7 +15,7 @@

    NomCom

    {% for regime in regimes %}

    - Messages from {{ regime.group.start_year }}/{{ regime.group.end_year }} + Messages from {{ regime.group.start_year }} NomCom

    {# use person email address here rather than the generic nomcom-chair@ietf.org #}

    @@ -56,9 +56,14 @@

    References

  • - IAB, IESG, IETF Trust, and IETF LLC Selection, Confirmation, and Recall Process: Operation of the IETF Nominating and Recall Committees (RFC 8713) (Also BCP10) + IAB, IESG, IETF Trust, and IETF LLC Selection, Confirmation, and Recall Process: Operation of the IETF Nominating and Recall Committees (RFC 8713)
  • +
  • + + Nominating Committee Eligibility (RFC 9389) + +
  • Publicly Verifiable Nominations Committee (NomCom) Random Selection (RFC 3797) diff --git a/ietf/templates/nomcom/download_questionnaire.txt b/ietf/templates/nomcom/download_questionnaire.txt new file mode 100644 index 0000000000..71514095c8 --- /dev/null +++ b/ietf/templates/nomcom/download_questionnaire.txt @@ -0,0 +1,9 @@ +{# Copyright The IETF Trust 2023, All Rights Reserved #}{% autoescape off %}{% load nomcom_tags %}Questionnaire response from {{ nominee.person.name }} + +From: {{ feedback.author|formatted_email|default:"Anonymous" }} +Date: {{ feedback.time|date:"Y-m-d" }} +Positions: {{ positions }}{% if feedback.subject %} +Subject: {{ feedback.subject }}{% endif %} + +{% decrypt feedback.comments request year 1 %} +{% endautoescape %} \ No newline at end of file diff --git a/ietf/templates/nomcom/eligible.html b/ietf/templates/nomcom/eligible.html index fcf06e6e51..f5cfc2e2dc 100644 --- a/ietf/templates/nomcom/eligible.html +++ b/ietf/templates/nomcom/eligible.html @@ -4,9 +4,6 @@ {% load django_bootstrap5 textfilters person_filters %} {% load static %} {% block subtitle %}- Eligible People{% endblock %} -{% block pagehead %} - -{% endblock %} {% block nomcom_content %} {% origin %}

    Eligible People for {{ nomcom.group }}

    @@ -41,7 +38,4 @@

    Eligible People for {{ nomcom.group }}

    {% endif %}
  • } -{% endblock %} -{% block js %} - {% endblock %} \ No newline at end of file diff --git a/ietf/templates/nomcom/feedback.html b/ietf/templates/nomcom/feedback.html index 4ef18fc5fd..effacdf67a 100644 --- a/ietf/templates/nomcom/feedback.html +++ b/ietf/templates/nomcom/feedback.html @@ -36,13 +36,13 @@

    {% endif %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/nomcom/history.html b/ietf/templates/nomcom/history.html index 09cdeae98c..8262876b11 100644 --- a/ietf/templates/nomcom/history.html +++ b/ietf/templates/nomcom/history.html @@ -11,7 +11,7 @@

    NomCom Membership History

    Note: The data for concluded NomComs is occasionally incorrect.

    {% for regime in regimes %} -

    {{ regime.label }}

    +

    {{ regime.year }} NomCom

    {% for slug, label, roles in regime.nomcom.personnel %}
    @@ -25,7 +25,7 @@

    {{ regime.label }}

    {% endfor %}
    {% endfor %} -

    2012/2013

    +

    2012 NomCom

    Chair @@ -64,7 +64,7 @@

    2012/2013

    Rudi Vansnick (ISOC Liaison)
    -

    2011/2012

    +

    2011 NomCom

    Chair @@ -104,7 +104,7 @@

    2011/2012

    Jason Livingood (ISOC Liaison)
    -

    2010/2011

    +

    2010 NomCom

    Chair @@ -143,7 +143,7 @@

    2010/2011

    Eric Burger (ISOC Liaison)
    -

    2009/2010

    +

    2009 NomCom

    Chair @@ -184,7 +184,7 @@

    2009/2010

    - 2008/2009 + 2008 NomCom

    @@ -224,7 +224,7 @@

    - 2007/2008 + 2007 NomCom

    @@ -264,7 +264,7 @@

    - 2006/2007 + 2006 NomCom

    @@ -304,7 +304,7 @@

    - 2005/2006 + 2005 NomCom

    @@ -344,7 +344,7 @@

    - 2004/2005 + 2004 NomCom

    @@ -385,7 +385,7 @@

    - 2003/2004 + 2003 NomCom

    @@ -424,7 +424,7 @@

    - 2002/2003 + 2002 NomCom

    @@ -463,7 +463,7 @@

    - 2001/2002 + 2001 NomCom

    @@ -502,7 +502,7 @@

    - 2000/2001 + 2000 NomCom

    @@ -541,7 +541,7 @@

    - 1999/2000 + 1999 NomCom

    @@ -580,7 +580,7 @@

    - 1998/1999 + 1998 NomCom

    @@ -620,7 +620,7 @@

    - 1997/1998 + 1997 NomCom

    @@ -659,7 +659,7 @@

    - 1996/1997 + 1996 NomCom

    @@ -700,7 +700,7 @@

    - 1995/1996 + 1995 NomCom

    @@ -739,7 +739,7 @@

    - 1994/1995 + 1994 NomCom

    @@ -771,7 +771,7 @@

    - 1993/1994 + 1993 NomCom

    @@ -802,7 +802,7 @@

    - 1992/1993 + 1992 NomCom

    diff --git a/ietf/templates/nomcom/index.html b/ietf/templates/nomcom/index.html index 91f63f74eb..e765dd7c2e 100644 --- a/ietf/templates/nomcom/index.html +++ b/ietf/templates/nomcom/index.html @@ -12,7 +12,7 @@

    NomComs

    - + diff --git a/ietf/templates/nomcom/list_positions.html b/ietf/templates/nomcom/list_positions.html index 476dce967f..59e549fc3d 100644 --- a/ietf/templates/nomcom/list_positions.html +++ b/ietf/templates/nomcom/list_positions.html @@ -24,23 +24,24 @@

    Positions in {{ nomcom.group }}

    {% if nomcom.group.state_id == 'active' %} - + {% endif %} - - - - @@ -58,13 +59,11 @@

    Positions in {{ nomcom.group }}

    aria-label="position.name" name="selected"> - - - - - - @@ -117,7 +116,7 @@

    Positions in {{ nomcom.group }}

    -
    YearYear Convened Chair
    - + + ✓ Position + IESG + Open + Accepting Nominations + Accepting Feedback
    + Edit - Remove @@ -74,16 +73,16 @@

    Positions in {{ nomcom.group }}

    {{ position.name }} + {{ position.is_iesg_position|yesno:"✓," }} + {{ position.is_open|yesno:"✓," }} + {{ position.accepting_nominations|yesno:"✓," }} + {{ position.accepting_feedback|yesno:"✓," }}
    - + diff --git a/ietf/templates/nomcom/view_feedback.html b/ietf/templates/nomcom/view_feedback.html index 7506c35042..93d61b7f42 100644 --- a/ietf/templates/nomcom/view_feedback.html +++ b/ietf/templates/nomcom/view_feedback.html @@ -3,9 +3,6 @@ {% load origin static %} {% load nomcom_tags %} {% block subtitle %}- View feedback{% endblock %} -{% block pagehead %} - -{% endblock %} {% block nomcom_content %} {% origin %}

    Feedback related to nominees

    @@ -113,7 +110,4 @@

    Feedback not related to Nominees

    {% endif %} -{% endblock %} -{% block js %} - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/ietf/templates/nomcom/view_feedback_nominee.html b/ietf/templates/nomcom/view_feedback_nominee.html index 0e8c043721..9194ee84bf 100644 --- a/ietf/templates/nomcom/view_feedback_nominee.html +++ b/ietf/templates/nomcom/view_feedback_nominee.html @@ -89,7 +89,12 @@

    Feedback about {{ nominee }}

    {% csrf_token %} -

    + {% endif %} +
    diff --git a/ietf/templates/nomcom/volunteers.html b/ietf/templates/nomcom/volunteers.html index 764a055b1b..008951c44e 100644 --- a/ietf/templates/nomcom/volunteers.html +++ b/ietf/templates/nomcom/volunteers.html @@ -1,12 +1,9 @@ {% extends public|yesno:"nomcom/nomcom_public_base.html,nomcom/nomcom_private_base.html" %} {# Copyright The IETF Trust 2021, All Rights Reserved #} {% load origin %} -{% load django_bootstrap5 textfilters person_filters %} +{% load django_bootstrap5 textfilters person_filters ietf_filters%} {% load static %} {% block subtitle %}- Volunteers{% endblock %} -{% block pagehead %} - -{% endblock %} {% block nomcom_content %} {% origin %}

    Volunteers for {{ nomcom.group }}

    @@ -34,7 +31,7 @@

    {{ eligibility_group.grouper|yesno:"Eligible, Not Eligible" }}< {% for v in eligibility_group.list %} {{ forloop.counter }} - {{ v.person.last_name }} + {{ v.person.last_name|split:'+'|join:'+' }} {{ v.person.first_name }} {{ v.person.ascii_name }} {% person_link v.person %} @@ -46,7 +43,4 @@

    {{ eligibility_group.grouper|yesno:"Eligible, Not Eligible" }}< {% endfor %} -{% endblock %} -{% block js %} - {% endblock %} \ No newline at end of file diff --git a/ietf/templates/person/profile.html b/ietf/templates/person/profile.html index e597ef4b52..42e5d2e43a 100644 --- a/ietf/templates/person/profile.html +++ b/ietf/templates/person/profile.html @@ -7,6 +7,7 @@ {% load group_filters %} {% block pagehead %} + {% endblock %} {% block title %}Profile for {{ persons.0 }}{% endblock %} {% block content %} @@ -108,10 +109,10 @@

    {{ doc.pub_date|date:"b Y"|title }} {{ doc.title|urlize_ietf_docs }} - {% with doc.referenced_by_rfcs.count as refbycount %} + {% with doc.referenced_by_rfcs_as_rfc_or_draft.count as refbycount %} {% if refbycount %} {{ refbycount }} RFC{{ refbycount|pluralize }} @@ -132,7 +133,7 @@

    @@ -148,7 +149,7 @@

    {% if not doc.replaced_by %}
  • - {{ doc.canonical_name }} + {{ doc.name }}
  • {% endif %} diff --git a/ietf/templates/registration/.gitignore b/ietf/templates/registration/.gitignore deleted file mode 100644 index a74b07aee4..0000000000 --- a/ietf/templates/registration/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.pyc diff --git a/ietf/templates/release/about.html b/ietf/templates/release/about.html index 23c2c9205c..85a74bb6d9 100644 --- a/ietf/templates/release/about.html +++ b/ietf/templates/release/about.html @@ -23,6 +23,7 @@

    About the IETF Datatracker

    moments. For the nitty-gritty week-to-week code changes, please check the release notes or the commit log.

    +

    Version 12.0.0: RFCs and Subseries as Document types

    Version 11.0.0: Django 4

    Version 10.0.0: Migration to PostgreSQL as the backend database engine

    Version 9.0.0: Timezone Aware Data

    diff --git a/ietf/templates/stats/document_stats.html b/ietf/templates/stats/document_stats.html index efd0dd3b6b..4e66bed37e 100644 --- a/ietf/templates/stats/document_stats.html +++ b/ietf/templates/stats/document_stats.html @@ -4,6 +4,7 @@ {% block title %}{{ stats_title }}{% endblock %} {% block pagehead %} + {% endblock %} {% block content %} {% origin %} diff --git a/ietf/templates/stats/meeting_stats.html b/ietf/templates/stats/meeting_stats.html index 5206159927..606caffde0 100644 --- a/ietf/templates/stats/meeting_stats.html +++ b/ietf/templates/stats/meeting_stats.html @@ -4,6 +4,7 @@ {% block title %}{{ stats_title }}{% endblock %} {% block pagehead %} + {% endblock %} {% block content %} {% origin %} diff --git a/ietf/templates/stats/review_stats.html b/ietf/templates/stats/review_stats.html index 04dbf94807..2741f16518 100644 --- a/ietf/templates/stats/review_stats.html +++ b/ietf/templates/stats/review_stats.html @@ -5,6 +5,7 @@ {% block pagehead %} + {% endblock %} {% block content %} {% origin %} diff --git a/ietf/templates/submit/announce_to_authors.txt b/ietf/templates/submit/announce_to_authors.txt index 7622cb9691..e3359bb60f 100644 --- a/ietf/templates/submit/announce_to_authors.txt +++ b/ietf/templates/submit/announce_to_authors.txt @@ -1,24 +1,23 @@ -{% autoescape off %} -A new version of I-D, {{ submission.name }}-{{ submission.rev }}.txt -has been successfully submitted by {{ submission.submitter_parsed.name }} and posted to the -IETF repository. +{% autoescape off %}{% filter wordwrap:78 %}A new version of Internet-Draft {{ submission.name }}-{{ submission.rev }}.txt has been successfully submitted by {{ submission.submitter_parsed.name }} and posted to the +IETF repository.{% endfilter %} -Name: {{ submission.name }} -Revision: {{ submission.rev }} -Title: {{ submission.title }} -Document date: {{ submission.document_date|date:"Y-m-d" }} -Group: {{ group }} -Pages: {{ submission.pages }} -URL: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.txt -Status: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=submission.name %}{% if submission.xml_version == "3" %} -Html: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.html{% endif %} -Htmlized: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_html' name=submission.name %} -{% if submission.rev != "00" %}Diff: {{rfcdiff_base_url}}?url2={{ submission.name }}-{{ submission.rev }}{% endif %} +Name: {{ submission.name }} +Revision: {{ submission.rev }} +Title: {{ submission.title }} +Date: {{ submission.document_date|date:"Y-m-d" }} +Group: {{ group }} +Pages: {{ submission.pages }} +URL: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.txt +Status: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_main' name=submission.name %}{% if submission.xml_version == "3" %} +HTML: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.html{% endif %} +HTMLized: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_html' name=submission.name %} +{% if submission.rev != "00" %}Diff: {{rfcdiff_base_url}}?url2={{ submission.name }}-{{ submission.rev }}{% endif %} Abstract: -{{ submission.abstract }} - -{{ submission.note|default:"" }} + +{{ submission.abstract.rstrip }} + +{{ submission.note.rstrip|default:"" }} The IETF Secretariat {% endautoescape %} diff --git a/ietf/templates/submit/announce_to_lists.txt b/ietf/templates/submit/announce_to_lists.txt index b45c4a1eb2..d7a3739af6 100644 --- a/ietf/templates/submit/announce_to_lists.txt +++ b/ietf/templates/submit/announce_to_lists.txt @@ -1,14 +1,14 @@ -{% autoescape off %} -{% filter wordwrap:78 %}A New Internet-Draft is available from the on-line Internet-Drafts directories.{% if submission.group %} This Internet-Draft is a work item of the {{ submission.group.name }} ({{ submission.group.acronym|upper }}){% if submission.group.type.name %} {{ submission.group.type.name }}{% endif %} of the {% if submission.group.type_id == "rg" %}IRTF{% else %}IETF{% endif %}.{% endif %}{% endfilter %} +{% autoescape off %}{% filter wordwrap:78 %}Internet-Draft {{ submission.name }}-{{ submission.rev }}.txt is now available.{% if submission.group %} It is a work item of the {{ submission.group.name }} ({{ submission.group.acronym|upper }}){% if submission.group.type.name %} {{ submission.group.type.name }}{% endif %} of the {% if submission.group.type_id == "rg" %}IRTF{% else %}IETF{% endif %}.{% endif %}{% endfilter %} - Title : {{ submission.title }} - Author{{ submission.authors|pluralize:" ,s" }} : {% for author in submission.authors %}{{ author.name }}{% if not forloop.last %} - {% endif %}{% endfor %} - Filename : {{ submission.name }}-{{ submission.rev }}.txt - Pages : {{ submission.pages }} - Date : {{ submission.submission_date|date:"Y-m-d" }} + Title: {{ submission.title }} + Author{{ submission.authors|pluralize:",s" }}: {% if submission.authors|length == 1 %} {% endif %}{% for author in submission.authors %}{{ author.name }}{% if not forloop.last %} + {% endif %}{% endfor %} + Name: {{ submission.name }}-{{ submission.rev }}.txt + Pages: {{ submission.pages }} + Dates: {{ submission.submission_date|date:"Y-m-d" }} Abstract: + {{ submission.abstract.rstrip }} The IETF datatracker status page for this Internet-Draft is: @@ -16,11 +16,12 @@ The IETF datatracker status page for this Internet-Draft is: {% if submission.xml_version == "3" %} There is also an HTML version available at: {{ settings.IETF_ID_ARCHIVE_URL }}{{ submission.name }}-{{ submission.rev }}.html{% else %} -There is also an htmlized version available at: +There is also an HTMLized version available at: {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.doc.views_doc.document_html' name=submission.name rev=submission.rev %}{% endif %} {% if submission.rev != "00" %} A diff from the previous version is available at: {{settings.RFCDIFF_BASE_URL}}?url2={{ submission.name }}-{{ submission.rev }} {% endif %} -Internet-Drafts are also available by rsync at rsync.ietf.org::internet-drafts +Internet-Drafts are also available by rsync at: +rsync.ietf.org::internet-drafts {% endautoescape %} diff --git a/ietf/templates/submit/api_submission_info.html b/ietf/templates/submit/api_submission_info.html index 3153d4257c..c49b8baa4b 100644 --- a/ietf/templates/submit/api_submission_info.html +++ b/ietf/templates/submit/api_submission_info.html @@ -21,7 +21,6 @@

    Internet-Draft submission API instructions

    • Only XML-only uploads are supported, not text or combined.
    • -
    • Document replacement information cannot be supplied.
    • The server expects multipart/form-data, supported by curl but not by wget.
    • diff --git a/ietf/templates/submit/submission_status.html b/ietf/templates/submit/submission_status.html index 2d166b5df7..6f18d70946 100644 --- a/ietf/templates/submit/submission_status.html +++ b/ietf/templates/submit/submission_status.html @@ -40,8 +40,10 @@

      Submission checks

      {% if passes_checks %} Your Internet-Draft has been verified to pass the submission checks. + {% elif applied_any_checks %} + Your Internet-Draft failed at least one submission check. {% else %} - Your Internet-Draft has NOT been verified to pass the submission checks. + No submission checks were applied to your Internet-Draft. {% endif %}

      {% if submission.authors|length > 5 %} @@ -70,41 +72,39 @@

      Submission checks

      {% endif %} {% endfor %} {% for check in submission.latest_checks %} - {% if check.passed != None %} - -